diff --git a/.envrc b/.envrc new file mode 100644 index 000000000..1d953f4bd --- /dev/null +++ b/.envrc @@ -0,0 +1 @@ +use nix diff --git a/.github/ISSUE_TEMPLATE/bug_report.yaml b/.github/ISSUE_TEMPLATE/bug_report.yaml index 29df88d18..3f9eae9c9 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yaml +++ b/.github/ISSUE_TEMPLATE/bug_report.yaml @@ -1,5 +1,5 @@ name: Bug report -description: Create a report to help us improve +description: Report a problem or mistake labels: ["Unconfirmed bug"] body: - type: markdown @@ -7,16 +7,17 @@ body: value: | Please note the following: - 1. **Please update Luanti to the latest stable or dev version** before submitting bug reports. Make sure the bug is still reproducible on the latest version. - 2. This page is for reporting the bugs of **the engine itself**. For bugs in a particular game, please [search for the game in the ContentDB](https://content.luanti.org/packages/?type=game) and submit a bug report in their issue trackers. - * For example, you can submit issues about the Minetest Game [in its own repository](https://github.com/luanti-org/minetest_game/issues). - 3. Please provide as many details as possible for us to spot the problem quicker. + 1. **Update Luanti to the latest stable or dev version** before submitting a bug report. Make sure the bug is still reproducible on the latest version. + 2. This page is for reporting the bugs of **the engine itself**. For bugs in a particular game, please [search for the game on ContentDB](https://content.luanti.org/packages/?type=game) and submit a bug report to its developers. + * For example, issues about Minetest Game are submitted to [its own repository](https://github.com/luanti-org/minetest_game/issues). + 3. Please provide as many relevant details as possible. + 4. If you have used an LLM/AI to format your issue description, disclose this. Try to keep it concise. No walls of text please. + - type: textarea attributes: label: Luanti version description: | Paste the Luanti version below. - If you are on a dev version, please also indicate the git commit hash. Refer to the "About" tab of the menu or run `luanti --version` on the command line. placeholder: | Example: @@ -34,27 +35,28 @@ body: render: "true" validations: required: true + - type: input attributes: label: Operating system and version - description: It is recommended to upgrade your operating system to see if the problem persists. + description: Keeping your OS up-to-date can solve some problems on its own. placeholder: "Example: Ubuntu 22.04" validations: required: true - type: input attributes: label: CPU model - description: Usually found in OS/system settings. + description: Usually found in OS/system settings placeholder: "Example: Intel Core i5-2410M" validations: required: false - type: markdown attributes: - value: The GPU model and renderer can be omitted if the bug is not a graphical issue. + value: If the bug is server-side please skip the "GPU model" and "Active renderer" fields. - type: input attributes: label: GPU model - description: Usually found in OS/system settings. + description: Usually found in OS/system settings placeholder: "Example: NVIDIA GeForce GTX 1660" validations: required: false @@ -65,15 +67,26 @@ body: placeholder: "Example: ES 3.2 / ogles2 / X11" validations: required: false + - type: textarea attributes: label: Summary - description: Describe your problem here. + description: | + Describe your problem here. + + Make sure to include the all error messages you see and/or screenshots in case of visual bugs. + Attaching a copy of your `debug.txt` and `minetest.conf` can be helpful as well. validations: required: true - type: textarea attributes: label: Steps to reproduce - description: Explain how the problem has happened, providing a minimal test (e.g. a minimized code snippet) where possible. + description: | + Explain how the problem has happened. + + To the extent possible, the reproduction steps should describe not just what you did (e.g. "I open my world and it crashes") + but be detailed enough so that anyone with a fresh installation of Luanti could follow these steps to encounter the same problem. + In case of modding issues it is often useful to include a code snippet. + This will help us diagnose the problem quicker and more efficiently. Thank you. validations: required: true diff --git a/.github/ISSUE_TEMPLATE/feature_request.yaml b/.github/ISSUE_TEMPLATE/feature_request.yaml index 265fea67f..8510711e7 100644 --- a/.github/ISSUE_TEMPLATE/feature_request.yaml +++ b/.github/ISSUE_TEMPLATE/feature_request.yaml @@ -8,6 +8,7 @@ body: Please note the following: 1. Only submit a feature request if the feature does not exist on the latest dev version. 2. This page is for suggesting changes to **the engine itself**. To suggest changes to games, please [search for the game in the ContentDB](https://content.luanti.org/packages/?type=game) and submit a feature request in their issue trackers. + 3. If you have used an LLM/AI to format your issue description, disclose this. Try to keep it concise. No walls of text please. - type: textarea attributes: label: Problem diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index 25100c15b..75a1fd56a 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -71,8 +71,8 @@ jobs: if-no-files-found: error msvc: - name: VS 2019 ${{ matrix.config.arch }}-${{ matrix.type }} - runs-on: windows-2019 + name: VS 2022 ${{ matrix.config.arch }}-${{ matrix.type }} + runs-on: windows-2025 env: VCPKG_DEFAULT_TRIPLET: ${{matrix.config.vcpkg_triplet}} strategy: @@ -81,12 +81,12 @@ jobs: config: - { arch: x86, - generator: "-G'Visual Studio 16 2019' -A Win32", + generator: "-G'Visual Studio 17 2022' -A Win32", vcpkg_triplet: x86-windows } - { arch: x64, - generator: "-G'Visual Studio 16 2019' -A x64", + generator: "-G'Visual Studio 17 2022' -A x64", vcpkg_triplet: x64-windows } type: [portable] diff --git a/.luacheckrc b/.luacheckrc index 670c84325..ae6aa728e 100644 --- a/.luacheckrc +++ b/.luacheckrc @@ -20,6 +20,7 @@ read_globals = { "profiler", "Settings", "ValueNoise", "ValueNoiseMap", + "tracy", string = {fields = {"split", "trim"}}, table = {fields = {"copy", "copy_with_metatables", "getn", "indexof", "keyof", "insert_all"}}, diff --git a/CMakeLists.txt b/CMakeLists.txt index 6595ebc8d..00457b16b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -15,16 +15,16 @@ set(CLANG_MINIMUM_VERSION "7.0.1") # You should not need to edit these manually, use util/bump_version.sh set(VERSION_MAJOR 5) -set(VERSION_MINOR 13) +set(VERSION_MINOR 14) set(VERSION_PATCH 0) set(VERSION_EXTRA "" CACHE STRING "Stuff to append to version string") # Change to false for releases -set(DEVELOPMENT_BUILD FALSE) # freeminer - set(DEVELOPMENT_BUILD TRUE) set(VERSION_STRING "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}.${VERSION_TWEAK}") +set(DEVELOPMENT_BUILD FALSE) # freeminer + if(VERSION_EXTRA) set(VERSION_STRING "${VERSION_STRING}-${VERSION_EXTRA}") elseif(DEVELOPMENT_BUILD) diff --git a/android/app/src/main/res/values-az/strings.xml b/android/app/src/main/res/values-az/strings.xml new file mode 100644 index 000000000..460532237 --- /dev/null +++ b/android/app/src/main/res/values-az/strings.xml @@ -0,0 +1,4 @@ + + + Luanti + diff --git a/android/app/src/main/res/values-el/strings.xml b/android/app/src/main/res/values-el/strings.xml new file mode 100644 index 000000000..ea1be6c46 --- /dev/null +++ b/android/app/src/main/res/values-el/strings.xml @@ -0,0 +1,12 @@ + + + Luanti + Φόρτωση… + Γενική ειδοποίηση + Ειδοποιήσεις από το Luanti + Φόρτωση του Luanti + Λιγότερο από 1 λεπτό… + Το Luanti εκτελείται + Ολοκληρώθηκε + Δεν βρέθηκε πρόγραμμα περιήγησης ιστού + diff --git a/android/app/src/main/res/values-fil/strings.xml b/android/app/src/main/res/values-fil/strings.xml new file mode 100644 index 000000000..45dcf87e0 --- /dev/null +++ b/android/app/src/main/res/values-fil/strings.xml @@ -0,0 +1,10 @@ + + + Loading ang Luanti + Sa loob ng isang minuto… + Notification na general + Notification mula sa Luanti + Pina-pagana ang Luanti + Tapos na + Walang mahanap na web browser + diff --git a/android/app/src/main/res/values-hu/strings.xml b/android/app/src/main/res/values-hu/strings.xml index ff4aaa0ed..f6973b083 100644 --- a/android/app/src/main/res/values-hu/strings.xml +++ b/android/app/src/main/res/values-hu/strings.xml @@ -3,9 +3,10 @@ Betöltés… Általános értesítés Értesítések a Luanti-től - Luanti betöltése… + A Luanti épp betölt Kész Nem található webböngésző Freeminer Kevesebb, mint 1 perc… - \ No newline at end of file + A Luanti jelenleg fut + diff --git a/android/app/src/main/res/values-hy/strings.xml b/android/app/src/main/res/values-hy/strings.xml new file mode 100644 index 000000000..460532237 --- /dev/null +++ b/android/app/src/main/res/values-hy/strings.xml @@ -0,0 +1,4 @@ + + + Luanti + diff --git a/android/app/src/main/res/values-kmr/strings.xml b/android/app/src/main/res/values-kmr/strings.xml new file mode 100644 index 000000000..460532237 --- /dev/null +++ b/android/app/src/main/res/values-kmr/strings.xml @@ -0,0 +1,4 @@ + + + Luanti + diff --git a/android/app/src/main/res/values-sk/strings.xml b/android/app/src/main/res/values-sk/strings.xml new file mode 100644 index 000000000..d438e92aa --- /dev/null +++ b/android/app/src/main/res/values-sk/strings.xml @@ -0,0 +1,12 @@ + + + Luanti + Načítavam… + Hlavné oznámenie + Oznámenia Luanti + Načítanie Luanti + Už iba minútka… + Luanti už frčí + Hotovo + Nenašiel som žiaden prehliadač + diff --git a/android/app/src/main/res/values-tl/strings.xml b/android/app/src/main/res/values-tl/strings.xml new file mode 100644 index 000000000..60bc2a39c --- /dev/null +++ b/android/app/src/main/res/values-tl/strings.xml @@ -0,0 +1,4 @@ + + + ᜎᜓᜏᜈ᜔ᜆᜒ + diff --git a/android/app/src/main/res/values-uk/strings.xml b/android/app/src/main/res/values-uk/strings.xml index b7528cc22..d70a8c166 100644 --- a/android/app/src/main/res/values-uk/strings.xml +++ b/android/app/src/main/res/values-uk/strings.xml @@ -5,7 +5,7 @@ Завантаження… Загальні сповіщення Luanti завантажується - Менше за 1 хвилину… + Менше 1 хвилини… Готово Сповіщення від Luanti Luanti працює diff --git a/android/build.gradle b/android/build.gradle index d2a3b3b2f..57abd8088 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -1,7 +1,7 @@ // 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", 13) // Version Minor +project.ext.set("versionMinor", 14) // Version Minor project.ext.set("versionPatch", 0) // Version Patch // ^ keep in sync with cmake @@ -9,7 +9,7 @@ project.ext.set("versionBuild", 0) // Version Build // ^ fourth version number to allow releasing Android-only fixes and beta versions buildscript { - ext.ndk_version = '27.2.12479018' + ext.ndk_version = '27.3.13750724' repositories { google() mavenCentral() diff --git a/builtin/common/misc_helpers.lua b/builtin/common/misc_helpers.lua index 29aa3e5c2..87af19119 100644 --- a/builtin/common/misc_helpers.lua +++ b/builtin/common/misc_helpers.lua @@ -1,6 +1,6 @@ -------------------------------------------------------------------------------- -- Localize functions to avoid table lookups (better performance). -local string_sub, string_find = string.sub, string.find +local string_sub, string_find, string_rep = string.sub, string.find, string.rep local math = math -------------------------------------------------------------------------------- @@ -179,7 +179,7 @@ function dump(value, indent) write(newline) local function write_entry(k, v) - write(indent:rep(level)) + write(string_rep(indent, level)) write("[") write_value(k, level + 1) write("] = ") @@ -201,7 +201,7 @@ function dump(value, indent) for _, k in ipairs(keys.string) do local v = val[k] if is_valid_identifier(k) then - write(indent:rep(level)) + write(string_rep(indent, level)) write(k) write(" = ") write_value(v, level + 1) @@ -219,7 +219,7 @@ function dump(value, indent) end if #keys.number == len then -- table is a list for _, v in ipairs(tbl) do - write(indent:rep(level)) + write(string_rep(indent, level)) write_value(v, level + 1) write(",") write(newline) @@ -238,7 +238,7 @@ function dump(value, indent) end end - write(indent:rep(level - 1)) + write(string_rep(indent, level - 1)) write("}") end write_value(value, 1) @@ -658,7 +658,7 @@ function core.colorize(color, message) lines[i] = color_code .. line end - return table.concat(lines, "\n") .. core.get_color_escape_sequence("#ffffff") + return table.concat(lines, "\n") .. core.get_color_escape_sequence("#fff") end @@ -674,6 +674,7 @@ function core.strip_colors(str) return (str:gsub(ESCAPE_CHAR .. "%([bc]@[^)]+%)", "")) end + local function translate(textdomain, str, num, ...) local start_seq if textdomain == "" and num == "" then @@ -853,22 +854,22 @@ 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 +* relative_to: Optional position vector as reference point Syntax of x, y and z: -* "": return as number -* "~": return + player position on this axis -* "~": return player position on this axis +* "": use as number +* "~": use + reference point on this axis +* "~": use reference point on this axis -Returns: a vector or nil for invalid input or if player does not exist +Returns: a vector or nil for invalid input ]] 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 } + return x and y and z and vector.new(x, y, 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 } + return rx and ry and rz and vector.new(rx, ry, rz) end diff --git a/builtin/game/async.lua b/builtin/game/async.lua index fc286ef25..79d1aea9b 100644 --- a/builtin/game/async.lua +++ b/builtin/game/async.lua @@ -8,15 +8,24 @@ function core.async_event_handler(jobid, retval) core.async_jobs[jobid] = nil end +local job_metatable = {__index = {}} + +function job_metatable.__index:cancel() + local cancelled = core.cancel_async_callback(self.id) + if cancelled then + core.async_jobs[self.id] = nil + end + return cancelled +end + function core.handle_async(func, callback, ...) assert(type(func) == "function" and type(callback) == "function", "Invalid core.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 + local id = core.do_async_callback(func, args, mod_origin) + core.async_jobs[id] = callback - return true + return setmetatable({id = id}, job_metatable) end - diff --git a/builtin/game/features.lua b/builtin/game/features.lua index 4837f29bd..db70e9a66 100644 --- a/builtin/game/features.lua +++ b/builtin/game/features.lua @@ -48,6 +48,9 @@ core.features = { remove_item_match_meta = true, httpfetch_additional_methods = true, object_guids = true, + on_timer_four_args = true, + particlespawner_exclude_player = true, + generate_decorations_biomes = true, } function core.has_feature(arg) diff --git a/builtin/game/item.lua b/builtin/game/item.lua index 712fbbcf4..5139741ba 100644 --- a/builtin/game/item.lua +++ b/builtin/game/item.lua @@ -363,7 +363,7 @@ function core.item_place(itemstack, placer, pointed_thing, param2) return itemstack, nil end -function core.item_secondary_use(itemstack, placer) +function core.item_secondary_use(itemstack, user) return itemstack end @@ -401,7 +401,7 @@ function core.item_pickup(itemstack, picker, pointed_thing, ...) end end - -- Pickup item. + -- Pick up item local inv = picker and picker:get_inventory() if inv then return inv:add_item("main", itemstack) @@ -580,6 +580,26 @@ function core.node_dig(pos, node, digger) exclude_player = diggername, }, true) end + -- Particles also + if diggername ~= "" and def and def.drawtype ~= "airlike" then + -- cf. ParticleManager::addDiggingParticles() et al + local gravity = tonumber(core.settings:get("movement_gravity")) or 9.81 + core.add_particlespawner({ + amount = 16, + time = 0.001, + minpos = vector.offset(pos, -0.25, -0.25, -0.25), + maxpos = vector.offset(pos, 0.25, 0.25, 0.25), + minvel = vector.new(-1.5, 0, -1.5), + maxvel = vector.new(1.5, 3, 1.5), + minacc = vector.new(0, -gravity, 0), + maxacc = vector.new(0, -gravity, 0), + minexptime = 0, maxexptime = 1, + minsize = 0, maxsize = 0, -- random + node = node, + blend = (def and def.use_texture_alpha == "blend") and "blend" or "clip", + exclude_player = diggername, + }) + end -- Run callback if def and def.after_dig_node then @@ -650,6 +670,7 @@ core.nodedef_default = { on_drop = redef_wrapper(core, 'item_drop'), -- core.item_drop on_pickup = redef_wrapper(core, 'item_pickup'), -- core.item_pickup on_use = nil, + after_use = nil, can_dig = nil, on_punch = redef_wrapper(core, 'node_punch'), -- core.node_punch diff --git a/builtin/game/misc_s.lua b/builtin/game/misc_s.lua index 983bd7096..739add904 100644 --- a/builtin/game/misc_s.lua +++ b/builtin/game/misc_s.lua @@ -131,6 +131,7 @@ core.protocol_versions = { ["5.11.0"] = 47, ["5.12.0"] = 48, ["5.13.0"] = 49, + ["5.14.0"] = 50, } setmetatable(core.protocol_versions, {__newindex = function() diff --git a/builtin/game/register.lua b/builtin/game/register.lua index 3b19205f0..82fd53c25 100644 --- a/builtin/game/register.lua +++ b/builtin/game/register.lua @@ -584,6 +584,7 @@ core.unregister_biome = make_wrap_deregistration(core.register_biome, local make_registration = builtin_shared.make_registration local make_registration_reverse = builtin_shared.make_registration_reverse +-- keep in sync with profiler/instrumentation.lua 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() diff --git a/builtin/locale/__builtin.de.tr b/builtin/locale/__builtin.de.tr index 3665a3f54..04eafbc60 100644 --- a/builtin/locale/__builtin.de.tr +++ b/builtin/locale/__builtin.de.tr @@ -192,7 +192,7 @@ 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. +DM sent to @1: @2=DN an @1 gesendet: @2 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. @@ -207,6 +207,8 @@ 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 +You died=Sie sind gestorben +Respawn=Wiederbeleben @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). @@ -234,15 +236,10 @@ Air=Luft Ignore=Ignorieren You can't place 'ignore' nodes!=Sie können keine „ignore“-Blöcke platzieren! print [] | dump [] | save [ []] | reset=print [] | dump [] | save [ []] | reset -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). 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 -You died=Sie sind gestorben -Respawn=Wiederbeleben diff --git a/builtin/locale/__builtin.eo.tr b/builtin/locale/__builtin.eo.tr index f1fe5333b..c1285f16d 100644 --- a/builtin/locale/__builtin.eo.tr +++ b/builtin/locale/__builtin.eo.tr @@ -192,7 +192,6 @@ Send a direct message to a player=Sendu rekte privatan mesaĝon al ludanto Invalid usage, see /help msg.=Nevalida uzo, vidu /help msg. The player @1 is not online.=La ludanto @1 ne ĉeretas. DM from @1: @2=Privata mesaĝo de @1: @2 -Message sent.=Mesaĝo sendita. Get the last login time of a player or yourself=Vidi la lastan salutotempon de ludanto, aŭ vi mem @1's last login time was @2.=Lasta salutotempo de @1 estas @2. @1's last login time is unknown.=Lasta salutotempo de @1 estas nesciata. @@ -207,6 +206,8 @@ You are already dead.=Vi jam estas mortinta. @1 is already dead.=@1 estas mortinta. @1 has been killed.=@1 estas murdita. Kill player or yourself=Mortigi ludanton aŭ vin mem +You died=Vi mortis +Respawn=Renaskiĝi @1 joined the game.=@1 aliĝis la ludon. @1 left the game.=@1 foriris de la ludo. @1 left the game (timed out).=@1 foriris de la ludo (tempo-elĉerpo) @@ -234,15 +235,10 @@ Air=Aero Ignore=Malatenti You can't place 'ignore' nodes!=Vi ne povas meti «malatentajn» monderojn! print [] | dump [] | save [ []] | reset=print [] | dump [] | save [ []] | reset -Handle the profiler and profiling data=Trakti la analizilon kaj analizajn datumojn Statistics written to action log.=Analizoj skribitaj al agoprotokolo. Statistics were reset.=Analizoj forviŝitaj. -Usage: @1=Uzado: @1 -Format can be one of txt, csv, lua, json, json_pretty (structures may be subject to change).=Formo povas estas txt, csv, lua, json, aŭ json_pretty (struktuoj eble iam ŝanĝiĝos). Values below show absolute/relative times spend per server step by the instrumented function.=Valoroj subaj montras la malrelativan/relativan tempon pasigitan de la servilo je ĉiu paŝo de la funkcio. A total of @1 sample(s) were taken.=Sume @1 ekzemplero(j) konserviĝis. The output is limited to '@1'.=La eligo estas limigita al «@1». Saving of profile failed: @1=Konservado de profilo malsukcesis: @1 Profile saved to @1=Profilo konservita al @1 -You died=Vi mortis -Respawn=Renaskiĝi diff --git a/builtin/locale/__builtin.fr.tr b/builtin/locale/__builtin.fr.tr index d36574afd..eb688e447 100644 --- a/builtin/locale/__builtin.fr.tr +++ b/builtin/locale/__builtin.fr.tr @@ -192,7 +192,6 @@ Send a direct message to a player=Envoyer un message privé à un joueur. Invalid usage, see /help msg.=Usage invalide, voir /help msg. The player @1 is not online.=Le joueur @1 n'est pas en ligne. DM from @1: @2=Message privé de @1 : @2 -Message sent.=Message privé envoyé. Get the last login time of a player or yourself=Obtenir l'horodatage de la dernière connexion d'un joueur ou de vous-même. @1's last login time was @2.=@1 s'est connecté pour la dernière fois au @2. @1's last login time is unknown.=L'horodatage de la dernière connexion de @1 est inconnu. @@ -207,6 +206,8 @@ You are already dead.=Vous êtes déjà mort. @1 is already dead.=@1 est déjà mort. @1 has been killed.=@1 a été tué. Kill player or yourself=Tuer un joueur ou vous-même. +You died=Vous êtes mort +Respawn=Réapparaître @1 joined the game.=@1 a rejoint la partie. @1 left the game.=@1 a quitté la partie. @1 left the game (timed out).=@1 a quitté la partie (inactivité). @@ -234,15 +235,10 @@ Air=Air Ignore=Ignorer You can't place 'ignore' nodes!=Vous ne pouvez pas placé de nœuds 'ignorés' ! print [] | dump [] | save [ []] | reset=print [] | dump [] | save [ []] | reset -Handle the profiler and profiling data=Traiter le profileur et les données de profilage Statistics written to action log.=Les statistiques sont écrites dans les journaux d'actions. Statistics were reset.=Les statistiques ont été réinitialisées. -Usage: @1=Usage : @1 -Format can be one of txt, csv, lua, json, json_pretty (structures may be subject to change).=Le format peut être txt, csv, lua, json ou json_pretty (les structures sont sujettes au changement). Values below show absolute/relative times spend per server step by the instrumented function.=Les valeurs inférieures affichent les temps absolu et relatif dépensés par étape du serveur par la fonction utilisée. A total of @1 sample(s) were taken.=@1 échantillons ont été collectés. The output is limited to '@1'.=La sortie est limitée à '@1'. Saving of profile failed: @1=La sauvegarde du profil a échoué : @1 Profile saved to @1=Le profil a été sauvegardé dans @1 -You died=Vous êtes mort -Respawn=Réapparaître diff --git a/builtin/locale/__builtin.id.tr b/builtin/locale/__builtin.id.tr index a7eba8c1c..5ce6239f3 100644 --- a/builtin/locale/__builtin.id.tr +++ b/builtin/locale/__builtin.id.tr @@ -192,7 +192,6 @@ Send a direct message to a player=Kirim pesan langsung kepada pemain Invalid usage, see /help msg.=Penggunaan tidak sah. Lihat /help msg. The player @1 is not online.=Pemain @1 tidak daring. DM from @1: @2=Pesan langsung dari @1: @2 -Message sent.=Pesan terkirim. Get the last login time of a player or yourself=Ambil waktu masuk terakhir pemain atau diri Anda @1's last login time was @2.=Waktu masuk terakhir @1 adalah @2. @1's last login time is unknown.=Waktu masuk terakhir @1 tidak diketahui. @@ -207,6 +206,8 @@ You are already dead.=Anda telah mati. @1 is already dead.=@1 telah mati. @1 has been killed.=@1 telah dibunuh. Kill player or yourself=Bunuh pemain atau diri Anda +You died=Anda mati +Respawn=Bangkit kembali @1 joined the game.=@1 bergabung dalam permainan. @1 left the game.=@1 keluar permainan. @1 left the game (timed out).=@1 keluar permainan (kehabisan waktu). @@ -234,15 +235,10 @@ Air=Udara Ignore=Ignore You can't place 'ignore' nodes!=Anda tidak dapat menaruh nodus 'ignore'! print [] | dump [] | save [ []] | reset=print [] | dump [] | save [ []] | reset -Handle the profiler and profiling data=Menangani profiler dan data profiling Statistics written to action log.=Statistik ditulis ke log action. Statistics were reset.=Statistik diatur ulang. -Usage: @1=Penggunaan: @1 -Format can be one of txt, csv, lua, json, json_pretty (structures may be subject to change).=Format berupa salah satu dari txt, csv, lua, json, json_pretty (struktur mungkin berubah). Values below show absolute/relative times spend per server step by the instrumented function.=Nilai berikut menampilkan waktu mutlak/relatif yang dihabiskan tiap langkah server oleh fungsi instrumen. A total of @1 sample(s) were taken.=Total @1 sampel yang diambil. The output is limited to '@1'.=Keluaran dibatasi ke '@1'. Saving of profile failed: @1=Penyimpanan profil gagal: @1 Profile saved to @1=Profil disimpan ke @1 -You died=Anda mati -Respawn=Bangkit kembali diff --git a/builtin/locale/__builtin.it.tr b/builtin/locale/__builtin.it.tr index 24cf38104..54db48e60 100644 --- a/builtin/locale/__builtin.it.tr +++ b/builtin/locale/__builtin.it.tr @@ -193,7 +193,6 @@ Send a direct message to a player=Invia un messaggio privato a unə giocatore Invalid usage, see /help msg.=Uso incorretto, vedi /help msg The player @1 is not online.=Lə giocatore @1 non è connessə. 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 è ignoto. @@ -208,6 +207,8 @@ 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ǝ +You died=Sei morto +Respawn=Rinasci @1 joined the game.=@1 si è connessə. @1 left the game.=@1 si è disconnessə. @1 left the game (timed out).=@1 si è disconnessə (connessione scaduta). @@ -235,15 +236,10 @@ Air=Aria Ignore=Ignora You can't place 'ignore' nodes!=Non puoi piazzare nodi 'ignore'! print [] | dump [] | save [ []] | reset=print [] | dump [] | save [ []] | reset -Handle the profiler and profiling data=Gestisce il profiler e i dati da esso elaborati Statistics written to action log.=Statistiche scritte nel registro 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). Values below show absolute/relative times spend per server step by the instrumented function.=I valori sottostanti mostrano i tempi assoluti/relativi impiegati su ogni singolo step dalla funzione analizzata A total of @1 sample(s) were taken.=Son stati ottenuti campioni per un totale di @1. The output is limited to '@1'.=L'output è limitato a '@1'. Saving of profile failed: @1=Errore nel salvare il profilo: @1 Profile saved to @1=Profilo salvato in @1 -You died=Sei morto -Respawn=Rinasci diff --git a/builtin/locale/__builtin.ms.tr b/builtin/locale/__builtin.ms.tr index 65ac557bf..15c9dce1f 100644 --- a/builtin/locale/__builtin.ms.tr +++ b/builtin/locale/__builtin.ms.tr @@ -192,7 +192,6 @@ Send a direct message to a player=Menghantar mesej terus kepada seorang pemain Invalid usage, see /help msg.=Kegunaan tidak sah, sila lihat /help msg. The player @1 is not online.=Pemain @1 tidak berada dalam talian. DM from @1: @2=DM daripada @1: @2 -Message sent.=Mesej telah dihantar. Get the last login time of a player or yourself=Dapatkan waktu log masuk terakhir bagi seorang pemain atau diri sendiri @1's last login time was @2.=Waktu log masuk terakhir @1 ialah pada @2. @1's last login time is unknown.=Waktu log masuk terakhir @1 tidak diketahui. @@ -207,6 +206,8 @@ You are already dead.=Anda sudah pun mati. @1 is already dead.=@1 sudah pun mati. @1 has been killed.=@1 telah berjaya dibunuh. Kill player or yourself=Bunuh pemain atau diri sendiri +You died=Anda telah meninggal +Respawn=Jelma semula @1 joined the game.=@1 telah menyertai permainan. @1 left the game.=@1 telah meninggalkan permainan. @1 left the game (timed out).=@1 telah meninggalkan permainan (tamat tempoh masa). @@ -234,15 +235,10 @@ Air=Udara Ignore=Abai You can't place 'ignore' nodes!=Anda tidak boleh meletakkan nod 'abai'! print [] | dump [] | save [ []] | reset=print [] | dump [] | save [ []] | reset -Handle the profiler and profiling data=Uruskan pembukah dan data pembukahan Statistics written to action log.=Statistik telah ditulis ke log perlakuan. Statistics were reset.=Statistik telah ditetapkan semula. -Usage: @1=Kegunaan: @1 -Format can be one of txt, csv, lua, json, json_pretty (structures may be subject to change).=Format boleh jadi salah satu daripada txt, csv, lua, json, json_pretty (struktur boleh berubah kemudian). Values below show absolute/relative times spend per server step by the instrumented function.=Nilai di bawah menunjukkan masa mutlak/relatif yang digunakan oleh fungsi yang dipasangkan pada setiap langkah pelayan A total of @1 sample(s) were taken.=Sebanyak @1 sampel telah diambil secara keseluruhan. The output is limited to '@1'.=Output dihadkan kepada '@1'. Saving of profile failed: @1=Penyimpanan profil telah gagal: @1 Profile saved to @1=Profil telah disimpan ke @1 -You died=Anda telah meninggal -Respawn=Jelma semula diff --git a/builtin/locale/__builtin.pt_BR.tr b/builtin/locale/__builtin.pt_BR.tr index e48425bda..aa0041712 100644 --- a/builtin/locale/__builtin.pt_BR.tr +++ b/builtin/locale/__builtin.pt_BR.tr @@ -192,7 +192,6 @@ Send a direct message to a player=Enviar uma mensagem direta a um jogador Invalid usage, see /help msg.=Uso inválido, veja /help msg. The player @1 is not online.=O jogador @1 não está online. DM from @1: @2=DM de @1: @2 -Message sent.=Mensagem enviada. Get the last login time of a player or yourself=Pegue o último horário de login de um jogador ou de você mesmo @1's last login time was @2.=O último login de @1 foi às @2. @1's last login time is unknown.=O último login de @1 é desconhecido. @@ -207,6 +206,8 @@ You are already dead.=Você já está morto. @1 is already dead.=@1 já está morto. @1 has been killed.=@1 foi morto. Kill player or yourself=Matar jogador ou a si mesmo +You died=Você morreu +Respawn=Reviver @1 joined the game.=@1 entrou no jogo. @1 left the game.=@1 saiu do jogo. @1 left the game (timed out).=@1 saiu do jogo (tempo esgotado) @@ -234,15 +235,10 @@ Air=Ar Ignore=Ignorar You can't place 'ignore' nodes!=Você não pode colocar nós 'ignorar'! print [] | dump [] | save [ []] | reset=print [] | dump [] | save [ []] | reset -Handle the profiler and profiling data=Lidar com o criador de perfil e os dados de criação de perfil Statistics written to action log.=Estatísticas salvas no log de ações. Statistics were reset.=As estatísticas foram redefinidas. -Usage: @1=Uso: @1 -Format can be one of txt, csv, lua, json, json_pretty (structures may be subject to change).=O formato pode ser txt, csv, lua, json, json_pretty (as estruturas podem estar sujeitas a alterações). Values below show absolute/relative times spend per server step by the instrumented function.=Os valores abaixo mostram os tempos absolutos/relativos gastos por etapa do servidor pela função instrumentada. A total of @1 sample(s) were taken.=Um total de @1 amostra(s) foi coletada. The output is limited to '@1'.=A saída é limitada a '@1'. Saving of profile failed: @1=Falha ao salvar o perfil: @1 Profile saved to @1=Perfil salvo em @1 -You died=Você morreu -Respawn=Reviver diff --git a/builtin/locale/__builtin.ru.tr b/builtin/locale/__builtin.ru.tr index 863cdd638..92de16234 100644 --- a/builtin/locale/__builtin.ru.tr +++ b/builtin/locale/__builtin.ru.tr @@ -192,7 +192,6 @@ Send a direct message to a player=Отправить прямое сообщен Invalid usage, see /help msg.=Недопустимое использование, см. /help msg. The player @1 is not online.=Игрок @1 не находится в игре. DM from @1: @2=DM от @1: @2 -Message sent.=Сообщение отправлено. Get the last login time of a player or yourself=Вывести время последнего входа игрока или своё @1's last login time was @2.=Время последнего входа @1: @2. @1's last login time is unknown.=Время последнего входа @1 неизвестно. @@ -207,6 +206,8 @@ You are already dead.=Ты уже мертв. @1 is already dead.=@1 уже мертв. @1 has been killed.=@1 был убит. Kill player or yourself=Убить игрока или себя +You died=Вы умерли +Respawn=Возродиться @1 joined the game.=@1 присоединился к игре. @1 left the game.=@1 вышел из игры. @1 left the game (timed out).=@1 вышел из игры (тайм-аут). @@ -234,15 +235,10 @@ Air=Воздух Ignore=Игнорируемая встроенная нода (":ignore") You can't place 'ignore' nodes!=Вы не можете установить ноду 'ignore'! print [] | dump [] | save [ []] | reset=print [] | dump [] | save [ []] | reset -Handle the profiler and profiling data=Работа с профайлером и данными профилирования Statistics written to action log.=Статистика записывается в журнал действий. Statistics were reset.=Статистика была сброшена. -Usage: @1=Использование: @1 -Format can be one of txt, csv, lua, json, json_pretty (structures may be subject to change).=Формат может быть одним из txt, csv, lua, json, json_pretty (структуры могут быть изменены). Values below show absolute/relative times spend per server step by the instrumented function.=Приведенные ниже значения показывают абсолютное/относительное время, затрачиваемое функцией на каждый шаг сервера. A total of @1 sample(s) were taken.=Всего было взято @1 образец(ов). The output is limited to '@1'.=Вывод ограничен значением '@1'. Saving of profile failed: @1=Не удалось сохранить данные профилирования: @1 Profile saved to @1=Данные профилирования сохранены в @1 -You died=Вы умерли -Respawn=Возродиться diff --git a/builtin/locale/template.txt b/builtin/locale/template.txt index 2c41ba91b..10e17894a 100644 --- a/builtin/locale/template.txt +++ b/builtin/locale/template.txt @@ -192,7 +192,7 @@ Send a direct message to a player= Invalid usage, see /help msg.= The player @1 is not online.= DM from @1: @2= -Message sent.= +DM sent to @1: @2= Get the last login time of a player or yourself= @1's last login time was @2.= @1's last login time is unknown.= @@ -207,6 +207,8 @@ You are already dead.= @1 is already dead.= @1 has been killed.= Kill player or yourself= +You died= +Respawn= @1 joined the game.= @1 left the game.= @1 left the game (timed out).= @@ -234,11 +236,9 @@ Air= Ignore= You can't place 'ignore' nodes!= print [] | dump [] | save [ []] | reset= -Handle the profiler and profiling data= +Handle the profiler and profiling data. Can output to chat (print), action log (dump), or file in world (save). Format can be one of txt, csv, lua, json, json_pretty (structures may be subject to change). Filter is a lua pattern used to limit output to matching mod names.= 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).= 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'.= diff --git a/builtin/mainmenu/tab_local.lua b/builtin/mainmenu/tab_local.lua index 0d0b20ff1..2953c3a50 100644 --- a/builtin/mainmenu/tab_local.lua +++ b/builtin/mainmenu/tab_local.lua @@ -165,11 +165,15 @@ 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 index = core.get_textlist_index("sp_worlds") or filterlist.get_current_index(menudata.worldlist, + tonumber(core.settings:get("mainmenu_last_selected_world"))) or 0 + local list = menudata.worldlist:get_list() - local world = list and index and list[index] + -- When changing tabs to a world list with fewer entries, the last index is selected (visually). + -- However, the formspec fields lag behind, thus 'index > #list' can be a valid choice. + local world = list and list[math.min(index, #list)] local game + if world then game = pkgmgr.find_by_gameid(world.gameid) else @@ -183,27 +187,33 @@ local function get_formspec(tabview, name, tabdata) local y = 0.2 local yo = 0.5625 - 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 + if world then + 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 end retval = retval .. "container[5.25,4.875]" .. - "button[0,0;3.225,0.8;world_delete;".. fgettext("Delete") .. "]" .. - "button[3.325,0;3.225,0.8;world_configure;".. fgettext("Select Mods") .. "]" .. - "button[6.65,0;3.225,0.8;world_create;".. fgettext("New") .. "]" .. + "button[6.65,0;3.225,0.8;world_create;".. fgettext("New") .. "]" + if world then + retval = retval .. + "button[0,0;3.225,0.8;world_delete;".. fgettext("Delete") .. "]" .. + "button[3.325,0;3.225,0.8;world_configure;".. fgettext("Select Mods") .. "]" + end + retval = retval .. "container_end[]" .. "container[0.375,0.375]" .. creative .. @@ -251,7 +261,7 @@ local function get_formspec(tabview, name, tabdata) end retval = retval .. "container_end[]" - else + elseif world then retval = retval .. "button[10.1875,5.925;4.9375,0.8;play;" .. fgettext("Play Game") .. "]" end @@ -348,8 +358,6 @@ local function main_button_handler(this, fields, name, tabdata) gamedata.selected_world = menudata.worldlist:get_raw_index(selected) if selected == nil or gamedata.selected_world == 0 then - gamedata.errormessage = - fgettext_ne("No world created or selected!") return true end diff --git a/builtin/profiler/init.lua b/builtin/profiler/init.lua index ede9e0e7e..74a56b567 100644 --- a/builtin/profiler/init.lua +++ b/builtin/profiler/init.lua @@ -4,18 +4,10 @@ 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, get_bool_default) +local instrumentation = assert(loadfile(profiler_path .. "instrumentation.lua"))(profiler, sampler) local reporter = dofile(profiler_path .. "reporter.lua") profiler.instrument = instrumentation.instrument @@ -24,14 +16,17 @@ profiler.instrument = instrumentation.instrument -- Is called later, after `core.register_chatcommand` was set up. -- function profiler.init_chatcommand() - local instrument_profiler = get_bool_default("instrument.profiler", false) + local instrument_profiler = core.settings:get_bool("instrument.profiler", false) if instrument_profiler then instrumentation.init_chatcommand() end local param_usage = S("print [] | dump [] | save [ []] | reset") core.register_chatcommand("profiler", { - description = S("Handle the profiler and profiling data"), + description = S("Handle the profiler and profiling data. " + .. "Can output to chat (print), action log (dump), or file in world (save). " + .. "Format can be one of txt, csv, lua, json, json_pretty (structures may be subject to change). " + .. "Filter is a lua pattern used to limit output to matching mod names."), params = param_usage, privs = { server=true }, func = function(name, param) @@ -39,10 +34,10 @@ function profiler.init_chatcommand() local args = arg0 and string.split(arg0, " ") if command == "dump" then - core.log("action", reporter.print(sampler.profile, arg0)) + core.log("action", reporter.print(sampler.profile, arg0, false)) return true, S("Statistics written to action log.") elseif command == "print" then - return true, reporter.print(sampler.profile, arg0) + return true, reporter.print(sampler.profile, arg0, true) elseif command == "save" then return reporter.save(sampler.profile, args[1] or "txt", args[2]) elseif command == "reset" then @@ -50,9 +45,7 @@ function profiler.init_chatcommand() return true, S("Statistics were reset.") end - 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).") + return false end }) diff --git a/builtin/profiler/instrumentation.lua b/builtin/profiler/instrumentation.lua index 613d3d692..2b34295da 100644 --- a/builtin/profiler/instrumentation.lua +++ b/builtin/profiler/instrumentation.lua @@ -2,35 +2,57 @@ -- Copyright (C) 2016 T4im -- SPDX-License-Identifier: LGPL-2.1-or-later -local format, pairs, type = string.format, pairs, type +local format, ipairs, type = string.format, ipairs, type local core, get_current_modname = core, core.get_current_modname -local profiler, sampler, get_bool_default = ... +local profiler, sampler = ... -local instrument_builtin = get_bool_default("instrument.builtin", false) +local instrument_builtin = core.settings:get_bool("instrument.builtin", false) +local do_measure = core.settings:get_bool("profiler.measure", true) +local do_tracy = core.settings:get_bool("profiler.tracy", false) +if do_tracy and not core.global_exists("tracy") then + core.log("warning", "profiler.tracy is enabled, but `tracy` was not found. Did you build with Tracy?") + do_tracy = false +end + +-- keep in sync with game/register.lua local register_functions = { - register_globalstep = 0, - register_playerevent = 0, - register_on_placenode = 0, - register_on_dignode = 0, - register_on_punchnode = 0, - register_on_generated = 0, - register_on_newplayer = 0, - register_on_dieplayer = 0, - register_on_respawnplayer = 0, - register_on_prejoinplayer = 0, - register_on_joinplayer = 0, - register_on_leaveplayer = 0, - register_on_cheat = 0, - register_on_chat_message = 0, - register_on_player_receive_fields = 0, - register_on_craft = 0, - register_craft_predict = 0, - register_on_protection_violation = 0, - register_on_item_eat = 0, - register_on_punchplayer = 0, - register_on_player_hpchange = 0, - register_on_mapblocks_changed = 0, + "register_on_player_hpchange", + + "register_on_chat_message", + "register_on_chatcommand", + "register_globalstep", + "register_playerevent", + "register_on_mods_loaded", + "register_on_shutdown", + "register_on_punchnode", + "register_on_placenode", + "register_on_dignode", + "register_on_generated", + "register_on_newplayer", + "register_on_dieplayer", + "register_on_respawnplayer", + "register_on_prejoinplayer", + "register_on_joinplayer", + "register_on_leaveplayer", + "register_on_player_receive_fields", + "register_on_cheat", + "register_on_craft", + "register_craft_predict", + "register_on_protection_violation", + "register_on_item_eat", + "register_on_item_pickup", + "register_on_punchplayer", + "register_on_priv_grant", + "register_on_priv_revoke", + "register_on_authplayer", + "register_can_bypass_userlimit", + "register_on_modchannel_message", + "register_on_player_inventory_action", + "register_allow_player_inventory_action", + "register_on_rightclickplayer", + "register_on_liquid_transformed", + "register_on_mapblocks_changed", } local function regex_escape(s) @@ -38,27 +60,13 @@ local function regex_escape(s) end --- --- Create an unique instrument name. --- Generate a missing label with a running index number. +-- Format `filepath#linenumber` of function, with a relative filepath. -- -local counts = {} +-- FIXME: these paths are not canonicalized (i.e. can be .../luanti/bin/..) local worldmods_path = regex_escape(core.get_worldpath()) local user_path = regex_escape(core.get_user_path()) local builtin_path = regex_escape(core.get_builtin_path()) -local function generate_name(def) - local class, label, func_name = def.class, def.label, def.func_name - if label then - if class or func_name then - return format("%s '%s' %s", class or "", label, func_name or ""):trim() - end - return format("%s", label):trim() - elseif label == false then - return format("%s", class or func_name):trim() - end - - local index_id = def.mod .. (class or func_name) - local index = counts[index_id] or 1 - counts[index_id] = index + 1 +local function generate_source_location(def) local info = debug.getinfo(def.func) local modpath = regex_escape(core.get_modpath(def.mod) or "") local source = info.source @@ -68,7 +76,32 @@ local function generate_name(def) source = source:gsub(worldmods_path, "") source = source:gsub(builtin_path, "builtin" .. DIR_DELIM) source = source:gsub(user_path, "") - return format("%s[%d] %s#%s", class or func_name, index, source, info.linedefined) + return string.format("%s#%s", source, info.linedefined) +end + +--- +-- Create an unique instrument name. +-- Generate a missing label with a running index number. +-- Returns name, name_has_source. +-- +local generate_name_counts = {} +local function generate_name(def) + local class, label, func_name = def.class, def.label, def.func_name + local source = generate_source_location(def) + + if label then + if class or func_name then + return format("%s '%s' %s", class or "", label, func_name or ""):trim(), false + end + return format("%s", label):trim(), false + elseif label == false then + return format("%s", class or func_name):trim(), false + else + local index_id = def.mod .. (class or func_name) + local index = generate_name_counts[index_id] or 1 + generate_name_counts[index_id] = index + 1 + return format("%s[%d] %s", class or func_name, index, source), true + end end --- @@ -80,6 +113,10 @@ local function measure(modname, instrument_name, start, ...) log(modname, instrument_name, time() - start) return ... end +local function tracy_ZoneEnd_and_return(...) + tracy.ZoneEnd() + return ... +end --- Automatically instrument a function to measure and log to the sampler. -- def = { -- mod = "", @@ -94,22 +131,38 @@ local function instrument(def) end def.mod = def.mod or get_current_modname() or "??" local modname = def.mod - local instrument_name = generate_name(def) + local instrument_name, name_has_source = generate_name(def) + local instrument_name_with_source = name_has_source and instrument_name or + string.format("%s %s", instrument_name, generate_source_location(def)) local func = def.func if not instrument_builtin and modname == "*builtin*" then return func end - return function(...) - -- This tail-call allows passing all return values of `func` - -- 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 func(...) - local start = time() - return measure(modname, instrument_name, start, func(...)) + -- These tail-calls allows passing all return values of `func_o` + -- 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 + -- `tracy_ZoneEnd_and_return` / `measure` will be executed after `func_o(...)` + + if do_tracy then + local func_o = func + func = function(...) + tracy.ZoneBeginN(instrument_name_with_source) + return tracy_ZoneEnd_and_return(func_o(...)) + end end + + if do_measure then + local func_o = func + func = function(...) + local start = time() + return measure(modname, instrument_name, start, func_o(...)) + end + end + + return func end local function can_be_called(func) @@ -135,7 +188,6 @@ local function instrument_register(func, func_name) local register_name = func_name:gsub("^register_", "", 1) return function(callback, ...) assert_can_be_called(callback, func_name, 2) - register_functions[func_name] = register_functions[func_name] + 1 return func(instrument { func = callback, func_name = register_name @@ -144,7 +196,7 @@ local function instrument_register(func, func_name) end local function init_chatcommand() - if get_bool_default("instrument.chatcommand", true) then + if core.settings:get_bool("instrument.chatcommand", true) then local orig_register_chatcommand = core.register_chatcommand core.register_chatcommand = function(cmd, def) def.func = instrument { @@ -160,7 +212,7 @@ end -- Start instrumenting selected functions -- local function init() - if get_bool_default("instrument.entity", true) then + if core.settings:get_bool("instrument.entity", true) then -- Explicitly declare entity api-methods. -- Simple iteration would ignore lookup via __index. local entity_instrumentation = { @@ -168,26 +220,30 @@ local function init() "on_deactivate", "on_step", "on_punch", + "on_death", "on_rightclick", + "on_attach_child", + "on_detach_child", + "on_detach", "get_staticdata", } -- Wrap register_entity() to instrument them on registration. local orig_register_entity = core.register_entity - core.register_entity = function(name, prototype) + core.register_entity = function(name, def) local modname = get_current_modname() - for _, func_name in pairs(entity_instrumentation) do - prototype[func_name] = instrument { - func = prototype[func_name], + for _, func_name in ipairs(entity_instrumentation) do + def[func_name] = instrument { + func = def[func_name], mod = modname, func_name = func_name, - label = prototype.label, + label = name, } end - orig_register_entity(name,prototype) + orig_register_entity(name, def) end end - if get_bool_default("instrument.abm", true) then + if core.settings:get_bool("instrument.abm", true) then -- Wrap register_abm() to automatically instrument abms. local orig_register_abm = core.register_abm core.register_abm = function(spec) @@ -200,7 +256,7 @@ local function init() end end - if get_bool_default("instrument.lbm", true) then + if core.settings:get_bool("instrument.lbm", true) then -- Wrap register_lbm() to automatically instrument lbms. local orig_register_lbm = core.register_lbm core.register_lbm = function(spec) @@ -214,13 +270,13 @@ local function init() end end - if get_bool_default("instrument.global_callback", true) then - for func_name, _ in pairs(register_functions) do + if core.settings:get_bool("instrument.global_callback", true) then + for _, func_name in ipairs(register_functions) do core[func_name] = instrument_register(core[func_name], func_name) end end - if get_bool_default("instrument.profiler", false) then + if core.settings:get_bool("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 { @@ -233,7 +289,6 @@ local function init() end return { - register_functions = register_functions, instrument = instrument, init = init, init_chatcommand = init_chatcommand, diff --git a/builtin/profiler/reporter.lua b/builtin/profiler/reporter.lua index b2bad7560..935a2ea83 100644 --- a/builtin/profiler/reporter.lua +++ b/builtin/profiler/reporter.lua @@ -168,7 +168,7 @@ local CsvFormatter = Formatter:new { end } -local function format_statistics(profile, format, filter) +local function format_statistics(profile, format, filter, enable_translation) local formatter if format == "csv" then formatter = CsvFormatter:new { @@ -180,16 +180,20 @@ local function format_statistics(profile, format, filter) } end formatter:format(filter) - return formatter:flush() + local out = formatter:flush() + if not enable_translation then + out = core.strip_escapes(out) + end + return out end --- -- Format the profile ready for display and -- @return string to be printed to the console -- -function reporter.print(profile, filter) +function reporter.print(profile, filter, enable_translation) if filter == "" then filter = nil end - return format_statistics(profile, "txt", filter) + return format_statistics(profile, "txt", filter, enable_translation) end --- @@ -215,7 +219,7 @@ local function serialize_profile(profile, format, filter) end end -- Fall back to textual formats. - return format_statistics(profile, format, filter) + return format_statistics(profile, format, filter, false) end local worldpath = core.get_worldpath() diff --git a/builtin/settingtypes.txt b/builtin/settingtypes.txt index 892f89adf..4f5e1d580 100644 --- a/builtin/settingtypes.txt +++ b/builtin/settingtypes.txt @@ -751,13 +751,12 @@ undersampling (Undersampling) int 1 1 8 # 3D support. # Currently supported: -# - none: no 3d output. -# - anaglyph: cyan/magenta color 3d. -# - interlaced: odd/even line based polarization screen support. -# - topbottom: split screen top/bottom. -# - sidebyside: split screen side by side. -# - crossview: Cross-eyed 3d -3d_mode (3D mode) enum none none,anaglyph,interlaced,topbottom,sidebyside,crossview +# - none: no 3D output +# - anaglyph: cyan/magenta color 3D +# - topbottom: split screen top/bottom +# - sidebyside: split screen side-by-side +# - crossview: cross-eyed 3D +3d_mode (3D mode) enum none none,anaglyph,topbottom,sidebyside,crossview # Strength of 3D mode parallax. 3d_paralax_strength (3D mode parallax strength) float 0.025 -0.087 0.087 @@ -2240,6 +2239,14 @@ enable_mod_channels (Mod channels) [server] bool false # Useful for mod developers and server operators. profiler.load (Load the game profiler) bool false +# Disable if you only want to instrument with Tracy. +profiler.measure (Measure time samples) bool true + +# Capture Tracy zones with the profiler's instrumentation. +# You need to build with Tracy to use this, see doc/developing/profiling.md +# for details. +profiler.tracy (Capture Tracy zones) bool false + # The default format in which profiles are being saved, # when calling `/profiler save [format]` without format. profiler.default_report_format (Default report format) enum txt txt,csv,lua,json,json_pretty diff --git a/doc/client_lua_api.md b/doc/client_lua_api.md index ff4af5ccc..820e37b59 100644 --- a/doc/client_lua_api.md +++ b/doc/client_lua_api.md @@ -1,4 +1,4 @@ -Luanti Lua Client Modding API Reference 5.13.0 +Luanti Lua Client Modding API Reference 5.14.0 ============================================== **WARNING**: if you're looking for the `minetest` namespace (e.g. `minetest.something`), diff --git a/doc/compiling/windows.md b/doc/compiling/windows.md index f61a8d677..7fa5ab617 100644 --- a/doc/compiling/windows.md +++ b/doc/compiling/windows.md @@ -14,10 +14,10 @@ It is highly recommended to use vcpkg as package manager. After you successfully built vcpkg you can easily install the required libraries: ```powershell -vcpkg install zlib zstd curl[winssl] openal-soft libvorbis libogg libjpeg-turbo sqlite3 freetype luajit gmp jsoncpp gettext[tools] sdl2 --triplet x64-windows +vcpkg install zlib zstd curl[ssl] openal-soft libvorbis libogg libjpeg-turbo sqlite3 freetype luajit gmp jsoncpp gettext[tools] sdl2 --triplet x64-windows ``` -- `curl` is optional, but required to read the serverlist, `curl[winssl]` is required to use the content store. +- `curl` is optional, but required to read the serverlist, `curl[ssl]` 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 diff --git a/doc/developing/README.md b/doc/developing/README.md index a2d19cd9a..f52f021a3 100644 --- a/doc/developing/README.md +++ b/doc/developing/README.md @@ -15,7 +15,7 @@ Notable pages: ## In this folder -- [docker.md](docker.md): Developing minetestserver with Docker +- [docker.md](docker.md): Developing luantiserver with Docker - [android.md](android.md): Android tips & tricks - [os-compatibility.md](os-compatibility.md): OS/library compatibility policy - [profiling.md](profiling.md): Profiling instructions diff --git a/doc/developing/android.md b/doc/developing/android.md index 285351cf0..2fac7fbfa 100644 --- a/doc/developing/android.md +++ b/doc/developing/android.md @@ -26,7 +26,7 @@ adb install -r -d ./app-arm64-v8a-release-unsigned.apk In case debug.txt isn't enough (e.g. when debugging a crash), you can get debug output using logcat: -`adb logcat -s 'Minetest:*' '*:F'` +`adb logcat -s Luanti '*:F'` Note that you can do this even *after* the app has crashed, since Android keeps an internal buffer. diff --git a/doc/developing/profiling.md b/doc/developing/profiling.md index 2c334183b..503d01deb 100644 --- a/doc/developing/profiling.md +++ b/doc/developing/profiling.md @@ -1,5 +1,16 @@ # Profiling +## Using builtin's mod profiler + +Builtin has a profiler for callbacks registered by mods. It measures how much +time each callback took per server-step (on average / min / max). + +To start, enable the `profiler.load` setting. +(There are more settings, see `profiler.*` and `instrument.*`.) + +Use the `profiler` chatcommand to look at the results. + + ## Profiling Luanti on Linux with perf We will be using a tool called "perf", which you can get by installing `perf` or `linux-perf` or `linux-tools-common`. @@ -22,12 +33,12 @@ It will give you flamegraphs, per-thread, per-function views and much more. Attach perf to your running server, press *^C* to stop: ```bash -perf record -z --call-graph dwarf -F 400 -p "$(pidof minetestserver)" +perf record -z --call-graph dwarf -F 400 -p "$(pidof luantiserver)" ``` Collect a copy of the required libraries/executables: ```bash -perf buildid-list | grep -Eo '/[^ ]+(minetestserver|\.so)[^ ]*$' | \ +perf buildid-list | grep -Eo '/[^ ]+(luantiserver|\.so)[^ ]*$' | \ tar -cvahf debug.tgz --files-from=- --ignore-failed-read ``` @@ -65,13 +76,16 @@ Build Luanti with `-DDBUILD_WITH_TRACY=1`, this will fetch Tracy for building the Tracy client. And use `FETCH_TRACY_GIT_TAG` to get a version matching your Tracy server, e.g. `-DFETCH_TRACY_GIT_TAG=v0.11.0` if it's `0.11.0`. -To actually use Tracy, you also have to enable it with Tracy's build options: -``` --DTRACY_ENABLE=1 -DTRACY_ONLY_LOCALHOST=1 -``` +To actually use Tracy, you also have to enable it with Tracy's build options +(`-DTRACY_ENABLE=1`). See Tracy's documentation for more build options. +TL;DR: +``` +-DDBUILD_WITH_TRACY=1 -DFETCH_TRACY_GIT_TAG= -DTRACY_ENABLE=1 -DTRACY_ONLY_LOCALHOST=1 +``` + ### Using in C++ Start the Tracy server and Luanti. You should see Luanti in the menu. @@ -87,3 +101,6 @@ See Tracy's official documentation for more information. Note: The whole Tracy Lua API is accessible to all mods. And we don't check if it is or becomes insecure. Run untrusted mods at your own risk. + +Enable `profiler.load` and `profiler.tracy` to automatically instrument mod +callback functions. diff --git a/doc/lua_api.md b/doc/lua_api.md index e78ee8116..7ce6a543e 100644 --- a/doc/lua_api.md +++ b/doc/lua_api.md @@ -177,8 +177,6 @@ The file is a key-value store of modpack details. * `textdomain`: Textdomain used to translate title and description. Defaults to modpack name. See [Translating content meta](#translating-content-meta). -Note: to support 0.4.x, please also create an empty modpack.txt file. - Mod directory structure ----------------------- @@ -3614,6 +3612,8 @@ Some types may inherit styles from parent types. * animated_image * noclip - boolean, set to true to allow the element to exceed formspec bounds. * box + * **Note**: In order for any of the styling options to take effect, + the `color` field in the box element must be left unspecified. * 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: @@ -3920,10 +3920,8 @@ The following functions provide escape sequences: * `color` is a ColorString * The escape sequence sets the text color to `color` * `core.colorize(color, message)`: - * Equivalent to: - `core.get_color_escape_sequence(color) .. - message .. - core.get_color_escape_sequence("#ffffff")` + * Equivalent to including the right color escape sequence in the front, + and resetting to `#fff` after the text (plus newline handling). * `core.get_background_escape_sequence(color)` * `color` is a ColorString * The escape sequence sets the background of the whole text element to @@ -3934,6 +3932,10 @@ The following functions provide escape sequences: * Removes background colors added by `get_background_escape_sequence`. * `core.strip_colors(str)` * Removes all color escape sequences. +* `core.strip_escapes(str)` + * Removes all escape sequences, including client-side translations and + any unknown or future escape sequences that Luanti might define. + * You can use this to clean text before logging or handing to an external system. Coordinate System @@ -5841,6 +5843,12 @@ Utilities httpfetch_additional_methods = true, -- objects have get_guid method (5.13.0) object_guids = true, + -- The NodeTimer `on_timer` callback is passed additional `node` and `timeout` args (5.14.0) + on_timer_four_args = true, + -- `ParticleSpawner` definition supports `exclude_player` field (5.14.0) + particlespawner_exclude_player = true, + -- core.generate_decorations() supports `use_mapgen_biomes` parameter (5.14.0) + generate_decorations_biomes = true, } ``` @@ -5848,6 +5856,7 @@ Utilities * checks for *server-side* feature availability * `arg`: string or table in format `{foo=true, bar=true}` * `missing_features`: `{foo=true, bar=true}` + * `core.get_player_information(player_name)`: Table containing information about a player. Example return value: @@ -6148,34 +6157,34 @@ Call these functions only at load time! * Called every server step, usually interval of 0.1s. * `dtime` is the time since last execution in seconds. * `core.register_on_mods_loaded(function())` - * Called after mods have finished loading and before the media is cached or the - aliases handled. + * Called after all mods have finished loading and before the media is cached + or aliases are handled. * `core.register_on_shutdown(function())` - * Called before server shutdown - * Players that were kicked by the shutdown procedure are still fully accessible - in `core.get_connected_players()`. + * Called during server shutdown before players are kicked. * **Warning**: If the server terminates abnormally (i.e. crashes), the - registered callbacks **will likely not be run**. Data should be saved at + registered callbacks will likely **not run**. Data should be saved at semi-frequent intervals as well as on server shutdown. * `core.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` + * Called after a node has been placed. + * If `true` is returned no item is taken from `itemstack` * `placer` may be any valid ObjectRef or nil. * **Not recommended**; use `on_construct` or `after_place_node` in node definition whenever possible. * `core.register_on_dignode(function(pos, oldnode, digger))` - * Called when a node has been dug. + * Called after a node has been dug. * **Not recommended**; Use `on_destruct` or `after_dig_node` in node definition whenever possible. * `core.register_on_punchnode(function(pos, node, puncher, pointed_thing))` * Called when a node is punched * `core.register_on_generated(function(minp, maxp, blockseed))` - * Called after generating a piece of world between `minp` and `maxp`. + * Called after a piece of world between `minp` and `maxp` has been + generated and written into the map. * **Avoid using this** whenever possible. As with other callbacks this blocks - the main thread and introduces noticeable latency. - Consider [Mapgen environment](#mapgen-environment) for an alternative. -* `core.register_on_newplayer(function(ObjectRef))` + the main thread and is prone to introduce noticeable latency/lag. + Consider [Mapgen environment](#mapgen-environment) as an alternative. +* `core.register_on_newplayer(function(player))` * Called when a new player enters the world for the first time + * `player`: ObjectRef * `core.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. @@ -6732,10 +6741,14 @@ Environment access * 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. -* `core.generate_decorations(vm[, pos1, pos2])` +* `core.generate_decorations(vm[, pos1, pos2, [use_mapgen_biomes]])` * 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. + * `use_mapgen_biomes` (optional boolean). For use in on_generated callbacks only. + If set to true, decorations are placed in respect to the biome map of the current chunk. + `pos1` and `pos2` must match the positions of the current chunk, or an error will be raised. + default: `false` * `core.clear_objects([options])` * Clear all objects in the environment * Takes an optional table as an argument with the field `mode`. @@ -7116,8 +7129,12 @@ Defaults for the `on_place` and `on_drop` item definition functions * `core.item_pickup(itemstack, picker, pointed_thing, time_from_last_punch, ...)` * Runs callbacks registered by `core.register_on_item_pickup` and adds the item to the picker's `"main"` inventory list. - * Parameters are the same as in `on_pickup`. - * Returns the leftover itemstack. + * Parameters and return value are the same as `on_pickup`. + * **Note**: is not called when wielded item overrides `on_pickup` +* `core.item_secondary_use(itemstack, user)` + * Global secondary use callback. Does nothing. + * Parameters and return value are the same as `on_secondary_use`. + * **Note**: is not called when wielded item overrides `on_secondary_use` * `core.item_drop(itemstack, dropper, pos)` * Converts `itemstack` to an in-world Lua entity. * `itemstack` (`ItemStack`) is modified (cleared) on success. @@ -7140,7 +7157,7 @@ Defaults for the `on_punch` and `on_dig` node definition callbacks * Calls functions registered by `core.register_on_punchnode()` * `core.node_dig(pos, node, digger)` * Checks if node can be dug, puts item into inventory, removes node - * Calls functions registered by `core.registered_on_dignodes()` + * Calls functions registered by `core.register_on_dignode()` Sounds ------ @@ -7205,12 +7222,12 @@ This allows you easy interoperability for delegating work to jobs. * 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` + * Returns an `AsyncJob` async job. * `core.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 `core.handle_async()`. - ### List of APIs available in an async environment Classes: @@ -7368,11 +7385,13 @@ Server * `filedata`: the data of the file to be sent [*] * `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) + * `ephemeral`: if true the server will create a copy of the file and + forget about it once delivered (optional boolean, default false) + * `client_cache`: hint whether the client should save the media in its cache + (optional boolean, default `!ephemeral`, added in 5.14.0) * Exactly one of the parameters marked [*] must be specified. * `callback`: function with arguments `name`, which is a player name - * Pushes the specified media file to client(s). (details below) + * Pushes the specified media file to client(s) as detailed 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 @@ -7381,19 +7400,17 @@ Server * 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. + old clients (<5.3.0) 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. + renamed after calling this function. This is allowed otherwise. + * Adding media files with the same name twice is not possible. + An exception to this is the use of `to_player` to send the same, + already existent file to multiple chosen players (`ephemeral`=false only). * You can also call this at startup time. In that case `callback` MUST be `nil` and you cannot use `ephemeral` or `to_player`, as these logically do not make sense. * 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. + this can make transfer of bigger files painless (if set up). IPC --- @@ -7464,6 +7481,7 @@ Particles --------- * `core.add_particle(particle definition)` + * Spawn a single particle * Deprecated: `core.add_particle(pos, velocity, acceleration, expirationtime, size, collisiondetection, texture, playername)` @@ -8045,6 +8063,15 @@ use the provided load and write functions for this. * `from_file(filename)`: Experimental. Like `from_string()`, but reads the data from a file. +`AsyncJob` +---------- +An `AsyncJob` is a reference to a job to be run in an async environment. + +### Methods +* `cancel()`: try to cancel the job + * Returns whether the job was cancelled. + * A job can only be cancelled if it has not started. + `InvRef` -------- @@ -9542,7 +9569,8 @@ Player properties need to be saved manually. stepheight = 0, -- If positive number, object will climb upwards when it moves -- horizontally against a `walkable` node, if the height difference - -- is within `stepheight`. + -- is within `stepheight` and if the object current max Y in the world + -- is greater or equal than the node min Y. automatic_face_movement_dir = 0.0, -- Automatically set yaw to movement direction, offset in degrees. @@ -9576,6 +9604,16 @@ Player properties need to be saved manually. -- `false` will cause the background to be set automatically based on user settings. -- Default: false + nametag_fontsize = 1, + -- Sets the font size of the nametag in pixels. + -- `false` will cause the size to be set automatically based on user settings. + -- Default: false + + nametag_scale_z = false, + -- If enabled, the nametag will be scaled by Z in screen space, meaning it becomes + -- smaller the further away the object is. + -- Default: false + infotext = "", -- Same as infotext for nodes. Empty by default @@ -9988,15 +10026,15 @@ Used by `core.register_node`, `core.register_craftitem`, and -- When item is eaten with `core.do_item_eat` punch_use = , - -- When item is used with the 'punch/mine' key pointing at a node or entity + -- When item is used with the 'punch/dig' key pointing at a node or entity punch_use_air = , - -- When item is used with the 'punch/mine' key pointing at nothing (air) + -- When item is used with the 'punch/dig' key pointing at nothing (air) }, on_place = function(itemstack, placer, pointed_thing), - -- When the 'place' key was pressed with the item in hand - -- and a node was pointed at. + -- Called when the 'place' key was pressed with the item in hand + -- and pointing at a node. -- Shall place item and return the leftover itemstack -- or nil to not modify the inventory. -- The placer may be any ObjectRef or nil. @@ -10007,7 +10045,7 @@ Used by `core.register_node`, `core.register_craftitem`, and -- 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 + -- default: core.item_secondary_use on_drop = function(itemstack, dropper, pos), -- Shall drop item and return the leftover itemstack. @@ -10025,28 +10063,26 @@ Used by `core.register_node`, `core.register_craftitem`, and -- luaentity) as `type="object"` `pointed_thing`. -- * `time_from_last_punch, ...` (optional): Other parameters from -- `luaentity:on_punch`. - -- default: `core.item_pickup` + -- default: core.item_pickup on_use = function(itemstack, user, pointed_thing), - -- default: nil - -- When user pressed the 'punch/mine' key with the item in hand. + -- Called when user presses the 'punch/dig' 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. + -- Note that defining this callback will prevent normal punching/digging + -- behavior on the client, as the interaction is instead "forwarded" to the + -- server. + -- default: nil 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 + -- Called after a tool is used to dig a node and will replace the default + -- tool wear-out handling. + -- Shall return the leftover itemstack or nil to not + -- modify the dropped item. -- The user may be any ObjectRef or nil. + -- default: nil _custom_field = whatever, -- Add your own custom fields. By convention, all custom field names @@ -10470,8 +10506,6 @@ Used by `core.register_node`. -- 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: core.node_dig @@ -10479,10 +10513,12 @@ Used by `core.register_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), + on_timer = function(pos, elapsed, node, timeout), -- default: nil -- called by NodeTimers, see core.get_node_timer and NodeTimerRef. - -- elapsed is the total time passed since the timer was started. + -- `elapsed`: total time passed since the timer was started. + -- `node`: node table (since 5.14) + -- `timeout`: timeout value of the just ended timer (since 5.14) -- return true to run the timer for another cycle with the same timeout -- value. @@ -11472,6 +11508,9 @@ Used by `core.add_particle`. playername = "singleplayer", -- Optional, if specified spawns particle only on the player's client + -- Note that `exclude_player` is not supported here. You can use a single-use + -- particlespawner if needed. + animation = {Tile Animation definition}, -- Optional, specifies how to animate the particle texture @@ -11535,6 +11574,9 @@ will be ignored. -- If time is 0 spawner has infinite lifespan and spawns the `amount` on -- a per-second basis. + size = 1, + -- Size of the particle. + collisiondetection = false, -- If true collide with `walkable` nodes and, depending on the -- `object_collision` field, objects too. @@ -11561,7 +11603,12 @@ will be ignored. -- following section. playername = "singleplayer", - -- Optional, if specified spawns particles only on the player's client + -- Optional, if specified spawns particles only for this player + -- Can't be used together with `exclude_player`. + + exclude_player = "singleplayer", + -- Optional, if specified spawns particles not for this player + -- Added in v5.14.0. Can't be used together with `playername`. animation = {Tile Animation definition}, -- Optional, specifies how to animate the particles' texture diff --git a/doc/menu_lua_api.md b/doc/menu_lua_api.md index 56b51f3b9..6b31637b4 100644 --- a/doc/menu_lua_api.md +++ b/doc/menu_lua_api.md @@ -1,4 +1,4 @@ -Luanti Lua Mainmenu API Reference 5.13.0 +Luanti Lua Mainmenu API Reference 5.14.0 ======================================== Introduction diff --git a/freeminer.conf.example b/freeminer.conf.example index 02b3e41e0..e48631677 100644 --- a/freeminer.conf.example +++ b/freeminer.conf.example @@ -588,13 +588,12 @@ # 3D support. # Currently supported: -# - none: no 3d output. -# - anaglyph: cyan/magenta color 3d. -# - interlaced: odd/even line based polarization screen support. -# - topbottom: split screen top/bottom. -# - sidebyside: split screen side by side. -# - crossview: Cross-eyed 3d -# type: enum values: none, anaglyph, interlaced, topbottom, sidebyside, crossview +# - none: no 3D output +# - anaglyph: cyan/magenta color 3D +# - topbottom: split screen top/bottom +# - sidebyside: split screen side-by-side +# - crossview: cross-eyed 3D +# type: enum values: none, anaglyph, topbottom, sidebyside, crossview # 3d_mode = none # Strength of 3D mode parallax. @@ -3027,6 +3026,16 @@ # type: bool # profiler.load = false +# Disable if you only want to instrument with Tracy. +# type: bool +# profiler.measure = true + +# Capture Tracy zones with the profiler's instrumentation. +# You need to build with Tracy to use this, see doc/developing/profiling.md +# for details. +# type: bool +# profiler.tracy = false + # The default format in which profiles are being saved, # when calling `/profiler save [format]` without format. # type: enum values: txt, csv, lua, json, json_pretty diff --git a/games/devtest/mods/callbacks/nodes.lua b/games/devtest/mods/callbacks/nodes.lua index 67f4be455..490fc7e94 100644 --- a/games/devtest/mods/callbacks/nodes.lua +++ b/games/devtest/mods/callbacks/nodes.lua @@ -43,8 +43,9 @@ core.register_node("callbacks:callback_node", { print_to_everything("callbacks:callback_node:after_dig_node("..core.pos_to_string(pos)..")") end, - on_timer = function(pos, elapsed) - print_to_everything("callbacks:callback_node:on_timer(): elapsed="..dump(elapsed)) + on_timer = function(pos, elapsed, node, timeout) + print_to_everything("callbacks:callback_node:on_timer(): elapsed=".. + elapsed .. " node=" .. dump(node) .. " timeout=" .. timeout) return true end, }) diff --git a/games/devtest/mods/testentities/visuals.lua b/games/devtest/mods/testentities/visuals.lua index 26b538e7f..fe611edd2 100644 --- a/games/devtest/mods/testentities/visuals.lua +++ b/games/devtest/mods/testentities/visuals.lua @@ -85,6 +85,28 @@ core.register_entity("testentities:sam", { }, on_activate = function(self) self.object:set_animation({x = 0, y = 219}, 30, 0, true) + self._timer = 0 + self._grow_head = true + self:_animate_head() + end, + _head_anim_duration = 2, + _animate_head = function(self) + local s = self._grow_head and 2 or 1 + self.object:set_bone_override("Head", { + scale = { + vec = vector.new(s, s, s), + absolute = true, + interpolation = self._head_anim_duration, + }, + }) + end, + on_step = function(self, dtime) + self._timer = self._timer + dtime + if self._timer >= self._head_anim_duration then + self._timer = 0 + self._grow_head = not self._grow_head + self:_animate_head() + end end, }) diff --git a/games/devtest/mods/unittests/async_env.lua b/games/devtest/mods/unittests/async_env.lua index b00deb3b6..d17cef1ed 100644 --- a/games/devtest/mods/unittests/async_env.lua +++ b/games/devtest/mods/unittests/async_env.lua @@ -207,3 +207,32 @@ local function test_vector_preserve(cb) end, {vec}) end unittests.register("test_async_vector", test_vector_preserve, {async=true}) + +local function test_async_job_replacement(cb) + core.ipc_set("unittests:end_blocking", nil) + local capacity = core.get_async_threading_capacity() + for _ = 1, capacity do + core.handle_async(function() + core.ipc_poll("unittests:end_blocking", 1000) + end, function() end) + end + local job = core.handle_async(function() + end, function() + return cb("Canceled async job ran") + end) + if not job:cancel() then + return cb("AsyncJob:cancel sanity check failed") + end + core.ipc_set("unittests:end_blocking", true) + + -- Try to cancel a job that is already run. + job = core.handle_async(function(x) + return x + end, function(ret) + if job:cancel() then + return cb("AsyncJob:cancel canceled a completed job") + end + cb() + end, 1) +end +unittests.register("test_async_job_replacement", test_async_job_replacement, {async=true}) diff --git a/games/devtest/mods/unittests/misc.lua b/games/devtest/mods/unittests/misc.lua index 28cc2c1eb..362f35a05 100644 --- a/games/devtest/mods/unittests/misc.lua +++ b/games/devtest/mods/unittests/misc.lua @@ -52,6 +52,7 @@ local function test_dynamic_media(cb, player) local ok = core.dynamic_add_media({ filepath = path, to_player = player:get_player_name(), + client_cache = false, }, function(name) if not call_ok then return cb("impossible condition") diff --git a/irr/src/CGUIEditBox.h b/irr/include/CGUIEditBox.h similarity index 86% rename from irr/src/CGUIEditBox.h rename to irr/include/CGUIEditBox.h index 39e21ddec..fdc7d0632 100644 --- a/irr/src/CGUIEditBox.h +++ b/irr/include/CGUIEditBox.h @@ -10,6 +10,9 @@ namespace gui { + +class IGUIScrollBar; + class CGUIEditBox : public IGUIEditBox { public: @@ -133,7 +136,10 @@ public: void updateAbsolutePosition() override; //! Returns whether the element takes input from the IME - bool acceptsIME() override; + bool acceptsIME() override { return isEnabled() && IsWritable; }; + + //! set true if this EditBox is writable + void setWritable(bool writable) { IsWritable = writable; } protected: //! Breaks the single text line. @@ -154,10 +160,23 @@ protected: void sendGuiEvent(EGUI_EVENT_TYPE type); //! set text markers void setTextMarkers(s32 begin, s32 end); - //! delete current selection or next char - bool keyDelete(); + //! update the vertical scrollBar (visibilty & position) + void updateVScrollBar(); bool processKey(const SEvent &event); + //! KEY_LEFT / KEY_RIGHT inputs + void processKeyLR(const SEvent::SKeyInput &input, s32 &new_mark_begin, + s32 &new_mark_end); + + bool onKeyUp(const SEvent &event, s32 &mark_begin, s32 &mark_end); + bool onKeyDown(const SEvent &event, s32 &mark_begin, s32 &mark_end); + void onKeyControlC(const SEvent &event); + bool onKeyControlX(const SEvent &event, s32 &mark_begin, s32 &mark_end); + bool onKeyControlV(const SEvent &event, s32 &mark_begin, s32 &mark_end); + bool onKeyBack(); + //! delete current selection or next char + bool onKeyDelete(); + bool processMouse(const SEvent &event); s32 getCursorPos(s32 x, s32 y); @@ -169,6 +188,7 @@ protected: s32 MarkBegin; s32 MarkEnd; + video::SColor OverrideBgColor = 0; video::SColor OverrideColor; gui::IGUIFont *OverrideFont, *LastBreakFont; IOSOperator *Operator; @@ -179,8 +199,15 @@ protected: s32 CursorPos; s32 HScrollPos, VScrollPos; // scroll position in characters u32 Max; + u32 VScrollBarWidth = 0; + IGUIScrollBar *VScrollBar = nullptr; + + bool WordWrap = false, + MultiLine = false, + AutoScroll = true, + PasswordBox = false, + IsWritable = true; - bool WordWrap, MultiLine, AutoScroll, PasswordBox; wchar_t PasswordChar; EGUI_ALIGNMENT HAlign, VAlign; diff --git a/irr/include/IFileSystem.h b/irr/include/IFileSystem.h index 2c7854ad7..344fd301b 100644 --- a/irr/include/IFileSystem.h +++ b/irr/include/IFileSystem.h @@ -7,10 +7,6 @@ #include "IReferenceCounted.h" #include "IFileArchive.h" -namespace video -{ -class IVideoDriver; -} // end namespace video namespace io { diff --git a/irr/include/IGPUProgrammingServices.h b/irr/include/IGPUProgrammingServices.h index 5c64d602d..6940cb0f0 100644 --- a/irr/include/IGPUProgrammingServices.h +++ b/irr/include/IGPUProgrammingServices.h @@ -8,15 +8,9 @@ #include "EPrimitiveTypes.h" #include "path.h" -namespace io -{ -class IReadFile; -} // end namespace io - namespace video { -class IVideoDriver; class IShaderConstantSetCallBack; //! Interface making it possible to create and use programs running on the GPU. diff --git a/irr/include/IGUIEnvironment.h b/irr/include/IGUIEnvironment.h index b7f384803..d4e6b1b75 100644 --- a/irr/include/IGUIEnvironment.h +++ b/irr/include/IGUIEnvironment.h @@ -16,8 +16,6 @@ class IEventReceiver; namespace io { -class IReadFile; -class IWriteFile; class IFileSystem; } // end namespace io namespace video @@ -44,7 +42,6 @@ class IGUITabControl; class IGUITab; class IGUIComboBox; class IGUIButton; -class IGUIWindow; //! GUI Environment. Used as factory and manager of all other GUI elements. /** \par This element can create the following events of type EGUI_EVENT_TYPE (which are passed on to focused sub-elements): diff --git a/irr/include/IGUIScrollBar.h b/irr/include/IGUIScrollBar.h index 89a75f619..abc09f44f 100644 --- a/irr/include/IGUIScrollBar.h +++ b/irr/include/IGUIScrollBar.h @@ -51,6 +51,17 @@ public: //! sets the current position of the scrollbar virtual void setPos(s32 pos) = 0; + + //! Smooth scroll: target position + virtual s32 getTargetPos() const { return getPos(); } + + //! Smooth scroll: move to position + virtual void setPosInterpolated(s32 pos) { setPos(pos); } + + //! For automatic thumb scaling + /** Sets the full height (e.g. content to scroll), in pixels. + Set to 0 to disable (default). */ + virtual void setPageSize(s32 size) = 0; }; } // end namespace gui diff --git a/irr/include/IMeshCache.h b/irr/include/IMeshCache.h index 8fd0aaec9..6b8fd6fe0 100644 --- a/irr/include/IMeshCache.h +++ b/irr/include/IMeshCache.h @@ -11,8 +11,6 @@ namespace scene { class IMesh; class IAnimatedMesh; -class IAnimatedMeshSceneNode; -class IMeshLoader; //! The mesh cache stores already loaded meshes and provides an interface to them. /** You can access it using ISceneManager::getMeshCache(). All existing diff --git a/irr/include/ISceneManager.h b/irr/include/ISceneManager.h index 17c88b01f..c4fff3c6a 100644 --- a/irr/include/ISceneManager.h +++ b/irr/include/ISceneManager.h @@ -11,28 +11,16 @@ #include "SColor.h" #include "ESceneNodeTypes.h" -struct SKeyMap; struct SEvent; namespace io { class IReadFile; -class IWriteFile; -class IFileSystem; } // end namespace io -namespace gui -{ -class IGUIFont; -class IGUIEnvironment; -} // end namespace gui - namespace video { class IVideoDriver; -class SMaterial; -class IImage; -class ITexture; } // end namespace video namespace scene @@ -89,14 +77,12 @@ class ICameraSceneNode; class IDummyTransformationSceneNode; class IMesh; class SkinnedMesh; -class IMeshBuffer; class IMeshCache; class ISceneCollisionManager; class IMeshLoader; class IMeshManipulator; class IMeshSceneNode; class ISceneNode; -class ISceneNodeFactory; //! The Scene Manager manages scene nodes, mesh resources, cameras and all the other stuff. /** All Scene nodes can be created only here. diff --git a/irr/include/ITexture.h b/irr/include/ITexture.h index 21ea319c0..8c31dc7e9 100644 --- a/irr/include/ITexture.h +++ b/irr/include/ITexture.h @@ -66,6 +66,11 @@ enum E_TEXTURE_CREATION_FLAG not recommended to enable this flag. */ ETCF_NO_ALPHA_CHANNEL = 0x00000020, + /** Creates Render Target Textures with mipmap levels. + See also: `ETCF_CREATE_MIP_MAPS` for other textures. + This is disabled by default. */ + ETCF_CREATE_RTT_MIP_MAPS = 0x00000040, + //! Allow the driver to keep a copy of the texture in memory /** Enabling this makes calls to ITexture::lock a lot faster, but costs main memory. This is disabled by default. diff --git a/irr/include/IrrlichtDevice.h b/irr/include/IrrlichtDevice.h index 222dc6759..046ac99ab 100644 --- a/irr/include/IrrlichtDevice.h +++ b/irr/include/IrrlichtDevice.h @@ -40,7 +40,6 @@ namespace video { class IContextManager; class IImage; -class ITexture; class IVideoDriver; extern "C" bool isDriverSupported(E_DRIVER_TYPE driver); } // end namespace video diff --git a/irr/include/SColor.h b/irr/include/SColor.h index f45d7404b..48af09c71 100644 --- a/irr/include/SColor.h +++ b/irr/include/SColor.h @@ -119,6 +119,11 @@ const c8 *const ColorFormatNames[] = { static_assert(sizeof(ColorFormatNames) / sizeof(ColorFormatNames[0]) == ECF_UNKNOWN + 2, "name table size mismatch"); +inline const c8 *ColorFormatName(ECOLOR_FORMAT format) +{ + return ColorFormatNames[format < ECF_UNKNOWN ? format : ECF_UNKNOWN]; +} + //! Creates a 16 bit A1R5G5B5 color inline u16 RGBA16(u32 r, u32 g, u32 b, u32 a = 0xFF) { diff --git a/irr/include/SVertexManipulator.h b/irr/include/SVertexManipulator.h index 908b540f3..484645f56 100644 --- a/irr/include/SVertexManipulator.h +++ b/irr/include/SVertexManipulator.h @@ -9,9 +9,6 @@ namespace scene { -class IMesh; -class IMeshBuffer; -struct SMesh; //! Interface for vertex manipulators. /** You should derive your manipulator from this class if it shall be called for every vertex, getting as parameter just the vertex. diff --git a/irr/include/irrTypes.h b/irr/include/irrTypes.h index af5aaec5f..1ad6efc53 100644 --- a/irr/include/irrTypes.h +++ b/irr/include/irrTypes.h @@ -43,14 +43,8 @@ typedef float f32; /** This is a typedef for double, it ensures portability of the engine. */ typedef double f64; -//! Defines for snprintf_irr because snprintf method does not match the ISO C -//! standard on Windows platforms. -//! We want int snprintf_irr(char *str, size_t size, const char *format, ...); -#if defined(_MSC_VER) -#define snprintf_irr sprintf_s -#else +//! Note: cannot assume that positional arguments are supported (not on Windows) #define snprintf_irr snprintf -#endif // _MSC_VER //! Type name for character type used by the file system (legacy). typedef char fschar_t; diff --git a/irr/src/CAnimatedMeshSceneNode.cpp b/irr/src/CAnimatedMeshSceneNode.cpp index 7808f1fee..a32706a44 100644 --- a/irr/src/CAnimatedMeshSceneNode.cpp +++ b/irr/src/CAnimatedMeshSceneNode.cpp @@ -171,7 +171,8 @@ void CAnimatedMeshSceneNode::OnAnimate(u32 timeMs) } // set CurrentFrameNr - buildFrameNr(timeMs - LastTimeMs); + const u32 dtimeMs = timeMs - LastTimeMs; + buildFrameNr(dtimeMs); LastTimeMs = timeMs; // This needs to be done on animate, which is called recursively *before* @@ -183,7 +184,7 @@ void CAnimatedMeshSceneNode::OnAnimate(u32 timeMs) copyOldTransforms(); if (OnAnimateCallback) - OnAnimateCallback(timeMs / 1000.0f); + OnAnimateCallback(dtimeMs / 1000.0f); IAnimatedMeshSceneNode::OnAnimate(timeMs); diff --git a/irr/src/CAnimatedMeshSceneNode.h b/irr/src/CAnimatedMeshSceneNode.h index 98dc4f42a..f7fa31960 100644 --- a/irr/src/CAnimatedMeshSceneNode.h +++ b/irr/src/CAnimatedMeshSceneNode.h @@ -14,7 +14,6 @@ namespace scene { -class IDummyTransformationSceneNode; class CAnimatedMeshSceneNode : public IAnimatedMeshSceneNode { diff --git a/irr/src/CFileSystem.h b/irr/src/CFileSystem.h index adcc47853..9a60f6d38 100644 --- a/irr/src/CFileSystem.h +++ b/irr/src/CFileSystem.h @@ -10,7 +10,6 @@ namespace io { -class CZipReader; /*! FileSystem which uses normal files and one zipfile diff --git a/irr/src/CGUIEditBox.cpp b/irr/src/CGUIEditBox.cpp index 34ae5a9c8..5639a36a6 100644 --- a/irr/src/CGUIEditBox.cpp +++ b/irr/src/CGUIEditBox.cpp @@ -7,10 +7,12 @@ #include "IGUISkin.h" #include "IGUIEnvironment.h" #include "IGUIFont.h" +#include "IGUIScrollBar.h" #include "IVideoDriver.h" #include "rect.h" #include "os.h" #include "Keycodes.h" +#include // std::iswspace, std::iswpunct /* todo: @@ -33,7 +35,6 @@ CGUIEditBox::CGUIEditBox(const wchar_t *text, bool border, Border(border), Background(true), OverrideColorEnabled(false), MarkBegin(0), MarkEnd(0), OverrideColor(video::SColor(101, 255, 255, 255)), OverrideFont(0), LastBreakFont(0), Operator(0), BlinkStartTime(0), CursorBlinkTime(350), CursorChar(L"_"), CursorPos(0), HScrollPos(0), VScrollPos(0), Max(0), - WordWrap(false), MultiLine(false), AutoScroll(true), PasswordBox(false), PasswordChar(L'*'), HAlign(EGUIA_UPPERLEFT), VAlign(EGUIA_CENTER), CurrentTextRect(0, 0, 1, 1), FrameRect(rectangle) { @@ -58,6 +59,9 @@ CGUIEditBox::CGUIEditBox(const wchar_t *text, bool border, //! destructor CGUIEditBox::~CGUIEditBox() { + if (VScrollBar) + VScrollBar->drop(); + if (OverrideFont) OverrideFont->drop(); @@ -265,86 +269,13 @@ bool CGUIEditBox::processKey(const SEvent &event) newMarkEnd = Text.size(); break; case KEY_KEY_C: - // copy to clipboard - if (!PasswordBox && Operator && MarkBegin != MarkEnd) { - const s32 realmbgn = MarkBegin < MarkEnd ? MarkBegin : MarkEnd; - const s32 realmend = MarkBegin < MarkEnd ? MarkEnd : MarkBegin; - - core::stringc s; - wStringToUTF8(s, Text.subString(realmbgn, realmend - realmbgn)); - Operator->copyToClipboard(s.c_str()); - } + onKeyControlC(event); break; case KEY_KEY_X: - // cut to the clipboard - if (!PasswordBox && Operator && MarkBegin != MarkEnd) { - const s32 realmbgn = MarkBegin < MarkEnd ? MarkBegin : MarkEnd; - const s32 realmend = MarkBegin < MarkEnd ? MarkEnd : MarkBegin; - - // copy - core::stringc sc; - wStringToUTF8(sc, Text.subString(realmbgn, realmend - realmbgn)); - Operator->copyToClipboard(sc.c_str()); - - if (isEnabled()) { - // delete - core::stringw s; - s = Text.subString(0, realmbgn); - s.append(Text.subString(realmend, Text.size() - realmend)); - Text = s; - - CursorPos = realmbgn; - newMarkBegin = 0; - newMarkEnd = 0; - textChanged = true; - } - } + textChanged = onKeyControlX(event, newMarkBegin, newMarkEnd); break; case KEY_KEY_V: - if (!isEnabled()) - break; - - // paste from the clipboard - if (Operator) { - const s32 realmbgn = MarkBegin < MarkEnd ? MarkBegin : MarkEnd; - const s32 realmend = MarkBegin < MarkEnd ? MarkEnd : MarkBegin; - - // add the string - const c8 *p = Operator->getTextFromClipboard(); - if (p) { - core::stringw widep; - core::utf8ToWString(widep, p); - - if (MarkBegin == MarkEnd) { - // insert text - core::stringw s = Text.subString(0, CursorPos); - s.append(widep); - s.append(Text.subString(CursorPos, Text.size() - CursorPos)); - - if (!Max || s.size() <= Max) { // thx to Fish FH for fix - Text = s; - s = widep; - CursorPos += s.size(); - } - } else { - // replace text - - core::stringw s = Text.subString(0, realmbgn); - s.append(widep); - s.append(Text.subString(realmend, Text.size() - realmend)); - - if (!Max || s.size() <= Max) { // thx to Fish FH for fix - Text = s; - s = widep; - CursorPos = realmbgn + s.size(); - } - } - } - - newMarkBegin = 0; - newMarkEnd = 0; - textChanged = true; - } + textChanged = onKeyControlV(event, newMarkBegin, newMarkEnd); break; case KEY_HOME: // move/highlight to start of text @@ -370,12 +301,15 @@ bool CGUIEditBox::processKey(const SEvent &event) newMarkEnd = 0; } break; + case KEY_LEFT: + case KEY_RIGHT: + processKeyLR(event.KeyInput, newMarkBegin, newMarkEnd); + BlinkStartTime = os::Timer::getTime(); + break; default: return false; } - } - // Some special keys - but only handle them if KeyInput.Char is null as on some systems (X11) they might have same key-code as ansi-keys otherwise - else if (event.KeyInput.Char == 0) { + } else { switch (event.KeyInput.Key) { case KEY_END: { s32 p = Text.size(); @@ -417,113 +351,6 @@ bool CGUIEditBox::processKey(const SEvent &event) CursorPos = p; BlinkStartTime = os::Timer::getTime(); } break; - case KEY_LEFT: - - if (event.KeyInput.Shift) { - if (CursorPos > 0) { - if (MarkBegin == MarkEnd) - newMarkBegin = CursorPos; - - newMarkEnd = CursorPos - 1; - } - } else { - newMarkBegin = 0; - newMarkEnd = 0; - } - - if (CursorPos > 0) - CursorPos--; - BlinkStartTime = os::Timer::getTime(); - break; - - case KEY_RIGHT: - if (event.KeyInput.Shift) { - if (Text.size() > (u32)CursorPos) { - if (MarkBegin == MarkEnd) - newMarkBegin = CursorPos; - - newMarkEnd = CursorPos + 1; - } - } else { - newMarkBegin = 0; - newMarkEnd = 0; - } - - if (Text.size() > (u32)CursorPos) - CursorPos++; - BlinkStartTime = os::Timer::getTime(); - break; - case KEY_UP: - if (MultiLine || (WordWrap && BrokenText.size() > 1)) { - s32 lineNo = getLineFromPos(CursorPos); - s32 mb = (MarkBegin == MarkEnd) ? CursorPos : (MarkBegin > MarkEnd ? MarkBegin : MarkEnd); - if (lineNo > 0) { - s32 cp = CursorPos - BrokenTextPositions[lineNo]; - if ((s32)BrokenText[lineNo - 1].size() < cp) - CursorPos = BrokenTextPositions[lineNo - 1] + core::max_((u32)1, BrokenText[lineNo - 1].size()) - 1; - else - CursorPos = BrokenTextPositions[lineNo - 1] + cp; - } - - if (event.KeyInput.Shift) { - newMarkBegin = mb; - newMarkEnd = CursorPos; - } else { - newMarkBegin = 0; - newMarkEnd = 0; - } - - } else { - return false; - } - break; - case KEY_DOWN: - if (MultiLine || (WordWrap && BrokenText.size() > 1)) { - s32 lineNo = getLineFromPos(CursorPos); - s32 mb = (MarkBegin == MarkEnd) ? CursorPos : (MarkBegin < MarkEnd ? MarkBegin : MarkEnd); - if (lineNo < (s32)BrokenText.size() - 1) { - s32 cp = CursorPos - BrokenTextPositions[lineNo]; - if ((s32)BrokenText[lineNo + 1].size() < cp) - CursorPos = BrokenTextPositions[lineNo + 1] + core::max_((u32)1, BrokenText[lineNo + 1].size()) - 1; - else - CursorPos = BrokenTextPositions[lineNo + 1] + cp; - } - - if (event.KeyInput.Shift) { - newMarkBegin = mb; - newMarkEnd = CursorPos; - } else { - newMarkBegin = 0; - newMarkEnd = 0; - } - - } else { - return false; - } - break; - case KEY_INSERT: - if (!isEnabled()) - break; - - OverwriteMode = !OverwriteMode; - break; - case KEY_DELETE: - if (!isEnabled()) - break; - - if (keyDelete()) { - BlinkStartTime = os::Timer::getTime(); - newMarkBegin = 0; - newMarkEnd = 0; - textChanged = true; - } - break; - default: - return false; - } - } else { - // default keyboard handling - switch (event.KeyInput.Key) { case KEY_RETURN: if (MultiLine) { inputChar(L'\n'); @@ -532,64 +359,43 @@ bool CGUIEditBox::processKey(const SEvent &event) sendGuiEvent(EGET_EDITBOX_ENTER); } return true; - - case KEY_BACK: - if (!isEnabled()) + case KEY_LEFT: + case KEY_RIGHT: + processKeyLR(event.KeyInput, newMarkBegin, newMarkEnd); + BlinkStartTime = os::Timer::getTime(); + break; + case KEY_UP: + if (!onKeyUp(event, newMarkBegin, newMarkEnd)) { + return false; + } + break; + case KEY_DOWN: + if (!onKeyDown(event, newMarkBegin, newMarkEnd)) { + return false; + } + break; + case KEY_INSERT: + if (!isEnabled() || !IsWritable) break; - if (Text.size()) { - core::stringw s; - - if (MarkBegin != MarkEnd) { - // delete marked text - const s32 realmbgn = MarkBegin < MarkEnd ? MarkBegin : MarkEnd; - const s32 realmend = MarkBegin < MarkEnd ? MarkEnd : MarkBegin; - - s = Text.subString(0, realmbgn); - s.append(Text.subString(realmend, Text.size() - realmend)); - Text = s; - - CursorPos = realmbgn; - } else { - // delete text behind cursor - if (CursorPos > 0) - s = Text.subString(0, CursorPos - 1); - else - s = L""; - s.append(Text.subString(CursorPos, Text.size() - CursorPos)); - Text = s; - --CursorPos; - } - - if (CursorPos < 0) - CursorPos = 0; + OverwriteMode = !OverwriteMode; + break; + case KEY_BACK: + textChanged = onKeyBack(); + if (textChanged) { BlinkStartTime = os::Timer::getTime(); newMarkBegin = 0; newMarkEnd = 0; - textChanged = true; } break; - case KEY_DELETE: - - // At least on X11 we get a char with 127 when the delete key is pressed. - // We get no char when the delete key on numkeys is pressed with numlock off (handled in the other case calling keyDelete as Char is then 0). - // We get a keykode != 127 when delete key on numlock is pressed with numlock on. - if (event.KeyInput.Char == 127) { - if (!isEnabled()) - break; - - if (keyDelete()) { - BlinkStartTime = os::Timer::getTime(); - newMarkBegin = 0; - newMarkEnd = 0; - textChanged = true; - } - break; - } else { - inputChar(event.KeyInput.Char); - return true; + textChanged = onKeyDelete(); + if (textChanged) { + BlinkStartTime = os::Timer::getTime(); + newMarkBegin = 0; + newMarkEnd = 0; } + break; case KEY_ESCAPE: case KEY_TAB: @@ -642,30 +448,77 @@ bool CGUIEditBox::processKey(const SEvent &event) return true; } -bool CGUIEditBox::keyDelete() +void CGUIEditBox::processKeyLR(const SEvent::SKeyInput &input, s32 &new_mark_begin, + s32 &new_mark_end) { - if (Text.size() != 0) { - core::stringw s; + const s8 dir = input.Key == KEY_RIGHT ? 1 : -1; - if (MarkBegin != MarkEnd) { - // delete marked text - const s32 realmbgn = MarkBegin < MarkEnd ? MarkBegin : MarkEnd; - const s32 realmend = MarkBegin < MarkEnd ? MarkEnd : MarkBegin; + s32 new_pos = CursorPos; + if (input.Control) { + // Advance to next/previous word + wchar_t prev_c = L'\0'; + for (s32 i = new_pos; i >= 0 && i <= (s32)Text.size(); i += dir) { + // This only handles Latin characters. + const wchar_t c = Text[i]; - s = Text.subString(0, realmbgn); - s.append(Text.subString(realmend, Text.size() - realmend)); - Text = s; + new_pos = i; + if (std::abs(i - CursorPos) > 2) { + // End of word + if (!std::iswspace(prev_c) && std::iswspace(c)) + break; + // End of a sentence. + if (std::iswpunct(prev_c) && !std::iswpunct(c)) + break; + } + prev_c = c; + } + } else { + // Advance by +1/-1 character + new_pos += dir; + } - CursorPos = realmbgn; - } else { - // delete text before cursor - s = Text.subString(0, CursorPos); - s.append(Text.subString(CursorPos + 1, Text.size() - CursorPos - 1)); - Text = s; + if (!input.Shift) { + // Reset selection + new_mark_begin = 0; + new_mark_end = 0; + } + + if (new_pos >= 0 && new_pos <= (s32)Text.size()) { + // Update cursor (and selection) + if (input.Shift) { + if (MarkBegin == MarkEnd) + new_mark_begin = CursorPos; + + new_mark_end = new_pos; } - if (CursorPos > (s32)Text.size()) - CursorPos = (s32)Text.size(); + CursorPos = new_pos; + } +} + +bool CGUIEditBox::onKeyUp(const SEvent &event, s32 &mark_begin, s32 &mark_end) +{ + if (MultiLine || (WordWrap && BrokenText.size() > 1)) { + s32 lineNo = getLineFromPos(CursorPos); + s32 mb = (MarkBegin == MarkEnd) ? CursorPos : + (MarkBegin > MarkEnd ? MarkBegin : MarkEnd); + if (lineNo > 0) { + s32 cp = CursorPos - BrokenTextPositions[lineNo]; + if ((s32)BrokenText[lineNo - 1].size() < cp) { + CursorPos = BrokenTextPositions[lineNo - 1] + + core::max_((u32)1, BrokenText[lineNo - 1].size()) - 1; + } + else + CursorPos = BrokenTextPositions[lineNo - 1] + cp; + } + + if (event.KeyInput.Shift) { + mark_begin = mb; + mark_end = CursorPos; + } else { + mark_begin = 0; + mark_end = 0; + } return true; } @@ -673,6 +526,192 @@ bool CGUIEditBox::keyDelete() return false; } +bool CGUIEditBox::onKeyDown(const SEvent &event, s32 &mark_begin, s32 &mark_end) +{ + if (MultiLine || (WordWrap && BrokenText.size() > 1)) { + s32 lineNo = getLineFromPos(CursorPos); + s32 mb = (MarkBegin == MarkEnd) ? CursorPos : + (MarkBegin < MarkEnd ? MarkBegin : MarkEnd); + if (lineNo < (s32)BrokenText.size() - 1) { + s32 cp = CursorPos - BrokenTextPositions[lineNo]; + if ((s32)BrokenText[lineNo + 1].size() < cp) { + CursorPos = BrokenTextPositions[lineNo + 1] + + core::max_((u32)1, BrokenText[lineNo + 1].size()) - 1; + } + else + CursorPos = BrokenTextPositions[lineNo + 1] + cp; + } + + if (event.KeyInput.Shift) { + mark_begin = mb; + mark_end = CursorPos; + } else { + mark_begin = 0; + mark_end = 0; + } + + return true; + } + + return false; +} + +void CGUIEditBox::onKeyControlC(const SEvent &event) +{ + // copy to clipboard + if (PasswordBox || !Operator || MarkBegin == MarkEnd) + return; + + const s32 realmbgn = MarkBegin < MarkEnd ? MarkBegin : MarkEnd; + const s32 realmend = MarkBegin < MarkEnd ? MarkEnd : MarkBegin; + + core::stringc s; + wStringToUTF8(s, Text.subString(realmbgn, realmend - realmbgn)); + Operator->copyToClipboard(s.c_str()); +} + +bool CGUIEditBox::onKeyControlX(const SEvent &event, s32 &mark_begin, s32 &mark_end) +{ + // First copy to clipboard + onKeyControlC(event); + + if (!IsWritable) + return false; + + if (PasswordBox || !Operator || MarkBegin == MarkEnd) + return false; + + const s32 realmbgn = MarkBegin < MarkEnd ? MarkBegin : MarkEnd; + const s32 realmend = MarkBegin < MarkEnd ? MarkEnd : MarkBegin; + + // Now remove from box if enabled + if (isEnabled()) { + // delete + core::stringw s; + s = Text.subString(0, realmbgn); + s.append(Text.subString(realmend, Text.size() - realmend)); + Text = s; + + CursorPos = realmbgn; + mark_begin = 0; + mark_end = 0; + return true; + } + + return false; +} + +bool CGUIEditBox::onKeyControlV(const SEvent &event, s32 &mark_begin, s32 &mark_end) +{ + if (!isEnabled() || !IsWritable) + return false; + + // paste from the clipboard + if (!Operator) + return false; + + const s32 realmbgn = MarkBegin < MarkEnd ? MarkBegin : MarkEnd; + const s32 realmend = MarkBegin < MarkEnd ? MarkEnd : MarkBegin; + + // add new character + if (const c8 *p = Operator->getTextFromClipboard()) { + core::stringw inserted_text; + core::utf8ToWString(inserted_text, p); + if (MarkBegin == MarkEnd) { + // insert text + core::stringw s = Text.subString(0, CursorPos); + s.append(inserted_text); + s.append(Text.subString( + CursorPos, Text.size() - CursorPos)); + + if (!Max || s.size() <= Max) { + Text = s; + CursorPos += inserted_text.size(); + } + } else { + // replace text + + core::stringw s = Text.subString(0, realmbgn); + s.append(inserted_text); + s.append(Text.subString(realmend, Text.size() - realmend)); + + if (!Max || s.size() <= Max) { + Text = s; + CursorPos = realmbgn + inserted_text.size(); + } + } + } + + mark_begin = 0; + mark_end = 0; + return true; +} + +bool CGUIEditBox::onKeyBack() +{ + if (!isEnabled() || Text.empty() || !IsWritable) + return false; + + core::stringw s; + + if (MarkBegin != MarkEnd) { + // delete marked text + const s32 realmbgn = + MarkBegin < MarkEnd ? MarkBegin : MarkEnd; + const s32 realmend = + MarkBegin < MarkEnd ? MarkEnd : MarkBegin; + + s = Text.subString(0, realmbgn); + s.append(Text.subString(realmend, Text.size() - realmend)); + Text = s; + + CursorPos = realmbgn; + } else { + // delete text behind cursor + if (CursorPos > 0) + s = Text.subString(0, CursorPos - 1); + else + s = L""; + s.append(Text.subString(CursorPos, Text.size() - CursorPos)); + Text = s; + --CursorPos; + } + + if (CursorPos < 0) + CursorPos = 0; + return true; +} + +bool CGUIEditBox::onKeyDelete() +{ + if (!isEnabled() || Text.empty() || !IsWritable) + return false; + + core::stringw s; + + if (MarkBegin != MarkEnd) { + // delete marked text + const s32 realmbgn = MarkBegin < MarkEnd ? MarkBegin : MarkEnd; + const s32 realmend = MarkBegin < MarkEnd ? MarkEnd : MarkBegin; + + s = Text.subString(0, realmbgn); + s.append(Text.subString(realmend, Text.size() - realmend)); + Text = s; + + CursorPos = realmbgn; + } else { + // delete text before cursor + s = Text.subString(0, CursorPos); + s.append(Text.subString(CursorPos + 1, Text.size() - CursorPos - 1)); + Text = s; + } + + if (CursorPos > (s32)Text.size()) + CursorPos = (s32)Text.size(); + + return true; +} + //! draws the element and its children void CGUIEditBox::draw() { @@ -685,21 +724,25 @@ void CGUIEditBox::draw() if (!skin) return; - EGUI_DEFAULT_COLOR bgCol = EGDC_GRAY_EDITABLE; - if (isEnabled()) - bgCol = focus ? EGDC_FOCUSED_EDITABLE : EGDC_EDITABLE; + video::SColor bgColor = OverrideBgColor; + if (OverrideBgColor.color == 0) { + EGUI_DEFAULT_COLOR bgCol = EGDC_GRAY_EDITABLE; + if (isEnabled()) + bgCol = focus ? EGDC_FOCUSED_EDITABLE : EGDC_EDITABLE; + bgColor = skin->getColor(bgCol); + } if (!Border && Background) { - skin->draw2DRectangle(this, skin->getColor(bgCol), AbsoluteRect, &AbsoluteClippingRect); + skin->draw2DRectangle(this, bgColor, AbsoluteRect, &AbsoluteClippingRect); } - if (Border) { + if (Border && IsWritable) { // draw the border - skin->draw3DSunkenPane(this, skin->getColor(bgCol), false, Background, AbsoluteRect, &AbsoluteClippingRect); - - calculateFrameRect(); + skin->draw3DSunkenPane(this, bgColor, false, Background, AbsoluteRect, &AbsoluteClippingRect); } + calculateFrameRect(); + core::rect localClipRect = FrameRect; localClipRect.clipAgainst(AbsoluteClippingRect); @@ -822,7 +865,7 @@ void CGUIEditBox::draw() } // draw cursor - if (isEnabled()) { + if (isEnabled() && IsWritable) { if (WordWrap || MultiLine) { cursorLine = getLineFromPos(CursorPos); txtLine = &BrokenText[cursorLine]; @@ -993,6 +1036,14 @@ bool CGUIEditBox::processMouse(const SEvent &event) return true; } } + case EMIE_MOUSE_WHEEL: + if (VScrollBar && VScrollBar->isVisible()) { + s32 pos = VScrollBar->getTargetPos(); + s32 step = VScrollBar->getSmallStep(); + VScrollBar->setPosInterpolated(pos - event.MouseInput.Wheel * step); + return true; + } + break; case EMIE_MMOUSE_PRESSED_DOWN: { if (!AbsoluteClippingRect.isPointInside(core::position2d( event.MouseInput.X, event.MouseInput.Y))) @@ -1091,7 +1142,9 @@ void CGUIEditBox::breakText() s32 lastLineStart = 0; s32 size = Text.size(); s32 length = 0; - s32 elWidth = RelativeRect.getWidth() - 6; + s32 elWidth = RelativeRect.getWidth() - 10; + if (VScrollBar) + elWidth -= VScrollBarWidth; wchar_t c; for (s32 i = 0; i < size; ++i) { @@ -1259,7 +1312,7 @@ void CGUIEditBox::inputChar(wchar_t c) void CGUIEditBox::inputString(const core::stringw &str) { - if (!isEnabled()) + if (!isEnabled() || !IsWritable) return; core::stringw s; @@ -1426,6 +1479,10 @@ void CGUIEditBox::calculateScrollPos() } } } + + if (VScrollBar) { + VScrollBar->setPos(VScrollPos); + } } void CGUIEditBox::calculateFrameRect() @@ -1440,6 +1497,8 @@ void CGUIEditBox::calculateFrameRect() FrameRect.LowerRightCorner.X -= skin->getSize(EGDS_TEXT_DISTANCE_X) + 1; FrameRect.LowerRightCorner.Y -= skin->getSize(EGDS_TEXT_DISTANCE_Y) + 1; } + + updateVScrollBar(); } //! set text markers @@ -1477,10 +1536,52 @@ void CGUIEditBox::sendGuiEvent(EGUI_EVENT_TYPE type) } } -//! Returns whether the element takes input from the IME -bool CGUIEditBox::acceptsIME() +void CGUIEditBox::updateVScrollBar() { - return isEnabled(); + if (!VScrollBar) { + return; + } + + // OnScrollBarChanged(...) + if (VScrollBar->getPos() != VScrollPos) { + s32 deltaScrollY = VScrollBar->getPos() - VScrollPos; + CurrentTextRect.UpperLeftCorner.Y -= deltaScrollY; + CurrentTextRect.LowerRightCorner.Y -= deltaScrollY; + + s32 scrollymax = getTextDimension().Height - FrameRect.getHeight(); + if (scrollymax != VScrollBar->getMax()) { + // manage a newline or a deleted line + VScrollBar->setMax(scrollymax); + VScrollBar->setPageSize(s32(getTextDimension().Height)); + calculateScrollPos(); + } else { + // manage a newline or a deleted line + VScrollPos = VScrollBar->getPos(); + } + } + + // check if a vertical scrollbar is needed ? + if (getTextDimension().Height > (u32)FrameRect.getHeight()) { + FrameRect.LowerRightCorner.X -= VScrollBarWidth; + + s32 scrollymax = getTextDimension().Height - FrameRect.getHeight(); + if (scrollymax != VScrollBar->getMax()) { + VScrollBar->setMax(scrollymax); + VScrollBar->setPageSize(s32(getTextDimension().Height)); + } + + if (!VScrollBar->isVisible()) { + VScrollBar->setVisible(true); + } + } else { + if (VScrollBar->isVisible()) { + VScrollBar->setVisible(false); + VScrollPos = 0; + VScrollBar->setPos(0); + VScrollBar->setMax(1); + VScrollBar->setPageSize(s32(getTextDimension().Height)); + } + } } } // end namespace gui diff --git a/irr/src/CGUIScrollBar.h b/irr/src/CGUIScrollBar.h index 4e3cb00e6..260e7b311 100644 --- a/irr/src/CGUIScrollBar.h +++ b/irr/src/CGUIScrollBar.h @@ -59,6 +59,9 @@ public: //! sets the position of the scrollbar void setPos(s32 pos) override; + //! sets the content height to scroll + void setPageSize(s32 size) override { } + //! updates the rectangle void updateAbsolutePosition() override; diff --git a/irr/src/CIrrDeviceLinux.h b/irr/src/CIrrDeviceLinux.h index 8745b2f8c..a5a217cc8 100644 --- a/irr/src/CIrrDeviceLinux.h +++ b/irr/src/CIrrDeviceLinux.h @@ -10,6 +10,10 @@ #include "IrrlichtDevice.h" #include "ICursorControl.h" #include "os.h" +namespace video +{ + class ITexture; +} #ifdef _IRR_COMPILE_WITH_X11_ diff --git a/irr/src/CIrrDeviceSDL.cpp b/irr/src/CIrrDeviceSDL.cpp index 52f8c217f..a44213d7c 100644 --- a/irr/src/CIrrDeviceSDL.cpp +++ b/irr/src/CIrrDeviceSDL.cpp @@ -1408,7 +1408,7 @@ void CIrrDeviceSDL::createKeyMap() // select missing KeyMap.emplace(SDLK_PRINTSCREEN, KEY_PRINT); // execute missing - KeyMap.emplace(SDLK_PRINTSCREEN, KEY_SNAPSHOT); + // snapshot missing KeyMap.emplace(SDLK_INSERT, KEY_INSERT); KeyMap.emplace(SDLK_DELETE, KEY_DELETE); diff --git a/irr/src/CLimitReadFile.h b/irr/src/CLimitReadFile.h index f95ca5b2c..193b2cb18 100644 --- a/irr/src/CLimitReadFile.h +++ b/irr/src/CLimitReadFile.h @@ -7,7 +7,6 @@ #include "IReadFile.h" #include "irrString.h" -class CUnicodeConverter; namespace io { diff --git a/irr/src/CMakeLists.txt b/irr/src/CMakeLists.txt index f301b5d6a..b7360311a 100644 --- a/irr/src/CMakeLists.txt +++ b/irr/src/CMakeLists.txt @@ -492,7 +492,6 @@ add_library(IRRGUIOBJ OBJECT CGUIButton.h CGUICheckBox.h CGUIComboBox.h - CGUIEditBox.h CGUIEnvironment.h CGUIFileOpenDialog.h CGUIFont.h diff --git a/irr/src/CNullDriver.cpp b/irr/src/CNullDriver.cpp index 2ef371d89..1012e41cf 100644 --- a/irr/src/CNullDriver.cpp +++ b/irr/src/CNullDriver.cpp @@ -85,8 +85,16 @@ CNullDriver::CNullDriver(io::IFileSystem *io, const core::dimension2d &scre InitMaterial2D.ZWriteEnable = video::EZW_OFF; InitMaterial2D.ZBuffer = video::ECFN_DISABLED; InitMaterial2D.UseMipMaps = false; - InitMaterial2D.forEachTexture([](auto &tex) { + InitMaterial2D.forEachTexture([](video::SMaterialLayer &tex) { + // Best preset for 2D pixel-perfect graphics tex.MinFilter = video::ETMINF_NEAREST_MIPMAP_NEAREST; + + // Best preset for downscaled 2D graphics using trilinear interpolation + //tex.MinFilter = video::ETMINF_LINEAR_MIPMAP_LINEAR; + // Lower bias -> more crisp images, more jitter + // Higher bias -> burry images, less jitter + //tex.LODBias = -1; + tex.MagFilter = video::ETMAGF_NEAREST; tex.TextureWrapU = video::ETC_REPEAT; tex.TextureWrapV = video::ETC_REPEAT; diff --git a/irr/src/COpenGLCoreTexture.h b/irr/src/COpenGLCoreTexture.h index 8e2214922..18e40bf6d 100644 --- a/irr/src/COpenGLCoreTexture.h +++ b/irr/src/COpenGLCoreTexture.h @@ -56,15 +56,18 @@ public: HasMipMaps = Driver->getTextureCreationFlag(ETCF_CREATE_MIP_MAPS); KeepImage = Driver->getTextureCreationFlag(ETCF_ALLOW_MEMORY_COPY); + if (!name.empty()) + os::Printer::log("COpenGLCoreTexture: name", name.c_str(), ELL_DEBUG); + getImageValues(srcImages[0]); if (!InternalFormat) return; char lbuf[128]; snprintf_irr(lbuf, sizeof(lbuf), - "COpenGLCoreTexture: Type = %d Size = %dx%d (%dx%d) ColorFormat = %d (%d)%s -> %#06x %#06x %#06x%s", + "COpenGLCoreTexture: Type = %d Size = %dx%d (%dx%d) ColorFormat = %s (%s)%s -> %#06x %#06x %#06x%s", (int)Type, Size.Width, Size.Height, OriginalSize.Width, OriginalSize.Height, - (int)ColorFormat, (int)OriginalColorFormat, + ColorFormatName(ColorFormat), ColorFormatName(OriginalColorFormat), HasMipMaps ? " +Mip" : "", InternalFormat, PixelFormat, PixelType, Converter ? " (c)" : "" ); @@ -100,14 +103,6 @@ public: GL.TexParameteri(TextureType, GL_TEXTURE_MIN_FILTER, GL_NEAREST); GL.TexParameteri(TextureType, GL_TEXTURE_MAG_FILTER, GL_NEAREST); - if (HasMipMaps) { - if (Driver->getTextureCreationFlag(ETCF_OPTIMIZED_FOR_SPEED)) - GL.Hint(GL_GENERATE_MIPMAP_HINT, GL_FASTEST); - else if (Driver->getTextureCreationFlag(ETCF_OPTIMIZED_FOR_QUALITY)) - GL.Hint(GL_GENERATE_MIPMAP_HINT, GL_NICEST); - else - GL.Hint(GL_GENERATE_MIPMAP_HINT, GL_DONT_CARE); - } TEST_GL_ERROR(Driver); initTexture(tmpImages->size()); @@ -144,9 +139,12 @@ public: DriverType = Driver->getDriverType(); assert(Type != ETT_2D_ARRAY); // not supported by this constructor TextureType = TextureTypeIrrToGL(Type); - HasMipMaps = false; + HasMipMaps = Driver->getTextureCreationFlag(ETCF_CREATE_RTT_MIP_MAPS); IsRenderTarget = true; + if (!name.empty()) + os::Printer::log("COpenGLCoreTexture: name", name.c_str(), ELL_DEBUG); + OriginalColorFormat = format; if (ECF_UNKNOWN == OriginalColorFormat) @@ -157,10 +155,17 @@ public: OriginalSize = size; Size = OriginalSize; + if (core::min_(Size.Width, Size.Height) == 0 || core::max_(Size.Width, Size.Height) > Driver->MaxTextureSize) { + char buf[32]; + snprintf_irr(buf, sizeof(buf), "%dx%d", Size.Width, Size.Height); + os::Printer::log("Invalid size for render target", buf, ELL_ERROR); + return; + } + Pitch = Size.Width * IImage::getBitsPerPixelFromFormat(ColorFormat) / 8; if (!Driver->getColorFormatParameters(ColorFormat, InternalFormat, PixelFormat, PixelType, &Converter)) { - os::Printer::log("COpenGLCoreTexture: Color format is not supported", ColorFormatNames[ColorFormat < ECF_UNKNOWN ? ColorFormat : ECF_UNKNOWN], ELL_ERROR); + os::Printer::log("COpenGLCoreTexture: Color format is not supported", ColorFormatName(ColorFormat), ELL_ERROR); return; } @@ -174,10 +179,11 @@ public: } #endif - char lbuf[100]; + char lbuf[200]; snprintf_irr(lbuf, sizeof(lbuf), - "COpenGLCoreTexture: RTT Type = %d Size = %dx%d ColorFormat = %d -> %#06x %#06x %#06x%s", - (int)Type, Size.Width, Size.Height, (int)ColorFormat, + "COpenGLCoreTexture: RTT Type = %d Size = %dx%d (S:%d) ColorFormat = %s%s -> %#06x %#06x %#06x%s", + (int)Type, Size.Width, Size.Height, (int)MSAA, ColorFormatName(ColorFormat), + HasMipMaps ? " +Mip" : "", InternalFormat, PixelFormat, PixelType, Converter ? " (c)" : "" ); os::Printer::log(lbuf, ELL_DEBUG); @@ -384,13 +390,21 @@ public: if (!HasMipMaps || (Size.Width <= 1 && Size.Height <= 1)) return; - const COpenGLCoreTexture *prevTexture = Driver->getCacheHandler()->getTextureCache().get(0); - Driver->getCacheHandler()->getTextureCache().set(0, this); + auto &cache = Driver->getCacheHandler()->getTextureCache(); + const COpenGLCoreTexture *prevTexture = cache.get(0); + cache.set(0, this); + + if (Driver->getTextureCreationFlag(ETCF_OPTIMIZED_FOR_SPEED)) + GL.Hint(GL_GENERATE_MIPMAP_HINT, GL_FASTEST); + else if (Driver->getTextureCreationFlag(ETCF_OPTIMIZED_FOR_QUALITY)) + GL.Hint(GL_GENERATE_MIPMAP_HINT, GL_NICEST); + else + GL.Hint(GL_GENERATE_MIPMAP_HINT, GL_DONT_CARE); Driver->irrGlGenerateMipmap(TextureType); TEST_GL_ERROR(Driver); - Driver->getCacheHandler()->getTextureCache().set(0, prevTexture); + cache.set(0, prevTexture); } GLenum getOpenGLTextureType() const @@ -458,7 +472,7 @@ protected: ColorFormat = getBestColorFormat(OriginalColorFormat); if (!Driver->getColorFormatParameters(ColorFormat, InternalFormat, PixelFormat, PixelType, &Converter)) { - os::Printer::log("getImageValues: Color format is not supported", ColorFormatNames[ColorFormat < ECF_UNKNOWN ? ColorFormat : ECF_UNKNOWN], ELL_ERROR); + os::Printer::log("getImageValues: Color format is not supported", ColorFormatName(ColorFormat), ELL_ERROR); InternalFormat = 0; return; } @@ -471,7 +485,9 @@ protected: Size = OriginalSize; if (Size.Width == 0 || Size.Height == 0) { - os::Printer::log("Invalid size of image for texture.", ELL_ERROR); + char buf[32]; + snprintf_irr(buf, sizeof(buf), "%dx%d", Size.Width, Size.Height); + os::Printer::log("Invalid size of image for texture", buf, ELL_ERROR); return; } @@ -520,6 +536,7 @@ protected: if (HasMipMaps) { levels = core::u32_log2(core::max_(Size.Width, Size.Height)) + 1; } + assert(levels > 0); // reference: bool use_tex_storage = Driver->getFeature().TexStorage; @@ -543,7 +560,7 @@ protected: TEST_GL_ERROR(Driver); break; case ETT_2D_MS: { - GLint max_samples = 0; + GLint max_samples = 1; GL.GetIntegerv(GL_MAX_SAMPLES, &max_samples); MSAA = core::min_(MSAA, (u8)max_samples); @@ -663,7 +680,8 @@ protected: return GL_TEXTURE_2D_ARRAY; } - os::Printer::log("COpenGLCoreTexture::TextureTypeIrrToGL unknown texture type", ELL_WARNING); + auto s = std::to_string(type); + os::Printer::log("COpenGLCoreTexture: unknown texture type", s.c_str(), ELL_WARNING); return GL_TEXTURE_2D; } diff --git a/irr/src/COpenGLDriver.cpp b/irr/src/COpenGLDriver.cpp index 4105942d0..06348cb36 100644 --- a/irr/src/COpenGLDriver.cpp +++ b/irr/src/COpenGLDriver.cpp @@ -1597,6 +1597,7 @@ inline void COpenGLDriver::getGLTextureMatrix(GLfloat *o, const core::matrix4 &m ITexture *COpenGLDriver::createDeviceDependentTexture(const io::path &name, E_TEXTURE_TYPE type, const std::vector &images) { + assert(type == ETT_2D); return new COpenGLTexture(name, images, ETT_2D, this); } @@ -2613,10 +2614,6 @@ ITexture *COpenGLDriver::addRenderTargetTextureMs(const core::dimension2d & if (IImage::isCompressedFormat(format)) return 0; - // disable mip-mapping - bool generateMipLevels = getTextureCreationFlag(ETCF_CREATE_MIP_MAPS); - setTextureCreationFlag(ETCF_CREATE_MIP_MAPS, false); - bool supportForFBO = (Feature.ColorAttachment > 0); core::dimension2du destSize(size); @@ -2630,9 +2627,6 @@ ITexture *COpenGLDriver::addRenderTargetTextureMs(const core::dimension2d & addTexture(renderTargetTexture); renderTargetTexture->drop(); - // restore mip-mapping - setTextureCreationFlag(ETCF_CREATE_MIP_MAPS, generateMipLevels); - return renderTargetTexture; } @@ -2642,10 +2636,6 @@ ITexture *COpenGLDriver::addRenderTargetTextureCubemap(const u32 sideLen, const if (IImage::isCompressedFormat(format)) return 0; - // disable mip-mapping - bool generateMipLevels = getTextureCreationFlag(ETCF_CREATE_MIP_MAPS); - setTextureCreationFlag(ETCF_CREATE_MIP_MAPS, false); - bool supportForFBO = (Feature.ColorAttachment > 0); const core::dimension2d size(sideLen, sideLen); @@ -2660,9 +2650,6 @@ ITexture *COpenGLDriver::addRenderTargetTextureCubemap(const u32 sideLen, const addTexture(renderTargetTexture); renderTargetTexture->drop(); - // restore mip-mapping - setTextureCreationFlag(ETCF_CREATE_MIP_MAPS, generateMipLevels); - return renderTargetTexture; } @@ -2681,6 +2668,13 @@ bool COpenGLDriver::setRenderTargetEx(IRenderTarget *target, u16 clearFlag, SCol return false; } + if (CurrentRenderTarget) { + // Update mip-map of the generated texture, if enabled. + auto textures = CurrentRenderTarget->getTexture(); + for (size_t i = 0; i < textures.size(); ++i) + textures[i]->regenerateMipMapLevels(); + } + bool supportForFBO = (Feature.ColorAttachment > 0); core::dimension2d destRenderTargetSize(0, 0); diff --git a/irr/src/COpenGLDriver.h b/irr/src/COpenGLDriver.h index d4d603c7b..d74c35250 100644 --- a/irr/src/COpenGLDriver.h +++ b/irr/src/COpenGLDriver.h @@ -6,10 +6,6 @@ #include "SIrrCreationParameters.h" -class CIrrDeviceWin32; -class CIrrDeviceLinux; -class CIrrDeviceSDL; -class CIrrDeviceMacOSX; #ifdef _IRR_COMPILE_WITH_OPENGL_ diff --git a/irr/src/CSceneManager.h b/irr/src/CSceneManager.h index ea035d237..057ef0180 100644 --- a/irr/src/CSceneManager.h +++ b/irr/src/CSceneManager.h @@ -12,10 +12,6 @@ #include "irrArray.h" #include "IMeshLoader.h" -namespace io -{ -class IFileSystem; -} namespace scene { class IMeshCache; diff --git a/irr/src/CXMeshFileLoader.h b/irr/src/CXMeshFileLoader.h index 9bb329673..268a2ee3b 100644 --- a/irr/src/CXMeshFileLoader.h +++ b/irr/src/CXMeshFileLoader.h @@ -14,7 +14,6 @@ class IReadFile; } // end namespace io namespace scene { -class IMeshManipulator; //! Meshloader capable of loading x meshes. class CXMeshFileLoader : public IMeshLoader diff --git a/irr/src/OpenGL/Common.h b/irr/src/OpenGL/Common.h index d032a8e73..fbde39d3b 100644 --- a/irr/src/OpenGL/Common.h +++ b/irr/src/OpenGL/Common.h @@ -22,7 +22,6 @@ namespace video // Forward declarations. -class COpenGLCoreFeature; template class COpenGLCoreTexture; @@ -38,7 +37,6 @@ typedef COpenGLCoreTexture COpenGL3Texture; typedef COpenGLCoreRenderTarget COpenGL3RenderTarget; typedef COpenGLCoreCacheHandler COpenGL3CacheHandler; -class OpenGLVBO; enum OpenGLSpec : u8 { diff --git a/irr/src/OpenGL/Driver.cpp b/irr/src/OpenGL/Driver.cpp index e114e48ff..025eeb269 100644 --- a/irr/src/OpenGL/Driver.cpp +++ b/irr/src/OpenGL/Driver.cpp @@ -139,7 +139,7 @@ void COpenGL3DriverBase::debugCb(GLenum source, GLenum type, GLuint id, GLenum s ll = ELL_ERROR; else if (severity == GL_DEBUG_SEVERITY_MEDIUM) ll = ELL_WARNING; - char buf[300]; + char buf[512]; snprintf_irr(buf, sizeof(buf), "%04x %04x %.*s", source, type, length, message); os::Printer::log("GL", buf, ll); } @@ -266,7 +266,6 @@ bool COpenGL3DriverBase::genericDriverInit(const core::dimension2d &screenS GL.ClearDepthf(1.0f); - GL.Hint(GL_GENERATE_MIPMAP_HINT, GL_NICEST); GL.FrontFace(GL_CW); // create material renderers @@ -278,9 +277,6 @@ bool COpenGL3DriverBase::genericDriverInit(const core::dimension2d &screenS // set fog mode setFog(FogColor, FogType, FogStart, FogEnd, FogDensity, PixelFog, RangeFog); - // create matrix for flipping textures - TextureFlipMatrix.buildTextureTransform(0.0f, core::vector2df(0, 0), core::vector2df(0, 1.0f), core::vector2df(1.0f, -1.0f)); - // We need to reset once more at the beginning of the first rendering. // This fixes problems with intermediate changes to the material during texture load. ResetRenderStates = true; @@ -1666,26 +1662,15 @@ ITexture *COpenGL3DriverBase::addRenderTargetTexture(const core::dimension2d &size, u8 msaa, const io::path &name, const ECOLOR_FORMAT format) { - // disable mip-mapping - bool generateMipLevels = getTextureCreationFlag(ETCF_CREATE_MIP_MAPS); - setTextureCreationFlag(ETCF_CREATE_MIP_MAPS, false); - COpenGL3Texture *renderTargetTexture = new COpenGL3Texture(name, size, msaa > 0 ? ETT_2D_MS : ETT_2D, format, this, msaa); addTexture(renderTargetTexture); renderTargetTexture->drop(); - // restore mip-mapping - setTextureCreationFlag(ETCF_CREATE_MIP_MAPS, generateMipLevels); - return renderTargetTexture; } ITexture *COpenGL3DriverBase::addRenderTargetTextureCubemap(const u32 sideLen, const io::path &name, const ECOLOR_FORMAT format) { - // disable mip-mapping - bool generateMipLevels = getTextureCreationFlag(ETCF_CREATE_MIP_MAPS); - setTextureCreationFlag(ETCF_CREATE_MIP_MAPS, false); - bool supportForFBO = (Feature.ColorAttachment > 0); const core::dimension2d size(sideLen, sideLen); @@ -1700,9 +1685,6 @@ ITexture *COpenGL3DriverBase::addRenderTargetTextureCubemap(const u32 sideLen, c addTexture(renderTargetTexture); renderTargetTexture->drop(); - // restore mip-mapping - setTextureCreationFlag(ETCF_CREATE_MIP_MAPS, generateMipLevels); - return renderTargetTexture; } @@ -1719,6 +1701,13 @@ bool COpenGL3DriverBase::setRenderTargetEx(IRenderTarget *target, u16 clearFlag, return false; } + if (CurrentRenderTarget) { + // Update mip-map of the generated texture, if enabled. + auto textures = CurrentRenderTarget->getTexture(); + for (size_t i = 0; i < textures.size(); ++i) + textures[i]->regenerateMipMapLevels(); + } + core::dimension2d destRenderTargetSize(0, 0); if (target) { diff --git a/irr/src/OpenGL/Driver.h b/irr/src/OpenGL/Driver.h index 714586724..839c5f602 100644 --- a/irr/src/OpenGL/Driver.h +++ b/irr/src/OpenGL/Driver.h @@ -20,7 +20,6 @@ namespace video { struct VertexType; -class COpenGL3FixedPipelineRenderer; class COpenGL3Renderer2D; class COpenGL3DriverBase : public CNullDriver, public IMaterialRendererServices, public COpenGL3ExtensionHandler @@ -325,15 +324,13 @@ protected: bool LockRenderStateMode; u8 AntiAlias; - core::matrix4 TextureFlipMatrix; - using FColorConverter = void (*)(const void *source, s32 count, void *dest); struct STextureFormatInfo { - GLenum InternalFormat; - GLenum PixelFormat; - GLenum PixelType; - FColorConverter Converter; + GLenum InternalFormat = 0; + GLenum PixelFormat = 0; + GLenum PixelType = 0; + FColorConverter Converter = nullptr; }; STextureFormatInfo TextureFormats[ECF_UNKNOWN] = {}; diff --git a/po/ar/luanti.po b/po/ar/luanti.po index d9e4a814d..789114e0f 100644 --- a/po/ar/luanti.po +++ b/po/ar/luanti.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: minetest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-07-11 19:59+0200\n" +"POT-Creation-Date: 2025-09-23 19:19+0200\n" "PO-Revision-Date: 2024-05-21 09:01+0000\n" "Last-Translator: Jamil Mohamad Alhussein \n" "Language-Team: Arabic , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: luanti\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-09-23 19:19+0200\n" +"PO-Revision-Date: 2025-08-09 01:02+0000\n" +"Last-Translator: Zaman Hüseynli \n" +"Language-Team: Azerbaijani \n" +"Language: az\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 5.13-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 "Verilmiş əmir: " + +#: 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/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 (-t: output in chat)" +msgstr "" + +#: builtin/common/chatcommands.lua +msgid "" +"Use '.help ' to get more information, or '.help all' to list everything." +msgstr "" + +#: builtin/common/chatcommands.lua +msgid "[all | ] [-t]" +msgstr "" + +#: builtin/common/settings/components.lua +msgid "Browse" +msgstr "" + +#: builtin/common/settings/components.lua +msgid "Conflicts with \"$1\"" +msgstr "" + +#: builtin/common/settings/components.lua +msgid "Edit" +msgstr "" + +#: builtin/common/settings/components.lua +msgid "Remove keybinding" +msgstr "" + +#: builtin/common/settings/components.lua +msgid "Select directory" +msgstr "" + +#: builtin/common/settings/components.lua +msgid "Select file" +msgstr "" + +#: builtin/common/settings/components.lua +msgid "Set" +msgstr "" + +#: builtin/common/settings/dlg_change_mapgen_flags.lua +msgid "(No description of setting given)" +msgstr "" + +#: builtin/common/settings/dlg_change_mapgen_flags.lua +msgid "2D Noise" +msgstr "" + +#: builtin/common/settings/dlg_change_mapgen_flags.lua +#: builtin/mainmenu/content/dlg_install.lua +#: builtin/mainmenu/content/dlg_overwrite.lua +#: builtin/mainmenu/dlg_config_world.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 src/gui/guiOpenURL.cpp +#: src/gui/guiPasswordChange.cpp +msgid "Cancel" +msgstr "" + +#: builtin/common/settings/dlg_change_mapgen_flags.lua +msgid "Lacunarity" +msgstr "" + +#: builtin/common/settings/dlg_change_mapgen_flags.lua +msgid "Octaves" +msgstr "" + +#: builtin/common/settings/dlg_change_mapgen_flags.lua +#: src/settings_translation_file.cpp +msgid "Offset" +msgstr "" + +#: builtin/common/settings/dlg_change_mapgen_flags.lua +msgid "Persistence" +msgstr "" + +#: builtin/common/settings/dlg_change_mapgen_flags.lua +#: builtin/mainmenu/dlg_config_world.lua +msgid "Save" +msgstr "" + +#: builtin/common/settings/dlg_change_mapgen_flags.lua +#: src/settings_translation_file.cpp +msgid "Scale" +msgstr "" + +#: builtin/common/settings/dlg_change_mapgen_flags.lua +#: builtin/mainmenu/dlg_create_world.lua +msgid "Seed" +msgstr "" + +#: builtin/common/settings/dlg_change_mapgen_flags.lua +msgid "X spread" +msgstr "" + +#: builtin/common/settings/dlg_change_mapgen_flags.lua +msgid "Y spread" +msgstr "" + +#: builtin/common/settings/dlg_change_mapgen_flags.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 +#. the settings menu. +#: builtin/common/settings/dlg_change_mapgen_flags.lua +msgid "absvalue" +msgstr "" + +#. ~ "defaults" is a noise parameter flag. +#. It describes the default processing options +#. for noise settings in the settings menu. +#: builtin/common/settings/dlg_change_mapgen_flags.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 +#. the settings menu. +#: builtin/common/settings/dlg_change_mapgen_flags.lua +msgid "eased" +msgstr "" + +#: builtin/common/settings/dlg_settings.lua +msgid "(The game will need to enable automatic exposure as well)" +msgstr "" + +#: builtin/common/settings/dlg_settings.lua +msgid "(The game will need to enable bloom as well)" +msgstr "" + +#: builtin/common/settings/dlg_settings.lua +msgid "(The game will need to enable volumetric lighting as well)" +msgstr "" + +#: builtin/common/settings/dlg_settings.lua +msgid "(Use system language)" +msgstr "" + +#: builtin/common/settings/dlg_settings.lua +msgid "Accessibility" +msgstr "" + +#: builtin/common/settings/dlg_settings.lua +msgid "Auto" +msgstr "" + +#: builtin/common/settings/dlg_settings.lua +#: builtin/mainmenu/content/dlg_contentdb.lua +#: builtin/mainmenu/content/dlg_package.lua src/gui/guiVolumeChange.cpp +msgid "Back" +msgstr "" + +#: builtin/common/settings/dlg_settings.lua +msgid "Buttons with crosshair" +msgstr "" + +#: builtin/common/settings/dlg_settings.lua src/gui/touchscreenlayout.cpp +#: src/settings_translation_file.cpp +msgid "Chat" +msgstr "" + +#: builtin/common/settings/dlg_settings.lua builtin/mainmenu/tab_online.lua +msgid "Clear" +msgstr "" + +#: builtin/common/settings/dlg_settings.lua src/settings_translation_file.cpp +msgid "Controls" +msgstr "" + +#: builtin/common/settings/dlg_settings.lua +#: builtin/common/settings/shadows_component.lua +msgid "Disabled" +msgstr "" + +#: builtin/common/settings/dlg_settings.lua +msgid "Enabled" +msgstr "" + +#: builtin/common/settings/dlg_settings.lua src/settings_translation_file.cpp +msgid "General" +msgstr "" + +#: builtin/common/settings/dlg_settings.lua +msgid "Long tap" +msgstr "" + +#: builtin/common/settings/dlg_settings.lua +msgid "Movement" +msgstr "" + +#: builtin/common/settings/dlg_settings.lua +#: builtin/mainmenu/content/dlg_contentdb.lua +msgid "No results" +msgstr "" + +#: builtin/common/settings/dlg_settings.lua +msgid "Reset setting to default" +msgstr "" + +#: builtin/common/settings/dlg_settings.lua +msgid "Reset setting to default ($1)" +msgstr "" + +#: builtin/common/settings/dlg_settings.lua builtin/mainmenu/tab_online.lua +msgid "Search" +msgstr "" + +#: builtin/common/settings/dlg_settings.lua +msgid "Short tap" +msgstr "" + +#: builtin/common/settings/dlg_settings.lua +msgid "Show advanced settings" +msgstr "" + +#: builtin/common/settings/dlg_settings.lua +msgid "Show technical names" +msgstr "" + +#: builtin/common/settings/dlg_settings.lua +msgid "Tap" +msgstr "" + +#: builtin/common/settings/dlg_settings.lua +msgid "Tap with crosshair" +msgstr "" + +#: builtin/common/settings/dlg_settings.lua +msgid "Touchscreen layout" +msgstr "" + +#: builtin/common/settings/settingtypes.lua +msgid "Client Mods" +msgstr "" + +#: builtin/common/settings/settingtypes.lua +msgid "Content: Games" +msgstr "" + +#: builtin/common/settings/settingtypes.lua +msgid "Content: Mods" +msgstr "" + +#: builtin/common/settings/shadows_component.lua +msgid "(The game will need to enable shadows as well)" +msgstr "" + +#: builtin/common/settings/shadows_component.lua +msgid "Custom" +msgstr "" + +#: builtin/common/settings/shadows_component.lua +#: src/settings_translation_file.cpp +msgid "Dynamic shadows" +msgstr "" + +#: builtin/common/settings/shadows_component.lua +msgid "High" +msgstr "" + +#: builtin/common/settings/shadows_component.lua +msgid "Low" +msgstr "" + +#: builtin/common/settings/shadows_component.lua +msgid "Medium" +msgstr "" + +#: builtin/common/settings/shadows_component.lua +msgid "Very High" +msgstr "" + +#: builtin/common/settings/shadows_component.lua +msgid "Very Low" +msgstr "" + +#: builtin/fstk/ui.lua +msgid "" +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 "OK" +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 "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 "We only support protocol version $1." +msgstr "" + +#: builtin/mainmenu/common.lua +msgid "We support protocol versions between version $1 and $2." +msgstr "" + +#: builtin/mainmenu/content/contentdb.lua +msgid "Error installing \"$1\": $2" +msgstr "" + +#: builtin/mainmenu/content/contentdb.lua +msgid "Failed to download \"$1\"" +msgstr "" + +#: builtin/mainmenu/content/contentdb.lua +msgid "Failed to download $1" +msgstr "" + +#: builtin/mainmenu/content/contentdb.lua +msgid "" +"Failed to extract \"$1\" (insufficient disk space, unsupported file type or " +"broken archive)" +msgstr "" + +#: builtin/mainmenu/content/dlg_contentdb.lua +msgid "" +"$1 downloading,\n" +"$2 queued" +msgstr "" + +#: builtin/mainmenu/content/dlg_contentdb.lua +msgid "$1 downloading..." +msgstr "" + +#: builtin/mainmenu/content/dlg_contentdb.lua +msgid "All" +msgstr "" + +#: builtin/mainmenu/content/dlg_contentdb.lua +msgid "ContentDB is not available when Luanti was compiled without cURL" +msgstr "" + +#: builtin/mainmenu/content/dlg_contentdb.lua +msgid "Downloading..." +msgstr "" + +#: builtin/mainmenu/content/dlg_contentdb.lua +msgid "Featured" +msgstr "" + +#: builtin/mainmenu/content/dlg_contentdb.lua +msgid "Games" +msgstr "" + +#: builtin/mainmenu/content/dlg_contentdb.lua +#: builtin/mainmenu/content/dlg_install.lua +#: builtin/mainmenu/content/dlg_package.lua builtin/mainmenu/serverlistmgr.lua +#: src/client/game.cpp +msgid "Loading..." +msgstr "" + +#: builtin/mainmenu/content/dlg_contentdb.lua +msgid "Mods" +msgstr "" + +#: builtin/mainmenu/content/dlg_contentdb.lua +msgid "No packages could be retrieved" +msgstr "" + +#: builtin/mainmenu/content/dlg_contentdb.lua +msgid "No updates" +msgstr "" + +#: builtin/mainmenu/content/dlg_contentdb.lua +msgid "Queued" +msgstr "" + +#: builtin/mainmenu/content/dlg_contentdb.lua +msgid "Texture Packs" +msgstr "" + +#: builtin/mainmenu/content/dlg_contentdb.lua +msgid "The package $1 was not found." +msgstr "" + +#: builtin/mainmenu/content/dlg_contentdb.lua +msgid "Update All [$1]" +msgstr "" + +#: builtin/mainmenu/content/dlg_install.lua +msgid "$1 and $2 dependencies will be installed." +msgstr "" + +#: builtin/mainmenu/content/dlg_install.lua +msgid "$1 by $2" +msgstr "" + +#: builtin/mainmenu/content/dlg_install.lua +msgid "$1 required dependencies could not be found." +msgstr "" + +#: builtin/mainmenu/content/dlg_install.lua +msgid "$1 will be installed, and $2 dependencies will be skipped." +msgstr "" + +#: builtin/mainmenu/content/dlg_install.lua +msgid "Already installed" +msgstr "" + +#: builtin/mainmenu/content/dlg_install.lua +msgid "Base Game:" +msgstr "" + +#: builtin/mainmenu/content/dlg_install.lua +#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/tab_content.lua +msgid "Dependencies:" +msgstr "" + +#: builtin/mainmenu/content/dlg_install.lua +msgid "Error getting dependencies for package $1" +msgstr "" + +#: builtin/mainmenu/content/dlg_install.lua +#: builtin/mainmenu/content/dlg_package.lua +msgid "Install" +msgstr "" + +#: builtin/mainmenu/content/dlg_install.lua +msgid "Install $1" +msgstr "" + +#: builtin/mainmenu/content/dlg_install.lua +msgid "Install missing dependencies" +msgstr "" + +#: builtin/mainmenu/content/dlg_install.lua +msgid "Not found" +msgstr "" + +#: builtin/mainmenu/content/dlg_install.lua +msgid "Please check that the base game is correct." +msgstr "" + +#: builtin/mainmenu/content/dlg_install.lua +msgid "You need to install a game before you can install a mod" +msgstr "" + +#: builtin/mainmenu/content/dlg_overwrite.lua +msgid "\"$1\" already exists. Would you like to overwrite it?" +msgstr "" + +#: builtin/mainmenu/content/dlg_overwrite.lua +msgid "Overwrite" +msgstr "" + +#: builtin/mainmenu/content/dlg_package.lua +msgid "ContentDB page" +msgstr "" + +#: builtin/mainmenu/content/dlg_package.lua +msgid "Description" +msgstr "" + +#: builtin/mainmenu/content/dlg_package.lua +msgid "Donate" +msgstr "" + +#: builtin/mainmenu/content/dlg_package.lua +msgid "Error loading package information" +msgstr "" + +#: builtin/mainmenu/content/dlg_package.lua +msgid "Error loading reviews" +msgstr "" + +#: builtin/mainmenu/content/dlg_package.lua +msgid "Forum Topic" +msgstr "" + +#: builtin/mainmenu/content/dlg_package.lua +msgid "Information" +msgstr "" + +#: builtin/mainmenu/content/dlg_package.lua +msgid "Install [$1]" +msgstr "" + +#: builtin/mainmenu/content/dlg_package.lua +msgid "Issue Tracker" +msgstr "" + +#: builtin/mainmenu/content/dlg_package.lua +msgid "Reviews" +msgstr "" + +#: builtin/mainmenu/content/dlg_package.lua +msgid "Source" +msgstr "" + +#: builtin/mainmenu/content/dlg_package.lua +msgid "Translate" +msgstr "" + +#: builtin/mainmenu/content/dlg_package.lua builtin/mainmenu/tab_content.lua +msgid "Uninstall" +msgstr "" + +#: builtin/mainmenu/content/dlg_package.lua builtin/mainmenu/tab_content.lua +msgid "Update" +msgstr "" + +#: builtin/mainmenu/content/dlg_package.lua +msgid "Website" +msgstr "" + +#: builtin/mainmenu/content/dlg_package.lua +msgid "by $1" +msgstr "" + +#: builtin/mainmenu/content/dlg_package.lua +msgid "by $1 — $2 downloads — +$3 / $4 / -$5" +msgstr "" + +#: builtin/mainmenu/content/pkgmgr.lua +msgid "$1 (Enabled)" +msgstr "" + +#: builtin/mainmenu/content/pkgmgr.lua +msgid "$1 mods" +msgstr "" + +#: builtin/mainmenu/content/pkgmgr.lua +msgid "Failed to install $1 to $2" +msgstr "" + +#: builtin/mainmenu/content/pkgmgr.lua +msgid "Install: Unable to find suitable folder name for $1" +msgstr "" + +#: builtin/mainmenu/content/pkgmgr.lua +msgid "Unable to find a valid mod, modpack, or game" +msgstr "" + +#: builtin/mainmenu/content/pkgmgr.lua +msgid "Unable to install a $1 as a $2" +msgstr "" + +#: builtin/mainmenu/content/pkgmgr.lua +msgid "Unable to install a $1 as a texture pack" +msgstr "" + +#: builtin/mainmenu/dlg_clients_list.lua +msgid "" +"Players connected to\n" +"$1" +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 +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 +msgid "World:" +msgstr "" + +#: builtin/mainmenu/dlg_config_world.lua +msgid "enabled" +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 "Desert temples" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Development Test is meant for developers." +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "" +"Different dungeon variant generated in desert biomes (only if dungeons " +"enabled)" +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 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 +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_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 +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_rebind_keys.lua +msgid "As a result, your keybindings may have been changed." +msgstr "" + +#: builtin/mainmenu/dlg_rebind_keys.lua +msgid "Check out the key settings or refer to the documentation:" +msgstr "" + +#: builtin/mainmenu/dlg_rebind_keys.lua +msgid "Close" +msgstr "" + +#: builtin/mainmenu/dlg_rebind_keys.lua +msgid "Keybindings changed" +msgstr "" + +#: builtin/mainmenu/dlg_rebind_keys.lua +msgid "Open settings" +msgstr "" + +#: builtin/mainmenu/dlg_rebind_keys.lua +msgid "The input handling system was reworked in Luanti 5.12.0." +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_reinstall_mtg.lua +msgid "Dismiss" +msgstr "" + +#: builtin/mainmenu/dlg_reinstall_mtg.lua +msgid "" +"For a long time, Luanti shipped with a default game called \"Minetest " +"Game\". Since version 5.8.0, Luanti ships without a default game." +msgstr "" + +#: builtin/mainmenu/dlg_reinstall_mtg.lua +msgid "" +"If you want to continue playing in your Minetest Game worlds, you need to " +"reinstall Minetest Game." +msgstr "" + +#: builtin/mainmenu/dlg_reinstall_mtg.lua +msgid "Minetest Game is no longer installed by default" +msgstr "" + +#: builtin/mainmenu/dlg_reinstall_mtg.lua +msgid "Reinstall Minetest Game" +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_server_list_mods.lua +msgid "Expand all" +msgstr "" + +#: builtin/mainmenu/dlg_server_list_mods.lua +msgid "Group by prefix" +msgstr "" + +#: builtin/mainmenu/dlg_server_list_mods.lua +msgid "The $1 server uses a game called $2 and the following mods:" +msgstr "" + +#: builtin/mainmenu/dlg_server_list_mods.lua +msgid "The $1 server uses the following mods:" +msgstr "" + +#: builtin/mainmenu/dlg_version_info.lua +msgid "A new $1 version is available" +msgstr "" + +#: builtin/mainmenu/dlg_version_info.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/dlg_version_info.lua +msgid "Later" +msgstr "" + +#: builtin/mainmenu/dlg_version_info.lua +msgid "Never" +msgstr "" + +#: builtin/mainmenu/dlg_version_info.lua +msgid "Visit website" +msgstr "" + +#: builtin/mainmenu/init.lua src/client/game_formspec.cpp +msgid "Settings" +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 "Core Team" +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 "Browse online content [$1]" +msgstr "" + +#: builtin/mainmenu/tab_content.lua +msgid "Content" +msgstr "" + +#: builtin/mainmenu/tab_content.lua +msgid "Content [$1]" +msgstr "" + +#: builtin/mainmenu/tab_content.lua +msgid "Disable Texture Pack" +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 "Update available?" +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 a game" +msgstr "" + +#: builtin/mainmenu/tab_local.lua +msgid "Install games from ContentDB" +msgstr "" + +#: builtin/mainmenu/tab_local.lua +msgid "Luanti doesn't come with a game by default." +msgstr "" + +#: builtin/mainmenu/tab_local.lua +msgid "" +"Luanti is a game-creation platform that allows you to play many different " +"games." +msgstr "" + +#: builtin/mainmenu/tab_local.lua +msgid "New" +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_local.lua +msgid "You need to install a game before you can create a world." +msgstr "" + +#: builtin/mainmenu/tab_online.lua +msgid "Add favorite" +msgstr "" + +#: builtin/mainmenu/tab_online.lua +msgid "Address" +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 "Game: $1" +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 "Number of mods: $1" +msgstr "" + +#: builtin/mainmenu/tab_online.lua +msgid "Open server website" +msgstr "" + +#: builtin/mainmenu/tab_online.lua +msgid "Ping" +msgstr "" + +#: builtin/mainmenu/tab_online.lua +msgid "" +"Players:\n" +"$1" +msgstr "" + +#: builtin/mainmenu/tab_online.lua +msgid "" +"Possible filters\n" +"game:\n" +"mod:\n" +"player:" +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 "" + +#: 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 +#, c-format +msgid "Failed to save screenshot to \"%s\"" +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/client.cpp +#, c-format +msgid "Saved screenshot to \"%s\"" +msgstr "" + +#: src/client/clientlauncher.cpp +msgid "Could not find or load game: " +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/clientmedia.cpp src/client/game.cpp +msgid "Media..." +msgstr "" + +#: src/client/game.cpp src/client/shader.cpp src/server.cpp +msgid "" +"\n" +"Check debug.txt for details." +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 "All debug info hidden" +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 current block" +msgstr "" + +#: src/client/game.cpp +msgid "Block bounds shown for nearby blocks" +msgstr "" + +#: src/client/game.cpp +msgid "Bounding boxes shown" +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 game or mod)" +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 error (timed out?)" +msgstr "" + +#: src/client/game.cpp +msgid "Connection failed for unknown reason" +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 shown" +msgstr "" + +#: src/client/game.cpp +#, c-format +msgid "Error creating client: %s" +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 "Fog enabled by game or mod" +msgstr "" + +#: src/client/game.cpp +msgid "Item definitions..." +msgstr "" + +#: src/client/game.cpp +msgid "KiB/s" +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 "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 "Resolving address..." +msgstr "" + +#: src/client/game.cpp +msgid "Shutting down..." +msgstr "" + +#: src/client/game.cpp src/client/game_formspec.cpp +msgid "Singleplayer" +msgstr "" + +#: src/client/game.cpp +msgid "Sound muted" +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 +msgid "Unlimited viewing range disabled" +msgstr "" + +#: src/client/game.cpp +msgid "Unlimited viewing range enabled" +msgstr "" + +#: src/client/game.cpp +msgid "Unlimited viewing range enabled, but forbidden by game or mod" +msgstr "" + +#: src/client/game.cpp +#, c-format +msgid "Viewing changed to %d (the minimum)" +msgstr "" + +#: src/client/game.cpp +#, c-format +msgid "Viewing changed to %d (the minimum), but limited to %d by game or mod" +msgstr "" + +#: src/client/game.cpp +#, c-format +msgid "Viewing range changed to %d" +msgstr "" + +#: src/client/game.cpp +#, c-format +msgid "Viewing range changed to %d (the maximum)" +msgstr "" + +#: src/client/game.cpp +#, c-format +msgid "" +"Viewing range changed to %d (the maximum), but limited to %d by game or mod" +msgstr "" + +#: src/client/game.cpp +#, c-format +msgid "Viewing range changed to %d, but limited to %d by game or mod" +msgstr "" + +#: src/client/game.cpp +#, c-format +msgid "Volume changed to %d%%" +msgstr "" + +#: src/client/game.cpp +msgid "Wireframe not supported by video driver" +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_formspec.cpp +msgid "- Mode: " +msgstr "" + +#: src/client/game_formspec.cpp +msgid "- Public: " +msgstr "" + +#. ~ PvP = Player versus Player +#: src/client/game_formspec.cpp +msgid "- PvP: " +msgstr "" + +#: src/client/game_formspec.cpp +msgid "- Server Name: " +msgstr "" + +#: src/client/game_formspec.cpp +msgid "Change Password" +msgstr "" + +#: src/client/game_formspec.cpp +msgid "Continue" +msgstr "" + +#: src/client/game_formspec.cpp +msgid "" +"Controls:\n" +"No menu open:\n" +"- slide finger: look around\n" +"- tap: place/punch/use (default)\n" +"- long tap: dig/use (default)\n" +"Menu/inventory open:\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_formspec.cpp +msgid "Exit to Menu" +msgstr "" + +#: src/client/game_formspec.cpp +msgid "Exit to OS" +msgstr "" + +#: src/client/game_formspec.cpp +msgid "Game info:" +msgstr "" + +#: src/client/game_formspec.cpp +msgid "Game paused" +msgstr "" + +#: src/client/game_formspec.cpp +msgid "Hosting server" +msgstr "" + +#: src/client/game_formspec.cpp +msgid "Off" +msgstr "" + +#: src/client/game_formspec.cpp +msgid "On" +msgstr "" + +#: src/client/game_formspec.cpp +msgid "Remote server" +msgstr "" + +#: src/client/game_formspec.cpp +msgid "Respawn" +msgstr "" + +#: src/client/game_formspec.cpp +msgid "Sound Volume" +msgstr "" + +#: src/client/game_formspec.cpp +msgid "You died" +msgstr "" + +#: src/client/gameui.cpp +msgid "Chat currently disabled by game or mod" +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 "Backspace" +msgstr "" + +#. ~ Usually paired with the Pause key +#: src/client/keycode.cpp +msgid "Break Key" +msgstr "" + +#: src/client/keycode.cpp +msgid "Caps Lock" +msgstr "" + +#: src/client/keycode.cpp +msgid "Clear Key" +msgstr "" + +#: src/client/keycode.cpp +msgid "Control Key" +msgstr "" + +#: src/client/keycode.cpp +msgid "Delete Key" +msgstr "" + +#: src/client/keycode.cpp +msgid "Down Arrow" +msgstr "" + +#: src/client/keycode.cpp +msgid "End Key" +msgstr "" + +#: src/client/keycode.cpp +msgid "Help Key" +msgstr "" + +#: src/client/keycode.cpp +msgid "Home Key" +msgstr "" + +#: src/client/keycode.cpp +msgid "Insert" +msgstr "" + +#: src/client/keycode.cpp +msgid "Left Arrow" +msgstr "" + +#: src/client/keycode.cpp +msgid "Left Click" +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 "" + +#. ~ Name of key +#: src/client/keycode.cpp +msgid "Left Windows" +msgstr "" + +#: src/client/keycode.cpp +msgid "Menu Key" +msgstr "" + +#: src/client/keycode.cpp +msgid "Middle Click" +msgstr "" + +#: src/client/keycode.cpp +msgid "Mouse X1" +msgstr "" + +#: src/client/keycode.cpp +msgid "Mouse X2" +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 "Page Down" +msgstr "" + +#: src/client/keycode.cpp +msgid "Page Up" +msgstr "" + +#. ~ Usually paired with the Break key +#: src/client/keycode.cpp +msgid "Pause Key" +msgstr "" + +#: src/client/keycode.cpp +msgid "Play" +msgstr "" + +#. ~ "Print screen" key +#: src/client/keycode.cpp +msgid "Print" +msgstr "" + +#: src/client/keycode.cpp +msgid "Return Key" +msgstr "" + +#: src/client/keycode.cpp +msgid "Right Arrow" +msgstr "" + +#: src/client/keycode.cpp +msgid "Right Click" +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 "" + +#. ~ Name of key +#: src/client/keycode.cpp +msgid "Right Windows" +msgstr "" + +#: src/client/keycode.cpp +msgid "Scroll Lock" +msgstr "" + +#: src/client/keycode.cpp +msgid "Select Key" +msgstr "" + +#: src/client/keycode.cpp +msgid "Shift Key" +msgstr "" + +#: src/client/keycode.cpp +msgid "Space" +msgstr "" + +#: src/client/keycode.cpp +msgid "Tab Key" +msgstr "" + +#: src/client/keycode.cpp +msgid "Up Arrow" +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/client/shader.cpp +#, c-format +msgid "Failed to compile the \"%s\" shader." +msgstr "" + +#: src/client/shader.cpp +msgid "GLSL is not supported by the driver" +msgstr "" + +#. ~ Error when a mod is missing dependencies. Ex: "Mod Title is missing: mod1, mod2, mod3" +#: src/content/mod_configuration.cpp +#, c-format +msgid "%s is missing:" +msgstr "" + +#: src/content/mod_configuration.cpp +msgid "" +"Install and enable the required mods, or disable the mods causing errors." +msgstr "" + +#: src/content/mod_configuration.cpp +msgid "" +"Note: this may be caused by a dependency cycle, in which case try updating " +"the mods." +msgstr "" + +#: src/content/mod_configuration.cpp +msgid "Some mods have unsatisfied dependencies:" +msgstr "" + +#: src/gui/guiButtonKey.h +msgid "Press Button" +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/guiOpenURL.cpp +msgid "Open" +msgstr "" + +#: src/gui/guiOpenURL.cpp +msgid "Open URL?" +msgstr "" + +#: src/gui/guiOpenURL.cpp +msgid "Unable to open URL" +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 "Muted" +msgstr "" + +#: src/gui/guiVolumeChange.cpp +#, c-format +msgid "Sound Volume: %d%%" +msgstr "" + +#: src/gui/touchscreeneditor.cpp +msgid "Add button" +msgstr "" + +#: src/gui/touchscreeneditor.cpp +msgid "Done" +msgstr "" + +#: src/gui/touchscreeneditor.cpp +msgid "Remove" +msgstr "" + +#: src/gui/touchscreeneditor.cpp +msgid "Reset" +msgstr "" + +#: src/gui/touchscreeneditor.cpp +msgid "Start dragging a button to add. Tap outside to cancel." +msgstr "" + +#: src/gui/touchscreeneditor.cpp +msgid "Tap a button to select it. Drag a button to move it." +msgstr "" + +#: src/gui/touchscreeneditor.cpp +msgid "Tap outside to deselect." +msgstr "" + +#: src/gui/touchscreenlayout.cpp src/settings_translation_file.cpp +msgid "Aux1" +msgstr "" + +#: src/gui/touchscreenlayout.cpp +msgid "Change camera" +msgstr "" + +#: src/gui/touchscreenlayout.cpp src/settings_translation_file.cpp +msgid "Dig/punch/use" +msgstr "" + +#: src/gui/touchscreenlayout.cpp +msgid "Drop" +msgstr "" + +#: src/gui/touchscreenlayout.cpp +msgid "Exit" +msgstr "" + +#: src/gui/touchscreenlayout.cpp +msgid "Inventory" +msgstr "" + +#: src/gui/touchscreenlayout.cpp +msgid "Joystick" +msgstr "" + +#: src/gui/touchscreenlayout.cpp src/settings_translation_file.cpp +msgid "Jump" +msgstr "" + +#: src/gui/touchscreenlayout.cpp +msgid "Overflow menu" +msgstr "" + +#: src/gui/touchscreenlayout.cpp src/settings_translation_file.cpp +msgid "Place/use" +msgstr "" + +#: src/gui/touchscreenlayout.cpp +msgid "Range select" +msgstr "" + +#: src/gui/touchscreenlayout.cpp src/settings_translation_file.cpp +msgid "Sneak" +msgstr "" + +#: src/gui/touchscreenlayout.cpp src/settings_translation_file.cpp +msgid "Toggle chat log" +msgstr "" + +#: src/gui/touchscreenlayout.cpp +msgid "Toggle debug" +msgstr "" + +#: src/gui/touchscreenlayout.cpp src/settings_translation_file.cpp +msgid "Toggle fast" +msgstr "" + +#: src/gui/touchscreenlayout.cpp src/settings_translation_file.cpp +msgid "Toggle fly" +msgstr "" + +#: src/gui/touchscreenlayout.cpp src/settings_translation_file.cpp +msgid "Toggle minimap" +msgstr "" + +#: src/gui/touchscreenlayout.cpp src/settings_translation_file.cpp +msgid "Toggle noclip" +msgstr "" + +#: src/gui/touchscreenlayout.cpp src/settings_translation_file.cpp +msgid "Zoom" +msgstr "" + +#: src/network/clientpackethandler.cpp +msgid "" +"Another client is connected with this name. If your client closed " +"unexpectedly, try again in a minute." +msgstr "" + +#: src/network/clientpackethandler.cpp +msgid "Empty passwords are disallowed. Set a password and try again." +msgstr "" + +#: src/network/clientpackethandler.cpp +msgid "Internal server error" +msgstr "" + +#: src/network/clientpackethandler.cpp +msgid "Invalid password" +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 +#: src/script/lua_api/l_mainmenu.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/network/clientpackethandler.cpp +msgid "Player name contains disallowed characters" +msgstr "" + +#: src/network/clientpackethandler.cpp +msgid "Player name not allowed" +msgstr "" + +#: src/network/clientpackethandler.cpp +msgid "Server shutting down" +msgstr "" + +#: src/network/clientpackethandler.cpp +msgid "" +"The server has experienced an internal error. You will now be disconnected." +msgstr "" + +#: src/network/clientpackethandler.cpp +msgid "The server is running in singleplayer mode. You cannot connect." +msgstr "" + +#: src/network/clientpackethandler.cpp +msgid "Too many users" +msgstr "" + +#: src/network/clientpackethandler.cpp +msgid "Unknown disconnect reason." +msgstr "" + +#: src/network/clientpackethandler.cpp +msgid "" +"Your client sent something the server didn't expect. Try reconnecting or " +"updating your client." +msgstr "" + +#: src/network/clientpackethandler.cpp +msgid "" +"Your client's version is not supported.\n" +"Please contact the server administrator." +msgstr "" + +#: src/server.cpp +#, c-format +msgid "%s while shutting down: " +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" +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" +"- topbottom: split screen top/bottom\n" +"- sidebyside: split screen side-by-side\n" +"- crossview: cross-eyed 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 "Adjust the detected display density, used for scaling UI elements." +msgstr "" + +#: src/settings_translation_file.cpp +#, no-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 "" +"All mesh buffers with less than this number of vertices will be merged\n" +"during map rendering. This improves rendering performance." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Allow clouds to look 3D instead of flat." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Allows liquids to be translucent." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Also used for climbing down and descending in water if aux1_descends is " +"disabled." +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 "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 "Anti-aliasing scale" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Antialiasing method" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Anticheat flags" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Anticheat movement tolerance" +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 "" +"Apply dithering to reduce color banding artifacts.\n" +"Dithering significantly increases the size of losslessly-compressed\n" +"screenshots and it works incorrectly if the display or operating system\n" +"performs additional dithering or if the color channels are not quantized\n" +"to 8 bits.\n" +"With OpenGL ES, dithering only works if the shader supports high\n" +"floating-point precision and it may have a higher performance impact." +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 might not be rendered correctly in caves).\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 "" +"At this distance the server will perform a simpler and cheaper occlusion " +"check.\n" +"Smaller values potentially improve performance, at the expense of " +"temporarily visible\n" +"rendering glitches (missing blocks).\n" +"This is especially useful for very large viewing range (upwards of 500).\n" +"Stated in MapBlocks (16 nodes)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Audio" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Automatic jumping" +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 "Autoscaling mode" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Aux1 key for climbing/descending" +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 "Base texture size" +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" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Biome noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Block bounds HUD radius" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Block cull optimize distance" +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 smoothing" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Camera smoothing in cinematic mode" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Capture Tracy zones" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Capture Tracy zones with the profiler's instrumentation.\n" +"You need to build with Tracy to use this, see doc/developing/profiling.md\n" +"for details." +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 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 weblinks" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Chunk size" +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 Debugging" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Client Mesh Chunksize" +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 Modding" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Client-side node lookup range restriction" +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 in menu" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Color depth for post-processing texture" +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 AL and ALC extensions that should not be used.\n" +"Useful for testing. See al_extensions.[h,cpp] for details." +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 Luanti versions,\n" +"so see a full list at https://content.luanti.org/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" +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 "" +"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 "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 "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 "" +"Decide the color depth of the texture used for the post-processing " +"pipeline.\n" +"Reducing this can improve performance, but some effects (e.g. debanding)\n" +"require more than 8 bits to work." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Decrease view range" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Decrease volume" +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 maximum number of forceloaded mapblocks.\n" +"Set this to -1 to disable the limit." +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 "" +"Define the oldest clients allowed to connect.\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.\n" +"This allows for more fine-grained control than " +"strict_protocol_version_checking.\n" +"Luanti still enforces its own internal minimum, and enabling\n" +"strict_protocol_version_checking will effectively override this." +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 size of the sampling grid for FSAA and SSAA antialiasing " +"methods.\n" +"Value of 2 means taking 2x2 = 4 samples." +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, which can help reduce jitter." +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 "Developer Options" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Disable if you only want to instrument with Tracy." +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.\n" +"Set to 0 to disable it entirely." +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 "" +"Draw transparency sorted triangles grouped by their mesh buffers.\n" +"This breaks transparency sorting between mesh buffers, but avoids " +"situations\n" +"where transparency sorting would be very slow otherwise." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Drop item" +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 "Effects" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Enable Automatic Exposure" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Enable Bloom" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Enable Bloom Debug" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Enable Debanding" +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 IPv6 support for server.\n" +"Note that clients will be able to connect with both IPv4 and IPv6.\n" +"Ignored if bind_address is set." +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 Post Processing" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Enable Raytraced Culling" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Enable automatic exposure correction\n" +"When enabled, the post-processing engine will\n" +"automatically adjust to the brightness of the scene,\n" +"simulating the behavior of human eye." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Enable colored shadows for transculent nodes.\n" +"This is expensive." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Enable console window" +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 mouse wheel (scroll) for item selection in hotbar." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Enable random mod loading (mainly used for testing)." +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." +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 updates available indicator on content tab" +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 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 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 debug and error-checking in the OpenGL driver." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Enables smooth scrolling." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Enables the post processing pipeline." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Enables the touchscreen controls, allowing you to play the game with a " +"touchscreen.\n" +"\"auto\" means that the touchscreen controls will be enabled and disabled\n" +"automatically depending on the last used input method." +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 behavior.\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 "Exposure compensation" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "FPS" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "FPS when unfocused" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Factor noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fallback font path" +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 "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 "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 "" +"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 "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 "Fog" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fog start" +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 Full-Screen Background Color" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Formspec Full-Screen Background Opacity" +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 "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" +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 "Gamepads" +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 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 "" +"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." +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 slot 1" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 10" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 11" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 12" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 13" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 14" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 15" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 16" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 17" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 18" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 19" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 2" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 20" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 21" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 22" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 23" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 24" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 25" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 26" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 27" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 28" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 29" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 30" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 31" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 32" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 4" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 5" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 6" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 7" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 8" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 9" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar: Enable mouse wheel for selection" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar: Invert mouse wheel direction" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar: select next item" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar: select previous item" +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." +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 and you have ContentDB packages installed, Luanti may contact " +"ContentDB to\n" +"check for package updates when opening the mainmenu." +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, actions are recorded for rollback.\n" +"This option is only read when server starts." +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, players cannot join without a password or change theirs to an " +"empty password." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"If enabled, server account registration is separate from login in the UI.\n" +"If disabled, connecting to a server will automatically register a new " +"account." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "If enabled, the \"Aux1\" key will toggle when pressed." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"If enabled, the \"Sneak\" key will toggle when pressed.\n" +"This functionality is ignored when fly is enabled." +msgstr "" + +#: src/settings_translation_file.cpp +#, no-c-format +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 by 50-80%. Clients will no longer receive most\n" +"invisible blocks, so that the utility of noclip mode is reduced." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"If enabled, you can place nodes 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 +#, no-c-format +msgid "In-game chat console height, between 0.1 (10%) and 1.0 (100%)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Increase view range" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Increase volume" +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 core.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 "Interaction style" +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 "Inventory items animations" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Invert mouse" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Invert mouse wheel (scroll) direction for item selection in hotbar." +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 "Jumping speed" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Key for decrementing the selected value in Quicktune." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for digging, punching or using something.\n" +"(Note: The actual meaning might vary on a per-game basis.)" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Key for incrementing the selected value in Quicktune." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Key for moving fast in fast mode." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Key for opening the chat window to type commands." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Key for opening the chat window to type local commands." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for placing an item/block or for using something.\n" +"(Note: The actual meaning might vary on a per-game basis.)" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Key for switching to the next entry in Quicktune." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Key for switching to the previous entry in Quicktune." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Key for toggling the camera update. Only usable with 'debug' privilege." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Key for toggling the display of mapblock boundaries." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Key for toggling the display of the profiler. Used for development." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Keybindings" +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 "Leaves style" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Leaves style:\n" +"- Fancy: all faces visible\n" +"- Simple: only outer faces\n" +"- Opaque: disable transparency" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Length of a server tick (the interval at which everything is generally " +"updated),\n" +"stated in seconds.\n" +"Does not apply to sessions hosted from the client menu.\n" +"This is a lower bound, i.e. server steps may not be shorter than this, but\n" +"they are often longer." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Length of liquid waves." +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" +"- (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 reflections" +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 "Local command" +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 "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.\n" +"The 'temples' flag disables generation of desert temples. Normal dungeons " +"will appear instead." +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 generation threads" +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." +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 mapblocks for client to be kept in memory.\n" +"Note that there is an internal dynamic minimum number of blocks that\n" +"won't be deleted, depending on the current view range.\n" +"Set to -1 for no limit." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Maximum number of packets sent per send step in the low-level networking " +"code.\n" +"You generally don't need to change this, however busy servers may benefit " +"from a higher 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 client's outgoing chat queue" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Maximum size of the client's outgoing 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 "Measure time samples" +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 scan height" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Minimum dig repetition interval" +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 vertex count for mesh buffers" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mipmapping" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Miscellaneous" +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 "" +"Modifier key bind for closing your world.\n" +"Requires ESC + the selected key to work." +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 "Move backward" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Move forward" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Move left" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Move right" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Movement threshold" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mud noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mute" +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, a client connecting with this name is admin.\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 "" +"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 "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 "Number of messages a player may send per 10 seconds." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Number of threads to use for mesh generation.\n" +"Value of 0 (default) will let Luanti automatically choose the number of " +"threads." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Occlusion Culler" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Occlusion Culling" +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 chat" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Open inventory" +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 "OpenGL debug" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Optimize GUI for touchscreens" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Optional override for chat weblink color." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Other Effects" +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 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 "Place repetition interval" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Player transfer distance" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Poisson filtering" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Post Processing" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Prevent digging and placing from repeating when holding the respective " +"buttons.\n" +"Enable this when you dig or place too often by accident.\n" +"On touchscreens, this only affects digging." +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 "Prometheus listener address" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Prometheus listener address.\n" +"If Luanti is compiled with Prometheus support, this setting\n" +"enables the metrics listener for Prometheus on that address.\n" +"By default you can fetch metrics from http://127.0.0.1:30000/metrics.\n" +"An empty value disables the metrics listener." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Proportion of large caves that contain liquid." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Protocol version minimum" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Punch gesture" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Quicktune: decrement value" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Quicktune: increment value" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Quicktune: select next entry" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Quicktune: select previous entry" +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 "Radius to use when the block bounds HUD feature is set to near blocks." +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 "Random mod load order" +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 "Remember screen size" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Remote media" +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 "Return to Main Menu" +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 "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 "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.\n" +"If true, screen size is saved in screen_w and screen_h, and whether the " +"window\n" +"is maximized is stored in window_maximized.\n" +"(Autosaving window_maximized only works if compiled with SDL.)" +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" +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 "" +"Select the antialiasing method to apply.\n" +"\n" +"* None - No antialiasing (default)\n" +"\n" +"* FSAA - Hardware-provided full-screen antialiasing\n" +"A.K.A multi-sample antialiasing (MSAA)\n" +"Smoothens out block edges but does not affect the insides of textures.\n" +"\n" +"If Post Processing is disabled, changing FSAA requires a restart.\n" +"Also, if Post Processing is disabled, FSAA will not work together with\n" +"undersampling or a non-default \"3d_mode\" setting.\n" +"\n" +"* FXAA - Fast approximate antialiasing\n" +"Applies a post-processing filter to detect and smoothen high-contrast " +"edges.\n" +"Provides balance between speed and image quality.\n" +"\n" +"* SSAA - Super-sampling antialiasing\n" +"Renders higher-resolution image of the scene, then scales down to reduce\n" +"the aliasing effects. This is the slowest and the most accurate method." +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 "" +"Send names of online players to the serverlist. If disabled only the player " +"count is revealed." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Send player names to the server list" +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 anticheat configuration.\n" +"Flags are positive. Uncheck the flag to disable corresponding anticheat " +"module." +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 default tilt of Sun/Moon orbit in degrees.\n" +"Games may change orbit tilt via API.\n" +"Value of 0 means no tilt / vertical orbit." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Set the exposure compensation in EV units.\n" +"Value of 0.0 (default) means no exposure compensation.\n" +"Range: from -1 to 1.0" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Set the language. By default, the system language is used.\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 to true to enable Shadow Mapping." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Set to true to enable bloom effect.\n" +"Bright colors will bleed over the neighboring objects." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Set to true to enable volumetric lighting effect (a.k.a. \"Godrays\")." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Set to true to enable waving leaves." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Set to true to enable waving liquids (like water)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Set to true to enable waving plants." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Set to true to render debugging breakdown of the bloom effect.\n" +"In debug mode, the screen is split into 4 quadrants:\n" +"top-left - processed base image, top-right - final image\n" +"bottom-left - raw base image, bottom-right - bloom texture." +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 "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 "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 "" +"Side length of a cube of map blocks that the client will consider together\n" +"when generating meshes.\n" +"Larger values increase the utilization of the GPU by reducing the number of\n" +"draw calls, benefiting especially high-end GPUs.\n" +"Systems with a low-end GPU (or no GPU) would benefit from smaller values." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Simulate translucency when looking at foliage in the sunlight." +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 "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 "Smooth scrolling" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Smooths rotation of camera when in cinematic mode, 0 to disable. Enter " +"cinematic mode by using the key set in Controls." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Smooths rotation of camera, also called look or mouse smoothing. 0 to " +"disable." +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 clouds" +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 "Sound Extensions Blacklist" +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 the shadow map over a given number of frames.\n" +"Higher values might make shadows laggy, lower values\n" +"will consume more resources." +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 spawn point" +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, 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 "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 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 delay in milliseconds after which a touch interaction is considered a " +"long tap." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"The file path relative to your world path in which profiles will be saved to." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"The gesture for punching players/entities.\n" +"This can be overridden by games and mods.\n" +"\n" +"* Short tap\n" +"Easy to use and well-known from other games that shall not be named.\n" +"\n" +"* Long tap\n" +"Known from the classic Luanti mobile controls.\n" +"Combat is more or less impossible." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "The identifier of the joystick to use" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"The kind of digging/placing controls used.\n" +"\n" +"* Tap\n" +"Long/short tap anywhere on the screen to interact.\n" +"Interaction happens at finger position.\n" +"\n" +"* Tap with crosshair\n" +"Long/short tap anywhere on the screen to interact.\n" +"Interaction happens at crosshair position.\n" +"\n" +"* Buttons with crosshair\n" +"Use dedicated dig/place buttons to interact.\n" +"Interaction happens at crosshair position." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"The length in pixels after which a touch interaction is considered movement." +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)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"The minimum time in seconds it takes between digging nodes when holding\n" +"the dig button." +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" +"Note: A restart is required after changing this!\n" +"OpenGL is the default for desktop, and OGLES2 for Android." +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 "Threshold for long taps" +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 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 Aux1 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Toggle HUD" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Toggle Sneak key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Toggle automatic forward" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Toggle block bounds" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Toggle camera mode" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Toggle camera update" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Toggle cinematic mode" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Toggle debug info" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Toggle fog" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Toggle fullscreen" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Toggle large chat console" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Toggle pitchmove" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Toggle profiler" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Toggle unlimited view range" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Tolerance of movement cheat detector.\n" +"Increase the value if players experience stuttery movement." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Tooltip delay" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Touchscreen" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Touchscreen controls" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Touchscreen sensitivity" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Touchscreen sensitivity multiplier." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Tradeoffs for performance" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Translucent foliage" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Translucent liquids" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Transparency Sorting Distance" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Transparency Sorting Group by Buffers" +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 "" +"Type of occlusion_culler\n" +"\n" +"\"loops\" is the legacy algorithm with nested loops and O(n³) complexity\n" +"\"bfs\" is the new algorithm based on breadth-first-search and side culling\n" +"\n" +"This setting should only be changed if you have performance problems." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"URL to JSON file which provides information about the newest Luanti " +"release.\n" +"If this is empty the engine will never check for updates." +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.\n" +"Note: Undersampling is currently not supported if the \"3d_mode\" setting is " +"set\n" +"to a non-default value." +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 "Update information URL" +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 a cloud animation for the main menu background." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Use anisotropic filtering when looking at textures from an angle.\n" +"This provides a significant improvement when used together with mipmapping." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Use bilinear filtering when scaling textures." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Use mipmaps when scaling 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 raytraced occlusion culling in the new culler.\n" +"This flag enables use of raytraced occlusion culling test for\n" +"client mesh sizes smaller than 4x4x4 map blocks." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Use smooth cloud shading." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Use trilinear filtering when scaling textures.\n" +"If both bilinear and trilinear filtering are enabled, trilinear filtering\n" +"is applied." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"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 "User Interfaces" +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. Your system may still force VSync on even " +"if this is disabled." +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 "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 multiplier when the window is unfocused." +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 "Volume when unfocused" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Volumetric lighting" +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 enabled, liquid reflections are simulated." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"When enabled, the GUI is optimized to be more usable on touchscreens.\n" +"Whether this is enabled by default depends on your hardware form-factor." +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 using bilinear/trilinear filtering, low-resolution textures\n" +"can be blurred, so this option automatically upscales them to preserve\n" +"crisp pixels. This defines the minimum texture size for the upscaled " +"textures;\n" +"higher values look sharper, but require more memory.\n" +"This setting is ONLY applied if any of the mentioned filters are 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 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 the window is maximized." +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.\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)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Width component of the initial window size." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Width of the selection box lines around nodes." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Will also disable autoforward, when active." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Window maximized" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Windows systems only: Start Luanti 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 based 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/bar/luanti.po b/po/bar/luanti.po index db7764ebf..efc746587 100644 --- a/po/bar/luanti.po +++ b/po/bar/luanti.po @@ -7,9 +7,9 @@ msgid "" msgstr "" "Project-Id-Version: luanti\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-07-11 19:59+0200\n" -"PO-Revision-Date: 2025-06-08 13:07+0000\n" -"Last-Translator: gogu \n" +"POT-Creation-Date: 2025-09-23 19:19+0200\n" +"PO-Revision-Date: 2025-08-02 09:02+0000\n" +"Last-Translator: Krock \n" "Language-Team: Bavarian \n" "Language: bar\n" @@ -17,7 +17,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 5.12-dev\n" +"X-Generator: Weblate 5.13-dev\n" #: builtin/client/chatcommands.lua msgid "Clear the out chat queue" @@ -1202,10 +1202,6 @@ msgstr "" msgid "New" msgstr "Noi" -#: builtin/mainmenu/tab_local.lua -msgid "No world created or selected!" -msgstr "" - #: builtin/mainmenu/tab_local.lua msgid "Play Game" msgstr "" @@ -1785,10 +1781,6 @@ msgstr "" msgid "Profiler shown (page %d of %d)" msgstr "" -#: src/client/keycode.cpp -msgid "Apps" -msgstr "Programme" - #: src/client/keycode.cpp msgid "Backspace" msgstr "" @@ -1819,45 +1811,19 @@ msgid "Down Arrow" msgstr "" #: src/client/keycode.cpp -msgid "End" -msgstr "Ende" - -#: src/client/keycode.cpp -msgid "Erase EOF" +msgid "End Key" msgstr "" #: src/client/keycode.cpp -msgid "Execute" -msgstr "" - -#: src/client/keycode.cpp -msgid "Help" +#, fuzzy +msgid "Help Key" msgstr "Hilfe" #: src/client/keycode.cpp -msgid "Home" +#, fuzzy +msgid "Home Key" msgstr "Hoam" -#: 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 "Infügn" @@ -1867,7 +1833,7 @@ msgid "Left Arrow" msgstr "" #: src/client/keycode.cpp -msgid "Left Button" +msgid "Left Click" msgstr "" #: src/client/keycode.cpp @@ -1882,17 +1848,25 @@ msgstr "" msgid "Left Shift" msgstr "" +#. ~ Name of key #: src/client/keycode.cpp msgid "Left Windows" msgstr "" -#. ~ Key name, common on Windows keyboards #: src/client/keycode.cpp msgid "Menu Key" msgstr "" #: src/client/keycode.cpp -msgid "Middle Button" +msgid "Middle Click" +msgstr "" + +#: src/client/keycode.cpp +msgid "Mouse X1" +msgstr "" + +#: src/client/keycode.cpp +msgid "Mouse X2" msgstr "" #: src/client/keycode.cpp @@ -1959,10 +1933,6 @@ msgstr "" msgid "Numpad 9" msgstr "" -#: src/client/keycode.cpp -msgid "OEM Clear" -msgstr "" - #: src/client/keycode.cpp msgid "Page Down" msgstr "" @@ -1994,7 +1964,7 @@ msgid "Right Arrow" msgstr "" #: src/client/keycode.cpp -msgid "Right Button" +msgid "Right Click" msgstr "" #: src/client/keycode.cpp @@ -2009,6 +1979,7 @@ msgstr "" msgid "Right Shift" msgstr "" +#. ~ Name of key #: src/client/keycode.cpp msgid "Right Windows" msgstr "" @@ -2017,47 +1988,27 @@ msgstr "" msgid "Scroll Lock" msgstr "" -#. ~ Key name #: src/client/keycode.cpp -msgid "Select" +#, fuzzy +msgid "Select Key" msgstr "Auswouln" #: src/client/keycode.cpp msgid "Shift Key" msgstr "" -#: src/client/keycode.cpp -msgid "Sleep" -msgstr "Schlouf" - -#: src/client/keycode.cpp -msgid "Snapshot" -msgstr "" - #: src/client/keycode.cpp msgid "Space" msgstr "Laartaste" #: src/client/keycode.cpp -msgid "Tab" -msgstr "Tabulator" +msgid "Tab Key" +msgstr "" #: src/client/keycode.cpp msgid "Up Arrow" msgstr "" -#: src/client/keycode.cpp -msgid "X Button 1" -msgstr "" - -#: src/client/keycode.cpp -msgid "X Button 2" -msgstr "" - -#: src/client/keycode.cpp -msgid "Zoom Key" -msgstr "" - #: src/client/minimap.cpp msgid "Minimap hidden" msgstr "" @@ -2287,7 +2238,7 @@ msgstr "" #: src/network/clientpackethandler.cpp src/script/lua_api/l_client.cpp #: src/script/lua_api/l_mainmenu.cpp msgid "LANG_CODE" -msgstr "" +msgstr "bar" #: src/network/clientpackethandler.cpp msgid "" @@ -2449,12 +2400,11 @@ msgstr "" msgid "" "3D support.\n" "Currently supported:\n" -"- none: no 3d output.\n" -"- anaglyph: cyan/magenta color 3d.\n" -"- interlaced: odd/even line based polarization screen support.\n" -"- topbottom: split screen top/bottom.\n" -"- sidebyside: split screen side by side.\n" -"- crossview: Cross-eyed 3d" +"- none: no 3D output\n" +"- anaglyph: cyan/magenta color 3D\n" +"- topbottom: split screen top/bottom\n" +"- sidebyside: split screen side-by-side\n" +"- crossview: cross-eyed 3D" msgstr "" #: src/settings_translation_file.cpp @@ -2775,6 +2725,17 @@ msgstr "" msgid "Camera smoothing in cinematic mode" msgstr "" +#: src/settings_translation_file.cpp +msgid "Capture Tracy zones" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Capture Tracy zones with the profiler's instrumentation.\n" +"You need to build with Tracy to use this, see doc/developing/profiling.md\n" +"for details." +msgstr "" + #: src/settings_translation_file.cpp msgid "Cave noise" msgstr "" @@ -3255,6 +3216,10 @@ msgstr "" msgid "Developer Options" msgstr "" +#: src/settings_translation_file.cpp +msgid "Disable if you only want to instrument with Tracy." +msgstr "" + #: src/settings_translation_file.cpp msgid "Disallow empty passwords" msgstr "" @@ -4932,6 +4897,10 @@ msgstr "" msgid "Maximum users" msgstr "" +#: src/settings_translation_file.cpp +msgid "Measure time samples" +msgstr "" + #: src/settings_translation_file.cpp msgid "Message of the day" msgstr "" @@ -6796,3 +6765,15 @@ msgstr "" #: src/settings_translation_file.cpp msgid "cURL parallel limit" msgstr "" + +#~ msgid "Apps" +#~ msgstr "Programme" + +#~ msgid "End" +#~ msgstr "Ende" + +#~ msgid "Sleep" +#~ msgstr "Schlouf" + +#~ msgid "Tab" +#~ msgstr "Tabulator" diff --git a/po/be/luanti.po b/po/be/luanti.po index 357fd7a0d..1d20d4792 100644 --- a/po/be/luanti.po +++ b/po/be/luanti.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Belarusian (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-07-11 19:59+0200\n" +"POT-Creation-Date: 2025-09-23 19:19+0200\n" "PO-Revision-Date: 2019-11-19 23:04+0000\n" "Last-Translator: Viktar Vauchkevich \n" "Language-Team: Belarusian \n" +"POT-Creation-Date: 2025-09-23 19:19+0200\n" +"PO-Revision-Date: 2025-09-22 17:01+0000\n" +"Last-Translator: 109247019824 " +"<109247019824@users.noreply.hosted.weblate.org>\n" "Language-Team: Bulgarian \n" "Language: bg\n" @@ -13,7 +13,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 5.13-dev\n" +"X-Generator: Weblate 5.14-dev\n" #: builtin/client/chatcommands.lua msgid "Clear the out chat queue" @@ -224,7 +224,7 @@ msgstr "Назад" #: builtin/common/settings/dlg_settings.lua msgid "Buttons with crosshair" -msgstr "Бутони с кръстче" +msgstr "Бутони с мерник" #: builtin/common/settings/dlg_settings.lua src/gui/touchscreenlayout.cpp #: src/settings_translation_file.cpp @@ -295,7 +295,7 @@ msgstr "Докосване" #: builtin/common/settings/dlg_settings.lua msgid "Tap with crosshair" -msgstr "Докосване с кръстче" +msgstr "Докосване с мерник" #: builtin/common/settings/dlg_settings.lua msgid "Touchscreen layout" @@ -610,9 +610,8 @@ msgid "Website" msgstr "Страница" #: builtin/mainmenu/content/dlg_package.lua -#, fuzzy msgid "by $1" -msgstr "$1 от $2" +msgstr "от $1" #: builtin/mainmenu/content/dlg_package.lua msgid "by $1 — $2 downloads — +$3 / $4 / -$5" @@ -730,11 +729,11 @@ 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 "Допълнителен терен" +msgstr "Допълнителен релеф" #: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp msgid "Altitude chill" @@ -790,7 +789,7 @@ msgstr "Подземия" #: builtin/mainmenu/dlg_create_world.lua msgid "Flat terrain" -msgstr "Равен терен" +msgstr "Равна местност" #: builtin/mainmenu/dlg_create_world.lua msgid "Floating landmasses in the sky" @@ -802,7 +801,7 @@ msgstr "Небесни острови (експериментално)" #: builtin/mainmenu/dlg_create_world.lua msgid "Generate non-fractal terrain: Oceans and underground" -msgstr "Създаване на нефрактален терен: Морета и подземен свят" +msgstr "Създаване на нефрактална местност: Морета и подземен свят" #: builtin/mainmenu/dlg_create_world.lua msgid "Hills" @@ -830,15 +829,15 @@ msgstr "Ниската влажност и горещините причиняв #: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp msgid "Mapgen" -msgstr "Създаване на карти" +msgstr "Създаване на светове" #: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp msgid "Mapgen flags" -msgstr "Настройки за карти" +msgstr "Настройки на света" #: builtin/mainmenu/dlg_create_world.lua msgid "Mapgen-specific flags" -msgstr "Специфични за генератора настройки" +msgstr "Специфични за вида свят настройки" #: builtin/mainmenu/dlg_create_world.lua msgid "Mountains" @@ -1235,10 +1234,6 @@ msgstr "" msgid "New" msgstr "Създаване" -#: builtin/mainmenu/tab_local.lua -msgid "No world created or selected!" -msgstr "Не е създаден или избран свят!" - #: builtin/mainmenu/tab_local.lua msgid "Play Game" msgstr "Започване на игра" @@ -1367,7 +1362,7 @@ msgstr "Готово!" #: src/client/client.cpp #, c-format msgid "Failed to save screenshot to \"%s\"" -msgstr "" +msgstr "Грешка при запазване на екранната снимка в „%s“" #: src/client/client.cpp msgid "Initializing nodes" @@ -1386,9 +1381,9 @@ msgid "Rebuilding shaders..." msgstr "Пресъздаване на шейдери…" #: src/client/client.cpp -#, fuzzy, c-format +#, c-format msgid "Saved screenshot to \"%s\"" -msgstr "Екранни снимки" +msgstr "Екранната снимка е запазена в „%s“" #: src/client/clientlauncher.cpp msgid "Could not find or load game: " @@ -1613,7 +1608,7 @@ msgstr "Режимът „промяна на височината“ е вкл #: src/client/game.cpp msgid "Profiler graph shown" -msgstr "Графиката на профилатора е показана" +msgstr "Графиката на инструмента за профилиране е показана" #: src/client/game.cpp msgid "Resolving address..." @@ -1764,7 +1759,7 @@ msgstr "" "При затворено меню:\n" "- плъзгане на пръст: оглеждане\n" "- докосване: поставяне/нанасяне на удар/използване (по подразбиране)\n" -"- дълго докосване: копаене/използване (по подразбиране)\n" +"- продължително докосване: копаене/използване (по подразбиране)\n" "При отворено меню/инвентар:\n" "- двойно докосване (отвън):\n" " → затваряне\n" @@ -1839,16 +1834,12 @@ msgstr "Игровият интерфейс е видим" #: src/client/gameui.cpp msgid "Profiler hidden" -msgstr "Профилаторът е скрит" +msgstr "Инструментът за профилиране е скрит" #: src/client/gameui.cpp #, c-format msgid "Profiler shown (page %d of %d)" -msgstr "Профилаторът е видим (страница %d от %d)" - -#: src/client/keycode.cpp -msgid "Apps" -msgstr "Приложения" +msgstr "Инструментът за профилиране е видим (страница %d от %d)" #: src/client/keycode.cpp msgid "Backspace" @@ -1880,44 +1871,19 @@ msgid "Down Arrow" msgstr "Надолу" #: src/client/keycode.cpp -msgid "End" -msgstr "End" +#, fuzzy +msgid "End Key" +msgstr "Клавиш Меню" #: src/client/keycode.cpp -msgid "Erase EOF" -msgstr "Премахване EOF" +#, fuzzy +msgid "Help Key" +msgstr "Delete" #: src/client/keycode.cpp -msgid "Execute" -msgstr "Изпълняване" - -#: 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: Приемане" - -#: src/client/keycode.cpp -msgid "IME Convert" -msgstr "IME: Превъщане" - -#: src/client/keycode.cpp -msgid "IME Escape" -msgstr "IME: Избягване" - -#: src/client/keycode.cpp -msgid "IME Mode Change" -msgstr "IME: Смяна на режима" - -#: src/client/keycode.cpp -msgid "IME Nonconvert" -msgstr "IME: Без преобразуване" +#, fuzzy +msgid "Home Key" +msgstr "Zoom" #: src/client/keycode.cpp msgid "Insert" @@ -1928,8 +1894,9 @@ msgid "Left Arrow" msgstr "Наляво" #: src/client/keycode.cpp -msgid "Left Button" -msgstr "Ляв бутон" +#, fuzzy +msgid "Left Click" +msgstr "Ляв Control" #: src/client/keycode.cpp msgid "Left Control" @@ -1943,18 +1910,26 @@ msgstr "Ляв Menu" msgid "Left Shift" msgstr "Ляв Shift" +#. ~ Name of key #: src/client/keycode.cpp msgid "Left Windows" msgstr "Ляв Windows" -#. ~ Key name, common on Windows keyboards #: src/client/keycode.cpp msgid "Menu Key" msgstr "Клавиш Меню" #: src/client/keycode.cpp -msgid "Middle Button" -msgstr "Среден бутон" +msgid "Middle Click" +msgstr "" + +#: src/client/keycode.cpp +msgid "Mouse X1" +msgstr "" + +#: src/client/keycode.cpp +msgid "Mouse X2" +msgstr "" #: src/client/keycode.cpp msgid "Num Lock" @@ -2020,10 +1995,6 @@ msgstr "Цифрова клавиатура 8" msgid "Numpad 9" msgstr "Цифрова клавиатура 9" -#: src/client/keycode.cpp -msgid "OEM Clear" -msgstr "OEM Изчистване" - #: src/client/keycode.cpp msgid "Page Down" msgstr "Page Down" @@ -2055,8 +2026,9 @@ msgid "Right Arrow" msgstr "Надясно" #: src/client/keycode.cpp -msgid "Right Button" -msgstr "Десен бутон" +#, fuzzy +msgid "Right Click" +msgstr "Десен Control" #: src/client/keycode.cpp msgid "Right Control" @@ -2070,6 +2042,7 @@ msgstr "Десен Menu" msgid "Right Shift" msgstr "Десен Shift" +#. ~ Name of key #: src/client/keycode.cpp msgid "Right Windows" msgstr "Десен Windows" @@ -2078,47 +2051,28 @@ msgstr "Десен Windows" msgid "Scroll Lock" msgstr "Scroll Lock" -#. ~ Key name #: src/client/keycode.cpp -msgid "Select" -msgstr "Избиране" +#, fuzzy +msgid "Select Key" +msgstr "Delete" #: src/client/keycode.cpp msgid "Shift Key" msgstr "Shift" -#: 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 "Табулатор" +#, fuzzy +msgid "Tab Key" +msgstr "Break" #: src/client/keycode.cpp msgid "Up Arrow" msgstr "Нагоре" -#: src/client/keycode.cpp -msgid "X Button 1" -msgstr "Доп. бутон 1" - -#: src/client/keycode.cpp -msgid "X Button 2" -msgstr "Доп. бутон 2" - -#: src/client/keycode.cpp -msgid "Zoom Key" -msgstr "Zoom" - #: src/client/minimap.cpp msgid "Minimap hidden" msgstr "Картата е скрита" @@ -2279,7 +2233,7 @@ msgstr "Инвентар" #: src/gui/touchscreenlayout.cpp msgid "Joystick" -msgstr "Джойстик" +msgstr "Контролер" #: src/gui/touchscreenlayout.cpp src/settings_translation_file.cpp msgid "Jump" @@ -2546,18 +2500,18 @@ msgstr "" #: src/settings_translation_file.cpp msgid "3D noise that determines number of dungeons per mapchunk." -msgstr "Триизмерен шум, определящ броя на подземията на парче от картата." +msgstr "Триизмерен шум, определящ броя на подземията на парче от света." #: src/settings_translation_file.cpp +#, fuzzy msgid "" "3D support.\n" "Currently supported:\n" -"- none: no 3d output.\n" -"- anaglyph: cyan/magenta color 3d.\n" -"- interlaced: odd/even line based polarization screen support.\n" -"- topbottom: split screen top/bottom.\n" -"- sidebyside: split screen side by side.\n" -"- crossview: Cross-eyed 3d" +"- none: no 3D output\n" +"- anaglyph: cyan/magenta color 3D\n" +"- topbottom: split screen top/bottom\n" +"- sidebyside: split screen side-by-side\n" +"- crossview: cross-eyed 3D" msgstr "" "Триизмерна поддръжка.\n" "В момента се поддържа:\n" @@ -2598,7 +2552,7 @@ msgstr "Ограничение на времето на ABM" #: src/settings_translation_file.cpp msgid "Absolute limit of queued blocks to emerge" -msgstr "Абсолютно ограничение на опашката от чакащи за показване блокове" +msgstr "Абсолютно ограничение на чакащи блокове" #: src/settings_translation_file.cpp msgid "Acceleration in air" @@ -2676,6 +2630,7 @@ msgid "" "Also used for climbing down and descending in water if aux1_descends is " "disabled." msgstr "" +"Също се използв за слизане и спускане във вода ако aux1_descends е изключено." #: src/settings_translation_file.cpp msgid "" @@ -2797,7 +2752,7 @@ msgstr "" "изчертани правилно).\n" "Задаване на стойността по-голяма от max_block_send_distance изключва\n" "тази оптимизация.\n" -"Изразено в MapBlocks (16 възела)." +"Изразено в блокове от света (16 възела)." #: src/settings_translation_file.cpp msgid "" @@ -2814,7 +2769,7 @@ msgstr "" "подобряват производителността за сметка на временно видими дефекти (липсващи " "блокове).\n" "Това е особено полезно за много голям обхват на видимостта (над 500).\n" -"Изразено в MapBlocks (16 възела)." +"Изразено в блокове от света (16 възела)." #: src/settings_translation_file.cpp msgid "Audio" @@ -2932,6 +2887,17 @@ msgstr "Заглаждане на камерата" msgid "Camera smoothing in cinematic mode" msgstr "Заглаждане на камерата в кинематографичен режим" +#: src/settings_translation_file.cpp +msgid "Capture Tracy zones" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Capture Tracy zones with the profiler's instrumentation.\n" +"You need to build with Tracy to use this, see doc/developing/profiling.md\n" +"for details." +msgstr "" + #: src/settings_translation_file.cpp msgid "Cave noise" msgstr "Шум за пещери" @@ -2994,7 +2960,7 @@ msgstr "Команди в полето с разговори" #: src/settings_translation_file.cpp msgid "Chat font size" -msgstr "Размер на шрифта за разговори" +msgstr "Размер на шрифт за разговори" #: src/settings_translation_file.cpp msgid "Chat log level" @@ -3062,7 +3028,7 @@ msgstr "Модификация на клиента (CSM)" #: src/settings_translation_file.cpp msgid "Client-side node lookup range restriction" -msgstr "Ограничение на разстоянието на търсене на възли от клиента" +msgstr "Ограничение на търсене на възли от клиента" #: src/settings_translation_file.cpp msgid "Climbing speed" @@ -3098,7 +3064,7 @@ msgid "" "Useful for testing. See al_extensions.[h,cpp] for details." msgstr "" "Списък с всички AL и ACL разширения, разделени със запетая,\n" -" които не трябва да бъдат използвани.\n" +"които не трябва да бъдат използвани.\n" "Полезно при изпитване на кода. За подробности вижте al_extensions.[h,cpp]." #: src/settings_translation_file.cpp @@ -3134,9 +3100,9 @@ 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())." +"Списък с доверени модофикации, разделени със запетая, които\n" +"имат достъп до опасните възможности даже при включена\n" +"защита (чрез request_insecure_environment())." #: src/settings_translation_file.cpp msgid "Command" @@ -3150,7 +3116,7 @@ msgid "" "9 - best compression, slowest" msgstr "" "Ниво на компресия, използвана при запазване на\n" -"блокове от картата на носителя.\n" +"блокове от света на носителя.\n" "• -1 – подразбирана компресия\n" "• 0 – най-малка компресия, най-бърза\n" "• 9 – най-добра компресия, най-бавна" @@ -3163,7 +3129,7 @@ msgid "" "9 - best compression, slowest" msgstr "" "Ниво на компресия, използвана при изпращане на\n" -"блокове от картата към клиента.\n" +"блокове от света към клиента.\n" "• -1 – подразбирана компресия\n" "• 0 – най-малка компресия, най-бърза\n" "• 9 – най-добра компресия, най-бавна" @@ -3202,7 +3168,7 @@ msgstr "Забранителен списък с флагове на ContentDB" #: src/settings_translation_file.cpp msgid "ContentDB Max Concurrent Downloads" -msgstr "Максимален брой едновременни изтегляния от ContentDB" +msgstr "Брой едновременни изтегляния от ContentDB" #: src/settings_translation_file.cpp msgid "ContentDB URL" @@ -3224,14 +3190,16 @@ msgid "" "Controls sinking speed in liquid when idling. Negative values will cause\n" "you to rise instead." msgstr "" +"Скорост на потъване в течност при бездействие.\n" +"Отрицателната стойност ще причинява издигане." #: 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 "" @@ -3239,42 +3207,50 @@ msgid "" "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 "Crosshair alpha" -msgstr "" +msgstr "Прозрачност на мерника" #: src/settings_translation_file.cpp 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 "" +msgstr "Цвят на мерника" #: src/settings_translation_file.cpp msgid "" "Crosshair color (R,G,B).\n" "Also controls the object crosshair color" msgstr "" +"Цвят на мерника (R, G, B).\n" +"Управлява цвета на обекта на мерника" #: src/settings_translation_file.cpp msgid "Debug log file size threshold" -msgstr "" +msgstr "Ограничение на размера на файла с дневника" #: src/settings_translation_file.cpp msgid "Debug log level" -msgstr "" +msgstr "Подробност на дневника" #: src/settings_translation_file.cpp msgid "Debugging" -msgstr "" +msgstr "Отстраняване на грешки" #: src/settings_translation_file.cpp msgid "" @@ -3283,6 +3259,11 @@ msgid "" "Reducing this can improve performance, but some effects (e.g. debanding)\n" "require more than 8 bits to work." msgstr "" +"Определя дълбочината на цвета на текстурата, използвана\n" +"в конвейра за последваща обработка.\n" +"Намаляването на стойността може да подобри производителността,\n" +"но някои ефекти (напр. премахване на лентов ефект) изискват\n" +"повече от 8 бита." #: src/settings_translation_file.cpp msgid "Decrease view range" @@ -3294,21 +3275,24 @@ 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 maximum number of forceloaded mapblocks.\n" "Set this to -1 to disable the limit." msgstr "" +"Стандартно ограничение на броя принудително заредеждани\n" +"блокове от света.\n" +"Задайте -1 за премахване на ограничението." #: src/settings_translation_file.cpp msgid "Default password" -msgstr "" +msgstr "Подразбирана парола" #: src/settings_translation_file.cpp msgid "Default privileges" @@ -3316,11 +3300,11 @@ msgstr "Подразбирани права" #: src/settings_translation_file.cpp msgid "Default report format" -msgstr "Формат на отчета по подразбиране" +msgstr "Подразбиран формат на отчет" #: src/settings_translation_file.cpp msgid "Default stack size" -msgstr "" +msgstr "Подразбиран размер на стека" #: src/settings_translation_file.cpp msgid "" @@ -3328,6 +3312,9 @@ msgid "" "This simulates the soft shadows effect by applying a PCF or Poisson disk\n" "but also uses more resources." msgstr "" +"Определя качеството на филтриране на сянката.\n" +"Симулира ефекта на меките сенки, като прилага PCF или\n" +"диск на Поасон, но изисква повече ресурси." #: src/settings_translation_file.cpp msgid "" @@ -3341,34 +3328,42 @@ msgid "" "Luanti still enforces its own internal minimum, and enabling\n" "strict_protocol_version_checking will effectively override this." msgstr "" +"Определя най-старите клиенти, които имат право да се свързват.\n" +"По-старите клиенти са съвместими в смисъл, че няма да се сриват\n" +"при свързване с нови сървъри, но може да не поддържат всички нови\n" +"възможности, които очаквате. Дава възможност по-точен контрол\n" +"от strict_protocol_version_checking.\n" +"Luanti все пак налага своя собствен вътрешен минимум, а включването\n" +"на strict_protocol_version_checking всъщност ще отмени тази настройка." #: src/settings_translation_file.cpp msgid "Defines areas where trees have apples." -msgstr "" +msgstr "Определя областите, в които дърветата имат ябълки." #: src/settings_translation_file.cpp msgid "Defines areas with sandy beaches." -msgstr "" +msgstr "Определя областите с пясъчни плажове." #: src/settings_translation_file.cpp msgid "Defines distribution of higher terrain and steepness of cliffs." -msgstr "" +msgstr "Определя разпределението на възвишенията и стръмнината на скалите." #: src/settings_translation_file.cpp msgid "Defines distribution of higher terrain." -msgstr "" +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 "" +msgstr "Определя речната мрежа." #: src/settings_translation_file.cpp msgid "Defines location and terrain of optional hills and lakes." -msgstr "" +msgstr "Определя разположението и терена на допълнителните хълмове и езера." #: src/settings_translation_file.cpp msgid "Defines the base ground level." @@ -3376,11 +3371,12 @@ msgstr "Определя основното ниво на земята." #: src/settings_translation_file.cpp msgid "Defines the depth of the river channel." -msgstr "" +msgstr "Определя дълбочината на речното корито." #: src/settings_translation_file.cpp msgid "Defines the maximal player transfer distance in blocks (0 = unlimited)." msgstr "" +"Определя пределното разстояние на пренасяне на играча (0 = неограничено)." #: src/settings_translation_file.cpp msgid "" @@ -3388,72 +3384,87 @@ msgid "" "methods.\n" "Value of 2 means taking 2x2 = 4 samples." msgstr "" +"Определя размера на решетката за избор при методите за сгласяне FSAA и " +"SSAA.\n" +"Стойност 2 означава 2×2 = 4 проби." #: src/settings_translation_file.cpp msgid "Defines the width of the river channel." -msgstr "" +msgstr "Определя ширинатана речното корито." #: src/settings_translation_file.cpp msgid "Defines the width of the river valley." -msgstr "" +msgstr "Определя ширинатана речната долина." #: src/settings_translation_file.cpp msgid "Defines tree areas and tree density." -msgstr "" +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, which can help reduce jitter." msgstr "" +"Интервал между обновяванията на мешовете от страна на клиента,\n" +"в милисекунди.\n" +"Увеличаването на стойността ще забави честотата не обновяване\n" +"на мешове, което ще доведе до намаляване на колебанията." #: src/settings_translation_file.cpp msgid "Delay in sending blocks after building" -msgstr "" +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" #: src/settings_translation_file.cpp msgid "Depth below which you'll find giant caverns." -msgstr "" +msgstr "Дълбочина, под която се срещат огромни пещери." #: src/settings_translation_file.cpp msgid "Depth below which you'll find large caves." -msgstr "" +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 "" +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 "" +"Пустините се появяват, когато „np_biome“\n" +"превишава тази стойност.\n" +"Пренебрегва се, когато флагът „snowbiomes“ е включен." #: src/settings_translation_file.cpp msgid "Developer Options" msgstr "За разработчици" #: src/settings_translation_file.cpp -msgid "Disallow empty passwords" +msgid "Disable if you only want to instrument with Tracy." msgstr "" +#: src/settings_translation_file.cpp +msgid "Disallow empty passwords" +msgstr "Забраняване на празни пароли" + #: src/settings_translation_file.cpp msgid "Display Density Scaling Factor" -msgstr "" +msgstr "Коефициент на мащабитане на плътността на изображението" #: src/settings_translation_file.cpp msgid "" @@ -3461,10 +3472,15 @@ msgid "" "Use this to limit the performance impact of transparency depth sorting.\n" "Set to 0 to disable it entirely." msgstr "" +"Разстоянието във възли, при което се включва сортиране\n" +"по степен на прозрачност. Използвайте, за да ограничите\n" +"влиянието на сортирането по степента на прозрачност\n" +"върху производителността.\n" +"Задайте стойност 0, за да изключите." #: 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" @@ -3481,6 +3497,10 @@ msgid "" "situations\n" "where transparency sorting would be very slow otherwise." msgstr "" +"Изчертаване на прозрачни сортирани триъгълници,\n" +"групирани по меш. Това нарушава сортирането по\n" +"прозрачност между мешове, но избягва ситуации,\n" +"в които сортирането по прозрачност би било много бавно." #: src/settings_translation_file.cpp msgid "Drop item" @@ -3489,14 +3509,16 @@ msgstr "Пускане предмет" #: src/settings_translation_file.cpp msgid "Dump the mapgen debug information." msgstr "" +"Записване на информацията за отстраняване на дефекти в услугата за създаване " +"на светове." #: src/settings_translation_file.cpp msgid "Dungeon maximum Y" -msgstr "" +msgstr "Максимум по оста Y на подземията" #: src/settings_translation_file.cpp msgid "Dungeon minimum Y" -msgstr "" +msgstr "Минимум по оста Y на подземията" #: src/settings_translation_file.cpp msgid "Dungeon noise" @@ -3527,6 +3549,8 @@ 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 "" @@ -3534,12 +3558,18 @@ msgid "" "Note that clients will be able to connect with both IPv4 and IPv6.\n" "Ignored if bind_address is set." msgstr "" +"Включване на поддръжка на IPv6 за сървъра.\n" +"Обърнете внимание, че клиентите могат да се свързват както по IPv4,\n" +"така и по IPv6.\n" +"Пренебрегнато ако е включена настройката bind_andress." #: src/settings_translation_file.cpp msgid "" "Enable Lua modding support on client.\n" "This support is experimental and API can change." msgstr "" +"Включване на поддръжка на модификации на Lua на клиента.\n" +"Поддръжката е експериментална, а ППИ може да бъде променен." #: src/settings_translation_file.cpp msgid "" @@ -3547,14 +3577,17 @@ msgid "" "On true uses Poisson disk to make \"soft shadows\". Otherwise uses PCF " "filtering." msgstr "" +"Включва филтър на диска на Поасон.\n" +"Когато е отметнато използва диска на Поасон за „меки сенки“, в противен " +"случай – филтриране чрез PFC." #: src/settings_translation_file.cpp msgid "Enable Post Processing" -msgstr "" +msgstr "Последваща обработка" #: src/settings_translation_file.cpp msgid "Enable Raytraced Culling" -msgstr "" +msgstr "Лъчево премахване на невидимите блокове" #: src/settings_translation_file.cpp msgid "" @@ -3563,44 +3596,52 @@ msgid "" "automatically adjust to the brightness of the scene,\n" "simulating the behavior of human eye." msgstr "" +"Автоматична настройка на експозицията.\n" +"Когато е отметнато, машината за последваща\n" +"обработка ще променя яркостта на картината,\n" +"подобно на поведението на човешкото око." #: src/settings_translation_file.cpp msgid "" "Enable colored shadows for transculent nodes.\n" "This is expensive." msgstr "" +"Цветни сенки на полупрозрачните възли.\n" +"Скъпо действие." #: src/settings_translation_file.cpp msgid "Enable console window" -msgstr "" +msgstr "Прозорец на конзолата" #: src/settings_translation_file.cpp msgid "Enable joysticks" -msgstr "" +msgstr "Включване на контролер" #: src/settings_translation_file.cpp msgid "Enable joysticks. Requires a restart to take effect" -msgstr "" +msgstr "Включване поддръжката на контролер. Изисква рестарт" #: src/settings_translation_file.cpp msgid "Enable mod channels support." -msgstr "" +msgstr "Поддръжка на канали на модификациите." #: src/settings_translation_file.cpp msgid "Enable mod security" -msgstr "" +msgstr "Сигурност на модификациите" #: src/settings_translation_file.cpp msgid "Enable mouse wheel (scroll) for item selection in hotbar." msgstr "" +"Използване колелцето на мишката (прелистване) за избор на предмет от лентата " +"с предмети." #: src/settings_translation_file.cpp msgid "Enable random mod loading (mainly used for testing)." -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." @@ -3609,7 +3650,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Enable split login/register" -msgstr "" +msgstr "Разделяне на процесите на вход и регистрация" #: src/settings_translation_file.cpp msgid "" @@ -3619,10 +3660,14 @@ msgid "" "to new servers, but they may not support all new features that you are " "expecting." msgstr "" +"Разрешава или забранява на стари клиенти да се свързват.\n" +"По-старите клиенти са съвместими в смисъл, че няма да се сриват\n" +"при свързване с нови сървъри, но може да не поддържат всички нови\n" +"възможности, които очаквате." #: src/settings_translation_file.cpp msgid "Enable updates available indicator on content tab" -msgstr "" +msgstr "Индикатор за налично обновяване на раздела „Съдържание“" #: src/settings_translation_file.cpp msgid "" @@ -3631,12 +3676,21 @@ msgid "" "textures)\n" "when connecting to the server." msgstr "" +"Включете използването на отдалечен сървър за медия\n" +"(ако е предоставен от сървъра). Отдалечените сървъри\n" +"предлагат значително по-бързо изтегляне на файловете\n" +"(например текстури) по време на свързване със сървъра." #: 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 "" +"Включване на поклащането на изгледа и задаване на стойност.\n" +"Например:\n" +"- 0 за липса на поклащане на изгледа;\n" +"- 1.0 за обикновено;\n" +"- 2.0 за двойно." #: src/settings_translation_file.cpp msgid "" @@ -3645,14 +3699,21 @@ msgid "" "appearance of high dynamic range images. Mid-range contrast is slightly\n" "enhanced, highlights and shadows are gradually compressed." msgstr "" +"Включва кинематографическата тонова карта на Хабъл за „Uncharted 2“.\n" +"Симулира тоновата крива на фотографския филм и как тя се доближава\n" +"до изгледа на изображения с висок динамичен диапазон. Контрастът\n" +"в средния диапазон е леко подобрен, светлите и тъмните области са\n" +"постепенно компресирани." #: src/settings_translation_file.cpp msgid "Enables animation of inventory items." -msgstr "" +msgstr "Включва анимиране на предметите в инвентара." #: src/settings_translation_file.cpp msgid "Enables debug and error-checking in the OpenGL driver." msgstr "" +"Включва отстраняването и проверката за грешки в управляващия софтуер на " +"OpenGL." #: src/settings_translation_file.cpp msgid "Enables smooth scrolling." @@ -3660,7 +3721,7 @@ msgstr "Включва плавно прелистване." #: src/settings_translation_file.cpp msgid "Enables the post processing pipeline." -msgstr "" +msgstr "Включва процеса за последваща обработка." #: src/settings_translation_file.cpp msgid "" @@ -3669,24 +3730,31 @@ msgid "" "\"auto\" means that the touchscreen controls will be enabled and disabled\n" "automatically depending on the last used input method." msgstr "" +"Включва управлението чрез сензорен екран, дава възможност да играете\n" +"посредством докосване на екрана. \"auto\" означава, че управлението чрез\n" +"докосване ще бъде включвано или изключвано в зависимост от последния\n" +"метод за въвеждане." #: 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 "" +"Намалява натоварването на процесора или увеличава\n" +"производителността при изчертаване за сметка на\n" +"визуални дефекти, които не влияят на играта." #: src/settings_translation_file.cpp msgid "Engine Profiler" -msgstr "" +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 "" @@ -3711,35 +3779,35 @@ msgstr "Компенсация на експозицията" #: src/settings_translation_file.cpp msgid "FPS" -msgstr "" +msgstr "Кадри в секунда (FPS)" #: src/settings_translation_file.cpp msgid "FPS when unfocused" -msgstr "" +msgstr "Максимум FPS без фокус" #: src/settings_translation_file.cpp msgid "Factor noise" -msgstr "" +msgstr "Коефициент на шума" #: src/settings_translation_file.cpp msgid "Fallback font path" -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 "Field of view" -msgstr "" +msgstr "Ширина на погледа" #: src/settings_translation_file.cpp msgid "Field of view in degrees." -msgstr "" +msgstr "Ширина на погледа в градуси." #: src/settings_translation_file.cpp msgid "" @@ -3752,15 +3820,15 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Filler depth" -msgstr "" +msgstr "Дълбочина на запълване" #: src/settings_translation_file.cpp msgid "Filler depth noise" -msgstr "" +msgstr "Шум за дълбочина на запълване" #: src/settings_translation_file.cpp msgid "Filmic tone mapping" -msgstr "" +msgstr "Кинематографическа тонова карта" #: src/settings_translation_file.cpp msgid "Filtering and Antialiasing" @@ -3769,24 +3837,31 @@ msgstr "Филтриране и сгласяне" #: src/settings_translation_file.cpp msgid "First of 4 2D noises that together define hill/mountain range height." msgstr "" +"Първият от четирите двумерни шума, които заедно\n" +"определят височината на възвишенията и планинските вериги." #: src/settings_translation_file.cpp msgid "First of two 3D noises that together define tunnels." msgstr "" +"Първият от двата тримерни шума, които заедно\n" +"определят тунелите." #: src/settings_translation_file.cpp msgid "Fixed map seed" -msgstr "" +msgstr "Фиксирано семе на света" #: src/settings_translation_file.cpp msgid "Fixed virtual joystick" -msgstr "" +msgstr "Фиксиране на виртуалния контролер" #: src/settings_translation_file.cpp msgid "" "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 "Floatland density" @@ -3818,53 +3893,61 @@ msgstr "Ниво на водата на небесните острови" #: src/settings_translation_file.cpp msgid "Fog" -msgstr "" +msgstr "Мъгла" #: src/settings_translation_file.cpp msgid "Fog start" -msgstr "" +msgstr "Граница на мъглата" #: src/settings_translation_file.cpp msgid "Font" -msgstr "" +msgstr "Шрифт" #: src/settings_translation_file.cpp msgid "Font bold by default" -msgstr "" +msgstr "Получер шрифт по подразбиране" #: src/settings_translation_file.cpp msgid "Font italic by default" -msgstr "" +msgstr "Курсивен шрифт по подразбиране" #: src/settings_translation_file.cpp msgid "Font shadow" -msgstr "" +msgstr "Шрифт със сянка" #: src/settings_translation_file.cpp msgid "Font shadow alpha" -msgstr "" +msgstr "Прозрачност на сянката на шрифта" #: src/settings_translation_file.cpp msgid "Font size" -msgstr "" +msgstr "Размер на шрифта" #: src/settings_translation_file.cpp msgid "Font size divisible by" -msgstr "" +msgstr "Кратност на размера на шрифта" #: src/settings_translation_file.cpp msgid "Font size of the default font where 1 unit = 1 pixel at 96 DPI" msgstr "" +"Размер на стандартния шрифт, където\n" +"1 пункт = 1 пиксел при плътност на екрана\n" +"96 точки / инч." #: src/settings_translation_file.cpp msgid "Font size of the monospace font where 1 unit = 1 pixel at 96 DPI" msgstr "" +"Размер на равноширокия шрифт, където\n" +"1 пункт = 1 пиксел при плътност на екрана\n" +"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 "" +"Размер на шрифта на последните съобщения в разговорите, в пунктове (pt).\n" +"При стойност 0 ще бъде използван стандартния шрифт." #: src/settings_translation_file.cpp msgid "" @@ -3890,49 +3973,58 @@ msgid "" "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 Full-Screen Background Color" -msgstr "" +msgstr "Цвят на фона на формулярите на цял екран" #: src/settings_translation_file.cpp msgid "Formspec Full-Screen Background Opacity" -msgstr "" +msgstr "Прозрачност на фона на формулярите на цял екран" #: src/settings_translation_file.cpp msgid "Formspec full-screen background color (R,G,B)." -msgstr "" +msgstr "Цвят на фона на формулярите на цял екран (R,G,B)." #: src/settings_translation_file.cpp msgid "Formspec full-screen background opacity (between 0 and 255)." -msgstr "" +msgstr "Прозрачност на фона на формулярите на цял екран (от 0 до 255)." #: src/settings_translation_file.cpp msgid "Fourth of 4 2D noises that together define hill/mountain range height." msgstr "" +"Четвъртият от четирите двумерни шума, които заедно\n" +"определят височината на възвишенията и планинските вериги." #: src/settings_translation_file.cpp msgid "Fractal type" -msgstr "" +msgstr "Вид на фрактала" #: src/settings_translation_file.cpp msgid "Fraction of the visible distance at which fog starts to be rendered" -msgstr "" +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 "" @@ -3942,8 +4034,8 @@ msgid "" "to maintain active objects up to this distance in the direction the\n" "player is looking. (This can avoid mobs suddenly disappearing from view)" msgstr "" -"От какво разстояние клиентите знаят за обектите, посочено в блокове от " -"картата (16 възела).\n" +"От какво разстояние клиентите знаят за обектите, посочено в блокове от света " +"(16 възела).\n" "\n" "Задаването на стойност по-голяма от active_block_range\n" "също ще накара сървъра да поддържа активни обекти до това разстояние\n" @@ -3952,23 +4044,23 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Full screen" -msgstr "" +msgstr "Цял екран" #: src/settings_translation_file.cpp msgid "Fullscreen mode." -msgstr "" +msgstr "Режим на цял екран." #: src/settings_translation_file.cpp msgid "GUI" -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 "Gamepads" @@ -3984,18 +4076,26 @@ msgid "" "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 "" +"Общи атрибути при създаване на светове.\n" +"При създаване на светове „v6“ флагът „декорации“ управлява\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" @@ -4036,6 +4136,12 @@ msgid "" "- log: mimic and log backtrace of deprecated call (default).\n" "- error: abort on usage of deprecated call (suggested for mod developers)." msgstr "" +"Обработка на изведените от употреба ППИ на Lua:\n" +"• none: изикванията на такива ППИ не влизат в дневника.\n" +"• log: фалшифицира успешно извикване и записва в дневника следи на " +"изведеното от употреба извикване (стандартно).\n" +"• error: спира изпълнението при изведено от употреба извикване " +"(препоръчително за разработчиците на модофокации)." #: src/settings_translation_file.cpp msgid "" @@ -4045,226 +4151,239 @@ msgid "" "call).\n" "* Instrument the sampler being used to update the statistics." msgstr "" +"Профилиране на инструмента за профилиране:\n" +"• замерване на празна функция – оценява разхода,\n" +"добавен при замерване (+1 извикване на функция)\n" +"• замерва пробата, използвана за обновяване на статистиката." #: src/settings_translation_file.cpp msgid "Heat blend noise" -msgstr "" +msgstr "Шум за смесване на топлината" #: src/settings_translation_file.cpp msgid "Heat noise" -msgstr "" +msgstr "Шум на топлината" #: src/settings_translation_file.cpp msgid "Height component of the initial window size." -msgstr "" +msgstr "Начална височина на екрана." #: src/settings_translation_file.cpp msgid "Height noise" -msgstr "" +msgstr "Шум за височината" #: src/settings_translation_file.cpp msgid "Height select noise" -msgstr "" +msgstr "Шум за избор на височина" #: src/settings_translation_file.cpp msgid "Hill steepness" -msgstr "" +msgstr "Стръмност на възвишенията" #: src/settings_translation_file.cpp msgid "Hill threshold" -msgstr "" +msgstr "Праг на възвишенията" #: src/settings_translation_file.cpp msgid "Hilliness1 noise" -msgstr "" +msgstr "Шум за възвишения 1" #: src/settings_translation_file.cpp msgid "Hilliness2 noise" -msgstr "" +msgstr "Шум за възвишения 2" #: src/settings_translation_file.cpp msgid "Hilliness3 noise" -msgstr "" +msgstr "Шум за възвишения 3" #: src/settings_translation_file.cpp msgid "Hilliness4 noise" -msgstr "" +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 "" "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 slot 1" -msgstr "" +msgstr "Позиция №1 на лентата с предмети" #: src/settings_translation_file.cpp msgid "Hotbar slot 10" -msgstr "" +msgstr "Позиция №10 на лентата с предмети" #: src/settings_translation_file.cpp msgid "Hotbar slot 11" -msgstr "" +msgstr "Позиция №11 на лентата с предмети" #: src/settings_translation_file.cpp msgid "Hotbar slot 12" -msgstr "" +msgstr "Позиция №12 на лентата с предмети" #: src/settings_translation_file.cpp msgid "Hotbar slot 13" -msgstr "" +msgstr "Позиция №13 на лентата с предмети" #: src/settings_translation_file.cpp msgid "Hotbar slot 14" -msgstr "" +msgstr "Позиция №14 на лентата с предмети" #: src/settings_translation_file.cpp msgid "Hotbar slot 15" -msgstr "" +msgstr "Позиция №15 на лентата с предмети" #: src/settings_translation_file.cpp msgid "Hotbar slot 16" -msgstr "" +msgstr "Позиция №16 на лентата с предмети" #: src/settings_translation_file.cpp msgid "Hotbar slot 17" -msgstr "" +msgstr "Позиция №17 на лентата с предмети" #: src/settings_translation_file.cpp msgid "Hotbar slot 18" -msgstr "" +msgstr "Позиция №18 на лентата с предмети" #: src/settings_translation_file.cpp msgid "Hotbar slot 19" -msgstr "" +msgstr "Позиция №19 на лентата с предмети" #: src/settings_translation_file.cpp msgid "Hotbar slot 2" -msgstr "" +msgstr "Позиция №2 на лентата с предмети" #: src/settings_translation_file.cpp msgid "Hotbar slot 20" -msgstr "" +msgstr "Позиция №20 на лентата с предмети" #: src/settings_translation_file.cpp msgid "Hotbar slot 21" -msgstr "" +msgstr "Позиция №21 на лентата с предмети" #: src/settings_translation_file.cpp msgid "Hotbar slot 22" -msgstr "" +msgstr "Позиция №22 на лентата с предмети" #: src/settings_translation_file.cpp msgid "Hotbar slot 23" -msgstr "" +msgstr "Позиция №23 на лентата с предмети" #: src/settings_translation_file.cpp msgid "Hotbar slot 24" -msgstr "" +msgstr "Позиция №24 на лентата с предмети" #: src/settings_translation_file.cpp msgid "Hotbar slot 25" -msgstr "" +msgstr "Позиция №25 на лентата с предмети" #: src/settings_translation_file.cpp msgid "Hotbar slot 26" -msgstr "" +msgstr "Позиция №26 на лентата с предмети" #: src/settings_translation_file.cpp msgid "Hotbar slot 27" -msgstr "" +msgstr "Позиция №27 на лентата с предмети" #: src/settings_translation_file.cpp msgid "Hotbar slot 28" -msgstr "" +msgstr "Позиция №28 на лентата с предмети" #: src/settings_translation_file.cpp msgid "Hotbar slot 29" -msgstr "" +msgstr "Позиция №29 на лентата с предмети" #: src/settings_translation_file.cpp msgid "Hotbar slot 3" -msgstr "" +msgstr "Позиция №3 на лентата с предмети" #: src/settings_translation_file.cpp msgid "Hotbar slot 30" -msgstr "" +msgstr "Позиция №30 на лентата с предмети" #: src/settings_translation_file.cpp msgid "Hotbar slot 31" -msgstr "" +msgstr "Позиция №31 на лентата с предмети" #: src/settings_translation_file.cpp msgid "Hotbar slot 32" -msgstr "" +msgstr "Позиция №32 на лентата с предмети" #: src/settings_translation_file.cpp msgid "Hotbar slot 4" -msgstr "" +msgstr "Позиция №4 на лентата с предмети" #: src/settings_translation_file.cpp msgid "Hotbar slot 5" -msgstr "" +msgstr "Позиция №5 на лентата с предмети" #: src/settings_translation_file.cpp msgid "Hotbar slot 6" -msgstr "" +msgstr "Позиция №6 на лентата с предмети" #: src/settings_translation_file.cpp msgid "Hotbar slot 7" -msgstr "" +msgstr "Позиция №7 на лентата с предмети" #: src/settings_translation_file.cpp msgid "Hotbar slot 8" -msgstr "" +msgstr "Позиция №8 на лентата с предмети" #: src/settings_translation_file.cpp msgid "Hotbar slot 9" -msgstr "" +msgstr "Позиция №9 на лентата с предмети" #: src/settings_translation_file.cpp msgid "Hotbar: Enable mouse wheel for selection" -msgstr "" +msgstr "Лента с предмети: избор с колелцето на мишката" #: src/settings_translation_file.cpp msgid "Hotbar: Invert mouse wheel direction" -msgstr "" +msgstr "Лента с предмети: обърнат избор с колелцето на мишката" #: src/settings_translation_file.cpp msgid "Hotbar: select next item" -msgstr "" +msgstr "Лента с предмети: избиране на следващия предмет" #: src/settings_translation_file.cpp msgid "Hotbar: select previous item" -msgstr "" +msgstr "Лента с предмети: избиране на предишния предмет" #: src/settings_translation_file.cpp msgid "How deep to make rivers." -msgstr "" +msgstr "Каква да бъде дълбочината на реките." #: src/settings_translation_file.cpp msgid "" "How fast liquid waves will move. Higher = faster.\n" "If negative, liquid waves will move backwards." msgstr "" +"Колко бързо да се движат вълните от течност.\n" +"Висока стойност = по-бързо. Отрицателните стойности\n" +"движат вълните назад." #: src/settings_translation_file.cpp msgid "" @@ -4272,28 +4391,33 @@ msgid "" "seconds.\n" "Higher value is smoother, but will use more RAM." msgstr "" +"Време на изчакване преди сървърът да освободи\n" +"неизползваните блокове от света, в секунди.\n" +"По-голямата стойност е по-плавна, но използва повече памет." #: 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 "" +"Колко течностите забавят движението.\n" +"Намалете стойността, за да увеличите викозитета на течността." #: src/settings_translation_file.cpp msgid "How wide to make rivers." -msgstr "" +msgstr "Колко широки да бъдат речните корита." #: src/settings_translation_file.cpp msgid "Humidity blend noise" -msgstr "" +msgstr "Шум за смесване на влажността" #: src/settings_translation_file.cpp msgid "Humidity noise" -msgstr "" +msgstr "Шум за влажността" #: src/settings_translation_file.cpp msgid "Humidity variation for biomes." -msgstr "" +msgstr "Вариране на влажността между различните биоми." #: src/settings_translation_file.cpp msgid "IPv6" @@ -4308,12 +4432,17 @@ msgid "" "If FPS would go higher than this, limit it by sleeping\n" "to not waste CPU power for no benefit." msgstr "" +"Ако кадрите в секунда са повече от зададените тук да бъдат\n" +"ограничени чрез приспиване на процесора, за да де се пилее\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 "" @@ -4338,18 +4467,25 @@ 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, 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, players cannot join without a password or change theirs to an " "empty password." msgstr "" +"Когато е отметнато, играчите не могат да играят без парола\n" +"или ли да сменят паролата си на празна." #: src/settings_translation_file.cpp msgid "" @@ -4357,17 +4493,21 @@ msgid "" "If disabled, connecting to a server will automatically register a new " "account." msgstr "" +"Когато е отметнато, създаването на профил в сървъра и входа\n" +"са различни неща в интерфейса.\n" +"Когато не е отметнато, при свързване към сървър ще бъде\n" +"създаден и профил." #: src/settings_translation_file.cpp msgid "If enabled, the \"Aux1\" key will toggle when pressed." -msgstr "" +msgstr "Когато е отметнато, клавишът „Aux1“ ще превключва при натискане." #: src/settings_translation_file.cpp msgid "" "If enabled, the \"Sneak\" key will toggle when pressed.\n" "This functionality is ignored when fly is enabled." msgstr "" -"Когато е отметнато клавишът „Промъкване“ ще превключва приннатискане.\n" +"Когато е отметнато клавишът „Промъкване“ ще превключва при натискане.\n" "Тази настройка е пренебрегната по време на летене." #: src/settings_translation_file.cpp @@ -4378,7 +4518,7 @@ msgid "" "sent to the client by 50-80%. Clients will no longer receive most\n" "invisible blocks, so that the utility of noclip mode is reduced." msgstr "" -"Когато е включено, сървърът ще извърши премахване на далечните блокове от " +"Когато е отметнато, сървърът ще извърши премахване на далечните блокове от " "картата въз основа на\n" "на позицията на очите на играча. Това може да намали броя на блоковете\n" "изпратени към клиента с 50-80 %. Клиентите вече няма да получават повечето\n" @@ -4390,6 +4530,8 @@ msgid "" "stand.\n" "This is helpful when working with nodeboxes in small areas." msgstr "" +"Когато е отметнато, можете да поставяте възли, на мястото, на което стоите.\n" +"Полезно при строене в тесни места." #: src/settings_translation_file.cpp msgid "" @@ -4397,12 +4539,18 @@ msgid "" "limited\n" "to this distance from the player to the node." msgstr "" +"Когато ограничението за модификации на клиента е включено\n" +"извикванията към get_node са ограничени до това разстояние\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 "" +"Когато изпълнението на команда в прозореца за разговори отнеме\n" +"повече от зададеното тук време в секунди, информация за времето\n" +"да бъде добавена към резултата от командата." #: src/settings_translation_file.cpp msgid "" @@ -4411,6 +4559,11 @@ msgid "" "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“, а предишния файл " +"„debug.txt.1“,\n" +"ако има такъв ще бъде премахнат.\n" +"Файлът „debug.txt“ бива преименуван само ако стойността тук е положителна." #: src/settings_translation_file.cpp msgid "If this is set, players will always (re)spawn at the given position." @@ -4418,20 +4571,20 @@ msgstr "Ако е зададено, играчите ще се преражда #: src/settings_translation_file.cpp msgid "Ignore world errors" -msgstr "" +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 #, no-c-format msgid "In-game chat console height, between 0.1 (10%) and 1.0 (100%)." -msgstr "" +msgstr "Височина на конзолата (между 0.1 → 10% и 1.0 → 100%)." #: src/settings_translation_file.cpp msgid "Increase view range" @@ -4443,77 +4596,87 @@ msgstr "Увелич. на звука" #: src/settings_translation_file.cpp msgid "Initial vertical speed when jumping, in nodes per second." -msgstr "" +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 chat commands on registration." -msgstr "" +msgstr "За ерване на командите в панела за разговори при регистриране." #: src/settings_translation_file.cpp msgid "" "Instrument global callback functions on registration.\n" "(anything you pass to a core.register_*() function)" msgstr "" +"Замерва общите функции за обратно извикване при регистрация.\n" +"(всичко, което се подава на core.register_*() function)" #: src/settings_translation_file.cpp msgid "" "Instrument the action function of Active Block Modifiers on registration." msgstr "" +"Замерване на функцията за действия с модификатора\n" +"на активния блок при регистрация." #: src/settings_translation_file.cpp msgid "" "Instrument the action function of Loading Block Modifiers on registration." msgstr "" +"Замерване на функцията за действия с модификатора\n" +"на зареждащия блок при регистрация." #: src/settings_translation_file.cpp msgid "Instrument the methods of entities on registration." -msgstr "" +msgstr "Замерване на методите на създанията при регистрация." #: src/settings_translation_file.cpp msgid "Interaction style" -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 "Inventory items animations" -msgstr "" +msgstr "Анимиране на предметите в инвентара" #: src/settings_translation_file.cpp msgid "Invert mouse" -msgstr "" +msgstr "Обръщане осите на мишката" #: src/settings_translation_file.cpp msgid "Invert mouse wheel (scroll) direction for item selection in hotbar." msgstr "" +"Обръщане посоката на колелцето (прелистване)\n" +"на мишката при избор на предмет от лентата с предмети." #: src/settings_translation_file.cpp msgid "Invert vertical mouse movement." -msgstr "" +msgstr "Обръщане движението на мишката по вертикалната ос." #: src/settings_translation_file.cpp msgid "Italic font path" -msgstr "" +msgstr "Път към курсивен шрифт" #: src/settings_translation_file.cpp msgid "Italic monospace font path" -msgstr "" +msgstr "Път към курсивен равноширок шрифт" #: src/settings_translation_file.cpp msgid "Item entity TTL" -msgstr "" +msgstr "Време на живот на хвърлени предмети" #: src/settings_translation_file.cpp msgid "Iterations" -msgstr "" +msgstr "Брой завъртания" #: src/settings_translation_file.cpp msgid "" @@ -4522,26 +4685,30 @@ msgid "" "increases processing load.\n" "At iterations = 20 this mapgen has a similar load to mapgen V7." msgstr "" +"Брой завъртания на рекурсивната функция.\n" +"Увеличаване на броя завъртания подобрява подробностите\n" +"на фрактала, но увеличава и натоварването при изчисление.\n" +"При 20 завъртания натоварването е подобно на светове „v7“." #: src/settings_translation_file.cpp msgid "Joystick ID" -msgstr "" +msgstr "ID на контролера" #: src/settings_translation_file.cpp msgid "Joystick button repetition interval" -msgstr "" +msgstr "Интервал на повтаряне действието на бутон на контролера" #: src/settings_translation_file.cpp msgid "Joystick dead zone" -msgstr "" +msgstr "Мъртва област на контролера" #: src/settings_translation_file.cpp msgid "Joystick frustum sensitivity" -msgstr "" +msgstr "Чувствителност на контролера" #: src/settings_translation_file.cpp msgid "Joystick type" -msgstr "" +msgstr "Вид на контролера" #: src/settings_translation_file.cpp msgid "" @@ -4551,6 +4718,11 @@ msgid "" "Has no effect on 3D fractals.\n" "Range roughly -2 to 2." msgstr "" +"Само за множества на Жулия.\n" +"Компонент W от свръхсложната константа,\n" +"определяща формата на фрактала на Жулия.\n" +"Не влияе на триизмерни фрактали.\n" +"Примерен диапазон: -2 до 2." #: src/settings_translation_file.cpp msgid "" @@ -4559,6 +4731,10 @@ msgid "" "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 "" @@ -4567,6 +4743,10 @@ msgid "" "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 "" @@ -4575,22 +4755,26 @@ msgid "" "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" +msgstr "Жулия W" #: src/settings_translation_file.cpp msgid "Julia x" -msgstr "Жулия x" +msgstr "Жулия X" #: src/settings_translation_file.cpp msgid "Julia y" -msgstr "Жулия y" +msgstr "Жулия Y" #: src/settings_translation_file.cpp msgid "Julia z" -msgstr "Жулия z" +msgstr "Жулия Z" #: src/settings_translation_file.cpp msgid "Jumping speed" @@ -4598,55 +4782,67 @@ msgstr "Скорост на скачане" #: src/settings_translation_file.cpp msgid "Key for decrementing the selected value in Quicktune." -msgstr "" +msgstr "Клавиш за намаляване на избраната стойност в QuickТune." #: src/settings_translation_file.cpp msgid "" "Key for digging, punching or using something.\n" "(Note: The actual meaning might vary on a per-game basis.)" msgstr "" +"Клавиш за копаене, удряне или използване на предмет.\n" +"Забележка: значението може да варира в зависимост от играта." #: src/settings_translation_file.cpp msgid "Key for incrementing the selected value in Quicktune." -msgstr "" +msgstr "Клавиш за увеличаване на избраната стойност в QuickТune." #: src/settings_translation_file.cpp msgid "Key for moving fast in fast mode." -msgstr "" +msgstr "Клавиш за бързо придвижване в режим на бързо придвижване." #: src/settings_translation_file.cpp msgid "Key for opening the chat window to type commands." msgstr "" +"Клавиш за отваряне на прозореца за разговори\n" +"и въвеждане на команди." #: src/settings_translation_file.cpp msgid "Key for opening the chat window to type local commands." msgstr "" +"Клавиш за отваряне на прозореца за разговори\n" +"и въвеждане на местни команди." #: src/settings_translation_file.cpp msgid "" "Key for placing an item/block or for using something.\n" "(Note: The actual meaning might vary on a per-game basis.)" msgstr "" +"Клавиш за поставяне на предмет/блок или използването му.\n" +"Забележка: значението може да варира в зависимост от играта." #: src/settings_translation_file.cpp msgid "Key for switching to the next entry in Quicktune." -msgstr "" +msgstr "Клавиш за преминаване към следващ запис в QuickТune." #: src/settings_translation_file.cpp msgid "Key for switching to the previous entry in Quicktune." -msgstr "" +msgstr "Клавиш за преминаване към предишен запис в QuickТune." #: src/settings_translation_file.cpp msgid "Key for toggling the camera update. Only usable with 'debug' privilege." msgstr "" +"Клавиш за превключване обновяването на камерата.\n" +"Може да бъде използвано само с правото „debug“." #: src/settings_translation_file.cpp msgid "Key for toggling the display of mapblock boundaries." -msgstr "" +msgstr "Клавиш за превключване на границите на блоковете." #: src/settings_translation_file.cpp msgid "Key for toggling the display of the profiler. Used for development." msgstr "" +"Клавиш за превключване показването на инструмента за профилиране.\n" +"Използва се при разработка." #: src/settings_translation_file.cpp msgid "Keybindings" @@ -4699,6 +4895,10 @@ msgid "" "- Simple: only outer faces\n" "- Opaque: disable transparency" msgstr "" +"Стилове на листата:\n" +"• fancy – видими са всички страни\n" +"• simple – видими само външните страни\n" +"• opaque – без прозрачност" #: src/settings_translation_file.cpp msgid "" @@ -4718,7 +4918,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Length of liquid waves." -msgstr "" +msgstr "Дължина на вълните от течности." #: src/settings_translation_file.cpp msgid "" @@ -4730,12 +4930,12 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Length of time between NodeTimer execution cycles, stated in seconds." -msgstr "" +msgstr "Време между циклите на изпълнение на NodeTimer, в секунди." #: src/settings_translation_file.cpp msgid "" "Length of time between active block management cycles, stated in seconds." -msgstr "" +msgstr "Време между циклите на управление на активни блокове, в секунди." #: src/settings_translation_file.cpp msgid "" @@ -4749,30 +4949,39 @@ msgid "" "- verbose\n" "- trace" msgstr "" +"Ново на подробност на дневника debug.txt:\n" +"• <празно> – без дневник\n" +"• none – съобщения без определено ниво\n" +"• error – грешки\n" +"• warning – предупреждения\n" +"• action – действия\n" +"• info – информация\n" +"• verbose – подробности\n" +"• trace – следи от изпълнението" #: src/settings_translation_file.cpp msgid "Light curve boost" -msgstr "" +msgstr "Усилване кривата на светлината" #: src/settings_translation_file.cpp msgid "Light curve boost center" -msgstr "" +msgstr "Среда на усилване кривата на светлината" #: src/settings_translation_file.cpp msgid "Light curve boost spread" -msgstr "" +msgstr "Разсейване на усилването на кривата на светлината" #: src/settings_translation_file.cpp msgid "Light curve gamma" -msgstr "" +msgstr "Гама на кривата на светлината" #: src/settings_translation_file.cpp msgid "Light curve high gradient" -msgstr "" +msgstr "Висок градиент на кривата на светлината" #: src/settings_translation_file.cpp msgid "Light curve low gradient" -msgstr "" +msgstr "Нисък градиент на кривата на светлината" #: src/settings_translation_file.cpp msgid "Lighting" @@ -4784,6 +4993,11 @@ msgid "" "Only mapchunks completely within the mapgen limit are generated.\n" "Value is stored per-world." msgstr "" +"Ограничаване на създаваните сетове, във възли,\n" +"във всички 6 направления от (0, 0, 0). Създават се\n" +"единствено областите от света, които са изцяло\n" +"в пределите на ограничението. Стойностите се\n" +"запазват за всеки свят поотделно." #: src/settings_translation_file.cpp msgid "" @@ -4793,42 +5007,47 @@ msgid "" "- 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 "Liquid fluidity" -msgstr "" +msgstr "Вискозитет на течностите" #: src/settings_translation_file.cpp msgid "Liquid fluidity smoothing" -msgstr "" +msgstr "Изглаждане вискозитета на течностите" #: src/settings_translation_file.cpp msgid "Liquid loop max" -msgstr "" +msgstr "Ограничение циклите на течностите" #: src/settings_translation_file.cpp msgid "Liquid queue purge time" -msgstr "" +msgstr "Време на изчистване опашката на течностите" #: src/settings_translation_file.cpp msgid "Liquid reflections" -msgstr "" +msgstr "Отражения от течностите" #: src/settings_translation_file.cpp msgid "Liquid sinking" -msgstr "" +msgstr "Потъване на течностите" #: src/settings_translation_file.cpp msgid "Liquid update interval in seconds." -msgstr "" +msgstr "Време на обновяване на течностите, в секунди." #: src/settings_translation_file.cpp msgid "Liquid update tick" -msgstr "" +msgstr "Стъпка на обновяване на течностите" #: src/settings_translation_file.cpp msgid "Load the game profiler" -msgstr "" +msgstr "Зареждане инструмента за профилиране на играта" #: src/settings_translation_file.cpp msgid "" @@ -4836,10 +5055,14 @@ msgid "" "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 "Loading Block Modifiers" -msgstr "" +msgstr "Модификатори на зареждащия блок (LBM)" #: src/settings_translation_file.cpp msgid "Local command" @@ -4847,7 +5070,7 @@ msgstr "Местна команда" #: src/settings_translation_file.cpp msgid "Lower Y limit of dungeons." -msgstr "" +msgstr "Долно ограничение по оста Y на подземията." #: src/settings_translation_file.cpp msgid "Lower Y limit of floatlands." @@ -4855,34 +5078,38 @@ msgstr "Долно ограничение по оста Y на небеснит #: src/settings_translation_file.cpp msgid "Main menu script" -msgstr "" +msgstr "Скрипт за главното меню" #: src/settings_translation_file.cpp msgid "" "Make fog and sky colors depend on daytime (dawn/sunset) and view direction." msgstr "" +"Цветовете на мъглата и небето ще зависят от часа̀\n" +"през деня (изгрев/залез) и посоката на погледа." #: src/settings_translation_file.cpp msgid "Map Compression Level for Disk Storage" -msgstr "" +msgstr "Ниво на компресия на картата на диска" #: src/settings_translation_file.cpp msgid "Map Compression Level for Network Transfer" -msgstr "" +msgstr "Ниво на компресия на картата през мрежата" #: src/settings_translation_file.cpp msgid "Map directory" -msgstr "" +msgstr "Папка на картата" #: src/settings_translation_file.cpp msgid "Map generation attributes specific to Mapgen Carpathian." -msgstr "" +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 "" +"Настройки, специфични за създаване на светове „Плосък“.\n" +"Понякога могат да бъдат добавени езера и хълмове към равния свят." #: src/settings_translation_file.cpp msgid "" @@ -4890,6 +5117,9 @@ msgid "" "'terrain' enables the generation of non-fractal terrain:\n" "ocean, islands and underground." msgstr "" +"Настройки, специфични за създаване на светове „Фрактал“.\n" +"„terrain“ дава възможност за създаване на нефрактален релеф:\n" +"океани, острови и подземия." #: src/settings_translation_file.cpp msgid "" @@ -4900,10 +5130,17 @@ msgid "" "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" +"високите температури водят до намаляване на водата в реките,\n" +"а понякога до тяхното пресъхване.\n" +"„altitude_dry“ – намалява влажността във височина." #: src/settings_translation_file.cpp msgid "Map generation attributes specific to Mapgen v5." -msgstr "" +msgstr "Настройки, специфични за създаване на светове „v5“." #: src/settings_translation_file.cpp msgid "" @@ -4914,12 +5151,12 @@ msgid "" "The 'temples' flag disables generation of desert temples. Normal dungeons " "will appear instead." msgstr "" -"Атрибути за създаване на карти, специфични за Mapgen v6.\n" +"Настройки, специфични за създаване на светове „“v6.\n" "Флагът „snowbiomes“ включва новата система от 5 биома.\n" "Когато е отметнат флагът „snowbiomes“ включва джунглите и\n" "флагът „jungles“ е пренебрегнат.\n" -"Флагът „temples“ изключва създаването на пустинни храмове. Вместо тях ше " -"бъдат създавани обикновени подземия." +"Флагът „temples“ изключва създаването на пустинни храмове.\n" +"Вместо тях ще бъдат създавани обикновени подземия." #: src/settings_translation_file.cpp msgid "" @@ -4928,30 +5165,30 @@ msgid "" "'floatlands': Floating land masses in the atmosphere.\n" "'caverns': Giant caves deep underground." msgstr "" -"Атрибути за създаване на карти v7.\n" -"„ridges“: реки.\n" -"„floatlands“: плуващи в атмосферата земни маси.\n" -"„caverns“: гигантски пещери дълбоко под земята." +"Настройки, специфични за създаване на светове „v7“.\n" +"„ridges“ – реки.\n" +"„floatlands“ – плуващи в атмосферата земни маси.\n" +"„caverns“ – гигантски пещери дълбоко под земята." #: src/settings_translation_file.cpp msgid "Map generation limit" -msgstr "" +msgstr "Ограничение при създаване на карти" #: src/settings_translation_file.cpp msgid "Map save interval" -msgstr "" +msgstr "Интервал на запазване на карата" #: src/settings_translation_file.cpp msgid "Map shadows update frames" -msgstr "" +msgstr "Кадри при обновяване сенките на картата" #: src/settings_translation_file.cpp msgid "Mapblock limit" -msgstr "" +msgstr "Ограничение за блокове от картата" #: src/settings_translation_file.cpp msgid "Mapblock mesh generation delay" -msgstr "" +msgstr "Забавяне при създаване на мешове на картата" #: src/settings_translation_file.cpp msgid "Mapblock mesh generation threads" @@ -4959,75 +5196,75 @@ msgstr "Брой нишки, създаващи мрежата от блоков #: src/settings_translation_file.cpp msgid "Mapblock unload timeout" -msgstr "" +msgstr "Изчакване преди премахване на блокове от паметта" #: src/settings_translation_file.cpp msgid "Mapgen Carpathian" -msgstr "" +msgstr "Светове „Карпати“" #: src/settings_translation_file.cpp msgid "Mapgen Carpathian specific flags" -msgstr "" +msgstr "Настройки, специфични за светове„Карпати“" #: src/settings_translation_file.cpp msgid "Mapgen Flat" -msgstr "" +msgstr "Светове „Плосък“" #: src/settings_translation_file.cpp msgid "Mapgen Flat specific flags" -msgstr "" +msgstr "Настройки, специфични за светове „Плосък“" #: src/settings_translation_file.cpp msgid "Mapgen Fractal" -msgstr "" +msgstr "Светове „Фрактал“" #: src/settings_translation_file.cpp msgid "Mapgen Fractal specific flags" -msgstr "" +msgstr "Настройки, специфични за светове „Фрактал“" #: src/settings_translation_file.cpp msgid "Mapgen V5" -msgstr "" +msgstr "Светове „v5“" #: src/settings_translation_file.cpp msgid "Mapgen V5 specific flags" -msgstr "" +msgstr "Настройки, специфични за светове „v5“" #: src/settings_translation_file.cpp msgid "Mapgen V6" -msgstr "" +msgstr "Светове „v6“" #: src/settings_translation_file.cpp msgid "Mapgen V6 specific flags" -msgstr "" +msgstr "Настройки, специфични за светове „v6“" #: src/settings_translation_file.cpp msgid "Mapgen V7" -msgstr "" +msgstr "Светове „v7“" #: src/settings_translation_file.cpp msgid "Mapgen V7 specific flags" -msgstr "" +msgstr "Настройки, специфични за светове „v7“" #: src/settings_translation_file.cpp msgid "Mapgen Valleys" -msgstr "" +msgstr "Светове „Долини“" #: src/settings_translation_file.cpp msgid "Mapgen Valleys specific flags" -msgstr "" +msgstr "Настройки, специфични за светове „Долини“" #: src/settings_translation_file.cpp msgid "Mapgen debug" -msgstr "" +msgstr "Отстраняване на грешки при създаване на светове" #: src/settings_translation_file.cpp msgid "Mapgen name" -msgstr "" +msgstr "Вид на света" #: src/settings_translation_file.cpp msgid "Max block generate distance" -msgstr "" +msgstr "Макс. разст.за създаване на блокове" #: src/settings_translation_file.cpp msgid "Max block send distance" @@ -5035,49 +5272,53 @@ 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 "Ограничение на кадри/секунда" #: src/settings_translation_file.cpp msgid "Maximum FPS when the window is not focused." msgstr "" +"Ограничение на кадрите в секунда, когато прозорецът\n" +"на играта не е на фокус." #: src/settings_translation_file.cpp msgid "Maximum distance to render shadows." -msgstr "" +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 limit of random number of large caves per mapchunk." -msgstr "" +msgstr "Горна граница на случайния брой големи пещери на парче от света." #: src/settings_translation_file.cpp msgid "Maximum limit of random number of small caves per mapchunk." -msgstr "" +msgstr "Горна граница на случайния брой малки пещери на парче от света." #: src/settings_translation_file.cpp msgid "" "Maximum liquid resistance. Controls deceleration when entering liquid at\n" "high speed." msgstr "" +"Ограничение на съпротивлението на течностите.\n" +"Управлява забавянето при навлизане в течност с висока скорост." #: src/settings_translation_file.cpp msgid "" @@ -5085,22 +5326,30 @@ msgid "" "The maximum total count is calculated dynamically:\n" "max_total = ceil((#clients + max_users) * per_client / 4)" msgstr "" +"Ограничение на броя блокове, изпращани към всеки\n" +"клиент.\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" "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" "This limit is enforced per player." msgstr "" +"Ограничение на броя блокове в опашката за зареждане от файл.\n" +"Правилото е наложено на всеки играч поотделно." #: src/settings_translation_file.cpp msgid "" @@ -5108,6 +5357,9 @@ msgid "" "be queued.\n" "This should be lower than curl_parallel_limit." msgstr "" +"Ограничение на броя едновременни изтегляния. Изтеглянията\n" +"над ограничението ще се редят на опашка.\n" +"Стойността може да бъде по-малка от „curl_parallel_limit“." #: src/settings_translation_file.cpp msgid "" @@ -5116,6 +5368,13 @@ msgid "" "won't be deleted, depending on the current view range.\n" "Set to -1 for no limit." msgstr "" +"Максимален брой блокове от света, които клиентът да\n" +"поддържа в паметта.\n" +"Имайте предвид, че има вътрешен динамичен минимален брой\n" +"на блоковете, които няма да бъдат премахнати, в зависимост от\n" +"текущия обхват на погледа\n" +"\n" +"Задайте -1 за премахване на ограничението." #: src/settings_translation_file.cpp msgid "" @@ -5124,32 +5383,39 @@ msgid "" "You generally don't need to change this, however busy servers may benefit " "from a higher number." msgstr "" +"Максимален брой пакети, изпращани при една стъпка в мрежовия код от ниско " +"ниво.\n" +"Обикновено няма нужда да променяте, но натоварени сървъри може да се " +"възползват от по-висока стойност." #: src/settings_translation_file.cpp msgid "Maximum number of players that can be connected simultaneously." -msgstr "" +msgstr "Ограничение на броя едновременно свързани играчи." #: src/settings_translation_file.cpp msgid "Maximum number of recent chat messages to show" -msgstr "" +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" +"за лентата с предмети. Полезно ако от ляво или от дясно\n" +"на нея трябва да бъде показано нещо." #: src/settings_translation_file.cpp msgid "Maximum simultaneous block sends per client" -msgstr "" +msgstr "Макс. едновр. изпращани блокове на клиент" #: src/settings_translation_file.cpp msgid "Maximum size of the client's outgoing chat queue" @@ -5160,58 +5426,72 @@ msgid "" "Maximum size of the client's outgoing chat queue.\n" "0 to disable queueing and -1 to make the queue size unlimited." msgstr "" +"Ограничение на размера на опашката на изходящите съобщения на клиента.\n" +"• 0 за изключване на опашката;\n" +"• -1 за неограничен размер." #: 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 "" +msgstr "Ограничение на броя потребители" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Measure time samples" +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 "" +"Най-ниското ниво на подробност дневника,\n" +"показвано в панела за разговори." #: src/settings_translation_file.cpp msgid "Minimap scan height" -msgstr "" +msgstr "Височина на сканиране за миникартата" #: src/settings_translation_file.cpp msgid "Minimum dig repetition interval" -msgstr "" +msgstr "Мин. интервал за повторение при копаене" #: src/settings_translation_file.cpp msgid "Minimum limit of random number of large caves per mapchunk." -msgstr "" +msgstr "Долна граница на случайния брой големи пещери на парче от света." #: src/settings_translation_file.cpp msgid "Minimum limit of random number of small caves per mapchunk." -msgstr "" +msgstr "Долна граница на случайния брой малки пещери на парче от света." #: src/settings_translation_file.cpp msgid "Minimum vertex count for mesh buffers" -msgstr "" +msgstr "Минимално количество върхове за буфери за меша" #: src/settings_translation_file.cpp msgid "Mipmapping" @@ -5219,25 +5499,27 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Miscellaneous" -msgstr "" +msgstr "Разни" #: src/settings_translation_file.cpp msgid "Mod Profiler" -msgstr "" +msgstr "Инструмент за профилиране на модификации" #: src/settings_translation_file.cpp msgid "Mod Security" -msgstr "" +msgstr "Сигурност на модификации" #: src/settings_translation_file.cpp msgid "Mod channels" -msgstr "" +msgstr "Канали на модификации" #: src/settings_translation_file.cpp msgid "" "Modifier key bind for closing your world.\n" "Requires ESC + the selected key to work." msgstr "" +"Клавиш за затваряне на свят.\n" +"Изисква задържане на ESC + избрания клавиш." #: src/settings_translation_file.cpp msgid "Modifies the size of the HUD elements." @@ -5245,31 +5527,31 @@ msgstr "Променя размера на елементите на игров #: 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 "" +msgstr "Размер на равноширокия шрифт, кратност" #: src/settings_translation_file.cpp msgid "Mountain height noise" -msgstr "" +msgstr "Шум за височината на планините" #: src/settings_translation_file.cpp msgid "Mountain noise" -msgstr "" +msgstr "Шум за планините" #: src/settings_translation_file.cpp msgid "Mountain variation noise" -msgstr "" +msgstr "Шум за променливост на планините" #: src/settings_translation_file.cpp msgid "Mountain zero level" -msgstr "" +msgstr "Нулево ниво на планините" #: src/settings_translation_file.cpp msgid "Mouse sensitivity" @@ -5293,7 +5575,7 @@ msgstr "Движение наляво" #: src/settings_translation_file.cpp msgid "Move right" -msgstr "" +msgstr "Движение на дясно" #: src/settings_translation_file.cpp msgid "Movement threshold" @@ -5301,7 +5583,7 @@ msgstr "Праг на придвижване" #: src/settings_translation_file.cpp msgid "Mud noise" -msgstr "" +msgstr "Шум за калта" #: src/settings_translation_file.cpp msgid "Mute" @@ -5309,7 +5591,7 @@ msgstr "Заглушаване" #: src/settings_translation_file.cpp msgid "Mute sound" -msgstr "" +msgstr "Без звук" #: src/settings_translation_file.cpp msgid "" @@ -5318,6 +5600,11 @@ msgid "" "Current mapgens in a highly unstable state:\n" "- The optional floatlands of v7 (disabled by default)." msgstr "" +"Вида на света, който да бъде създаден.\n" +"При създаване на свят от главното меню\n" +"тази настройка бива пренебрегната.\n" +"Крайно нестабилни светове:\n" +"• летящите острови на свят „v7“ (изключени по подразбиране)." #: src/settings_translation_file.cpp msgid "" @@ -5325,17 +5612,24 @@ msgid "" "When running a server, a client connecting with this name is admin.\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 port to listen (UDP).\n" "This value will be overridden when starting from the main menu." msgstr "" +"Мрежов порт за слушане (UDP).\n" +"Когато играта се пуска от главното меню\n" +"стойността не се взима предвид." #: src/settings_translation_file.cpp msgid "Networking" @@ -5343,27 +5637,27 @@ msgstr "Мрежа" #: src/settings_translation_file.cpp msgid "New users need to input this password." -msgstr "" +msgstr "Новите потребители трябва да въведат паролата си." #: src/settings_translation_file.cpp msgid "Node and Entity Highlighting" -msgstr "Осветяване на възли и същности" +msgstr "Открояване на възли и същности" #: src/settings_translation_file.cpp msgid "Node highlighting" -msgstr "" +msgstr "Открояване на възли" #: src/settings_translation_file.cpp msgid "NodeTimer interval" -msgstr "" +msgstr "Интервал на NodeTimer" #: src/settings_translation_file.cpp msgid "Noises" -msgstr "" +msgstr "Шумове" #: src/settings_translation_file.cpp msgid "Number of emerge threads" -msgstr "" +msgstr "Брой подготвящи нишки" #: src/settings_translation_file.cpp msgid "" @@ -5378,6 +5672,16 @@ msgid "" "processes, especially in singleplayer and/or when running Lua code in\n" "'on_generated'. For many users the optimum setting may be '1'." msgstr "" +"Брой на подготвящите нишки, които да бъдат използвани.\n" +"• стойност 0 – автоматичен избор. Броят на нишките ще бъде равен\n" +"на „броя на процесорите - 2“, минимум 1.\n" +"• всяка друга стойност – брой на нишките, минимум 1.\n" +"\n" +"ВНИМАНИЕ: Увеличаване на стойността увеличава бързодействието\n" +"при създаване на света, но може да навреди на бързодействието на\n" +"играта като цяло и по-специално в режим на един играч и/или при\n" +"изпълняване на код на Lua при „on_generated“. За повечето потребители\n" +"оптималната стойност е 1." #: src/settings_translation_file.cpp msgid "" @@ -5385,6 +5689,10 @@ msgid "" "This is a trade-off between SQLite transaction overhead and\n" "memory consumption (4096=100MB, as a rule of thumb)." msgstr "" +"Броя допълнителни блокове, които едновременно могат\n" +"да бъдат заредени от командата /clearobjects.\n" +"Компромис между натоварването при трансакции на\n" +"SQLite и използването на памет (по правило, 4096 = 100 МБ)." #: src/settings_translation_file.cpp msgid "Number of messages a player may send per 10 seconds." @@ -5392,15 +5700,15 @@ msgstr "" "Броя на съобщенията, които играч може да изпрати за период от 10 секунди." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Number of threads to use for mesh generation.\n" "Value of 0 (default) will let Luanti automatically choose the number of " "threads." msgstr "" -"Брой процесорни нишки, използвани за създаване на мрежа.\n" -"Стойност 0 (подразбирана) ще остави Luanti автоматично да определи броя " -"налични нишки." +"Брой процесорни нишки, използвани за\n" +"създаване на мешове\n" +"Стойност 0 (подразбирана) ще остави Luanti\n" +"автоматично да определи броя налични нишки." #: src/settings_translation_file.cpp msgid "Occlusion Culler" @@ -5408,12 +5716,12 @@ msgstr "Метод на изчистване на невидими блоков #: src/settings_translation_file.cpp msgid "Occlusion Culling" -msgstr "Изчистване на невидими блокове" +msgstr "Премахване на невидимите блокове" #: src/settings_translation_file.cpp msgid "" "Opaqueness (alpha) of the shadow behind the default font, between 0 and 255." -msgstr "" +msgstr "Прозрачност на сянката на стандартния шрифт, между 0 и 255." #: src/settings_translation_file.cpp msgid "Open chat" @@ -5429,22 +5737,26 @@ msgid "" "formspec is\n" "open." msgstr "" +"Отваряне на менюто за спиране на играта когато прозорецът\n" +"загуби фокус. Не спира играта когато има отворен формуляр." #: src/settings_translation_file.cpp msgid "OpenGL debug" -msgstr "" +msgstr "Отстраняване на дефекти в OpenGL" #: src/settings_translation_file.cpp msgid "Optimize GUI for touchscreens" -msgstr "" +msgstr "Оптимизиране на интерфейса за сензорен екран" #: src/settings_translation_file.cpp msgid "Optional override for chat weblink color." msgstr "" +"Незадължително определяне цвета\n" +"на препратките към страници в интернет." #: src/settings_translation_file.cpp msgid "Other Effects" -msgstr "" +msgstr "Други ефекти" #: src/settings_translation_file.cpp msgid "" @@ -5452,62 +5764,73 @@ msgid "" "This font will be used for certain languages or if the default font is " "unavailable." msgstr "" +"Път към резервен шрифт. Шрифтът трябва да бъде TrueType.\n" +"Използва се с определени езици или ако стандартният шрифт не е наличен." #: src/settings_translation_file.cpp msgid "" "Path to save screenshots at. Can be an absolute or relative path.\n" "The folder will be created if it doesn't already exist." msgstr "" +"Път, където да бъдат запазвани екранните снимки.\n" +"Може да бъде пълен или относителен.\n" +"Ако папката не съществува ще бъде създадена." #: 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 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 "" "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 "Pause on lost window focus" -msgstr "" +msgstr "Пауза при загуба на фокус" #: src/settings_translation_file.cpp msgid "Per-player limit of queued blocks load from disk" -msgstr "" +msgstr "Огранич. опашк. зарежд. от диска блокове, за играч" #: src/settings_translation_file.cpp msgid "Per-player limit of queued blocks to generate" -msgstr "" +msgstr "Огранич. опашк. от създавани блокове, за играч" #: src/settings_translation_file.cpp msgid "Physics" -msgstr "" +msgstr "Физика" #: src/settings_translation_file.cpp msgid "Place repetition interval" -msgstr "" +msgstr "Интервал на повторно поставяне" #: src/settings_translation_file.cpp msgid "Player transfer distance" -msgstr "" +msgstr "Разстояние на пренасяне на играча" #: src/settings_translation_file.cpp msgid "Poisson filtering" -msgstr "" +msgstr "Филтър на Поасон" #: src/settings_translation_file.cpp msgid "Post Processing" -msgstr "" +msgstr "Последваща обработка" #: src/settings_translation_file.cpp msgid "" @@ -5516,16 +5839,24 @@ msgid "" "Enable this when you dig or place too often by accident.\n" "On touchscreens, this only affects digging." msgstr "" +"Предотвратява повторно копаене и поставяне при задържане\n" +"на съответните бутони.\n" +"Включете ако, когато копаете или поставяте прекалено често\n" +"по невнимание. При сензорни екрани засяга само копаенето." #: src/settings_translation_file.cpp msgid "Prevent mods from doing insecure things like running shell commands." msgstr "" +"Забраняване на модификациите да извършват опасни действия\n" +"като изпълняване на команди в обвивката." #: src/settings_translation_file.cpp msgid "" "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" @@ -5533,11 +5864,11 @@ msgstr "Правата, които играчите с „basic_privs“ мог #: src/settings_translation_file.cpp msgid "Profiler" -msgstr "" +msgstr "Инструмент за профилиране" #: src/settings_translation_file.cpp msgid "Prometheus listener address" -msgstr "" +msgstr "Адрес, на който слуша Prometheus" #: src/settings_translation_file.cpp msgid "" @@ -5547,6 +5878,13 @@ msgid "" "By default you can fetch metrics from http://127.0.0.1:30000/metrics.\n" "An empty value disables the metrics listener." msgstr "" +"Адрес, на който слуша Prometheus.\n" +"Ако клиента Luanti е компилиран с поддръжка на Prometheus\n" +"настройката включва слушателя за метрики на Prometheus\n" +"на зададения адрес.\n" +"По подразбиране можете да получавате метрики от\n" +"http://127.0.0.1:30000/metrics.\n" +"Празна стойност изключва слушателя за метрики." #: src/settings_translation_file.cpp msgid "Proportion of large caves that contain liquid." @@ -5558,23 +5896,23 @@ msgstr "Минимално издание на протокола" #: src/settings_translation_file.cpp msgid "Punch gesture" -msgstr "" +msgstr "Жест за удър" #: src/settings_translation_file.cpp msgid "Quicktune: decrement value" -msgstr "" +msgstr "QuickTune: намаляване на стойност" #: src/settings_translation_file.cpp msgid "Quicktune: increment value" -msgstr "" +msgstr "QuickTune: увеличаване на стойност" #: src/settings_translation_file.cpp msgid "Quicktune: select next entry" -msgstr "" +msgstr "QuickTune: избиране на следващ запис" #: src/settings_translation_file.cpp msgid "Quicktune: select previous entry" -msgstr "" +msgstr "QuickTune: избиране на предишен запис" #: src/settings_translation_file.cpp msgid "" @@ -5591,23 +5929,23 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Raises terrain to make valleys around the rivers." -msgstr "" +msgstr "Повдига релефа, за да се образуват долини около реките." #: src/settings_translation_file.cpp msgid "Random input" -msgstr "" +msgstr "Случаен вход" #: src/settings_translation_file.cpp msgid "Random mod load order" -msgstr "" +msgstr "Случаен ред на зареждане на модификациите" #: src/settings_translation_file.cpp msgid "Recent Chat Messages" -msgstr "" +msgstr "Последни съобщения" #: src/settings_translation_file.cpp msgid "Regular font path" -msgstr "" +msgstr "Път към обикновен шрифт" #: src/settings_translation_file.cpp msgid "Remember screen size" @@ -5615,21 +5953,23 @@ msgstr "Запазване на размера на екрана" #: src/settings_translation_file.cpp msgid "Remote media" -msgstr "" +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 "" +msgstr "Път за запазване на отчети" #: src/settings_translation_file.cpp msgid "" @@ -5646,8 +5986,9 @@ msgid "" msgstr "" "Ограничава достъпа до определени възможности от страна на клиента до " "сървърите .\n" -"Комбинирайте побитовите стойности по-долу, за да ограничите възможностите от " -"страна на клиента, или задайте стойност 0 за да премахнете ограниченията:\n" +"Комбинирайте побитовите стойности по-долу, за да ограничите възможностите\n" +"от страна на клиента, или задайте стойност 0 за да премахнете " +"ограниченията:\n" "LOAD_CLIENT_MODS: 1 (изключва зареждането на модификации на клиента)\n" "CHAT_MESSAGES: 2 (изключва извикването на send_chat_message от страна на " "клиента)\n" @@ -5661,73 +6002,73 @@ msgstr "" "клиента)" #: src/settings_translation_file.cpp -#, fuzzy msgid "Return to Main Menu" -msgstr "Главно меню" +msgstr "Към главното меню" #: src/settings_translation_file.cpp msgid "Ridge mountain spread noise" -msgstr "" +msgstr "Шум за разпространение на планинските хребети" #: src/settings_translation_file.cpp msgid "Ridge noise" -msgstr "" +msgstr "Шум за хребети" #: src/settings_translation_file.cpp msgid "Ridge underwater noise" -msgstr "" +msgstr "Шум за подводни хребети" #: src/settings_translation_file.cpp msgid "Ridged mountain size noise" -msgstr "" +msgstr "Шум за размера на планинските хребети" #: src/settings_translation_file.cpp msgid "River channel depth" -msgstr "" +msgstr "Дълбочина на речното корито" #: src/settings_translation_file.cpp msgid "River channel width" -msgstr "" +msgstr "Ширина на речното корито" #: src/settings_translation_file.cpp msgid "River depth" -msgstr "" +msgstr "Дълбочина на реките" #: src/settings_translation_file.cpp msgid "River noise" -msgstr "" +msgstr "Шум за реките" #: src/settings_translation_file.cpp msgid "River size" -msgstr "" +msgstr "Големина на реките" #: src/settings_translation_file.cpp msgid "River valley width" -msgstr "" +msgstr "Ширина на речните долини" #: src/settings_translation_file.cpp msgid "Rollback recording" -msgstr "" +msgstr "Записване с цел отменяне" #: src/settings_translation_file.cpp msgid "Rolling hill size noise" -msgstr "" +msgstr "Шум за размера на хълмовете" #: src/settings_translation_file.cpp msgid "Rolling hills spread noise" -msgstr "" +msgstr "Шум за разпространение на хълмовете" #: src/settings_translation_file.cpp msgid "Safe digging and placing" -msgstr "" +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 "" @@ -5740,7 +6081,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Saving map received from server" -msgstr "" +msgstr "Запазване картата, получена от сървъра" #: src/settings_translation_file.cpp msgid "" @@ -5797,10 +6138,14 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Second of 4 2D noises that together define hill/mountain range height." msgstr "" +"Вторият от четирите двумерни шума, които заедно\n" +"определят височината на възвишенията и планинските вериги." #: src/settings_translation_file.cpp msgid "Second of two 3D noises that together define tunnels." msgstr "" +"Вторият от двата тримерни шума, които заедно\n" +"определят тунелите." #: src/settings_translation_file.cpp msgid "See https://www.sqlite.org/pragma.html#pragma_synchronous" @@ -5912,10 +6257,13 @@ msgid "" "Send names of online players to the serverlist. If disabled only the player " "count is revealed." msgstr "" +"Изпращане на имената на играпите на линия към всички\n" +"сървъри от списъка със сървърите. Ако е изключено се\n" +"изпраща само броя на играчите." #: src/settings_translation_file.cpp msgid "Send player names to the server list" -msgstr "" +msgstr "Изпращ. имена на играчите към сървърите" #: src/settings_translation_file.cpp msgid "Server" @@ -5958,7 +6306,7 @@ msgstr "Порт на сървъра" #: src/settings_translation_file.cpp msgid "Server-side occlusion culling" -msgstr "Изчистване на невидимите блокове от страна на сървъра" +msgstr "Премахване на невидимите блокове от страна на сървъра" #: src/settings_translation_file.cpp msgid "Server/Env Performance" @@ -6038,7 +6386,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Set to true to enable waving leaves." -msgstr "" +msgstr "Отметнете, за да включите поклащането на листата." #: src/settings_translation_file.cpp msgid "Set to true to enable waving liquids (like water)." @@ -6072,7 +6420,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Shader path" -msgstr "" +msgstr "Път към шейдерите" #: src/settings_translation_file.cpp msgid "Shadow filter quality" @@ -6144,13 +6492,13 @@ msgid "" "Altering this value is for special usage, leaving it unchanged is\n" "recommended." msgstr "" -"Размер на генерираните парчета от картата, посочен в блокове от карта (16 " -"възела).\n" -"ВНИМАНИЕ: Няма полза от увеличаване на стойността над 5, но има странични " -"ефекти.\n" -"Намаляването на стойността увеличава гъстотата на пещерите и подземията.\n" -"Промяната на тази стойност е за специална употреба, а оставянето ѝ " -"непроменена се препоръчва." +"Размер на създаваните парчета от света,\n" +"посочен в блокове от света (16 възела).\n" +"ВНИМАНИЕ: Няма полза от увеличаване на стойността над 5,\n" +"но има странични ефекти. Намаляването на стойността\n" +"увеличава гъстотата на пещерите и подземията.\n" +"Промяната на тази стойност е за специална употреба,\n" +"а оставянето ѝ непроменена се препоръчва." #: src/settings_translation_file.cpp msgid "Sky Body Orbit Tilt" @@ -6320,7 +6668,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Temperature variation for biomes." -msgstr "" +msgstr "Вариране на температурата между различните биоми." #: src/settings_translation_file.cpp msgid "Terrain alternative noise" @@ -6340,7 +6688,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Terrain noise" -msgstr "" +msgstr "Шум за релефа" #: src/settings_translation_file.cpp msgid "" @@ -6348,6 +6696,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 "" @@ -6355,6 +6706,9 @@ 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" @@ -6388,28 +6742,34 @@ msgstr "" #: src/settings_translation_file.cpp msgid "The URL for the content repository" -msgstr "" +msgstr "Адрес, на хранилището за съдържание" #: src/settings_translation_file.cpp msgid "The dead zone of the joystick" -msgstr "" +msgstr "Мъртва зона на контролера" #: src/settings_translation_file.cpp msgid "" "The default format in which profiles are being saved,\n" "when calling `/profiler save [format]` without format." msgstr "" +"Подразбираният формат, в който профилите се запазват,\n" +"при изпълняване на `/profile save [format]` без зададен формат." #: src/settings_translation_file.cpp msgid "" "The delay in milliseconds after which a touch interaction is considered a " "long tap." msgstr "" +"Интервал, след който докосването се счита за продължително докосване, в " +"милисекунди." #: src/settings_translation_file.cpp msgid "" "The file path relative to your world path in which profiles will be saved to." msgstr "" +"Относителен път към папка, спрямо папката на света, в който да бъдат " +"запазвани профилите." #: src/settings_translation_file.cpp msgid "" @@ -6423,10 +6783,20 @@ msgid "" "Known from the classic Luanti mobile controls.\n" "Combat is more or less impossible." msgstr "" +"Жестът на удар по играч или обект.\n" +"Може да бъде презаписан от игра или модификация.\n" +"\n" +"* Кратко докосване\n" +"Лесно за използване и добре познато от други игри, чието име не трябва да " +"бъде изричано.\n" +"\n" +"* Продължително докосване\n" +"Познато от класическото управление на Luanti за мобилно устройство.\n" +"Да бъде водена битка е почти невъзможно." #: src/settings_translation_file.cpp msgid "The identifier of the joystick to use" -msgstr "" +msgstr "Идентификатор на използвания контролер" #: src/settings_translation_file.cpp msgid "" @@ -6444,6 +6814,19 @@ msgid "" "Use dedicated dig/place buttons to interact.\n" "Interaction happens at crosshair position." msgstr "" +"Вида на управлението на копаене / поставяне.\n" +"\n" +"• Докосване\n" +"Продължително / кратко докосване някъде по екрана.\n" +"Действието се извършва на мястото на докосването.\n" +"\n" +"• Докосване с мерник\n" +"Продължително / кратко докосване някъде по екрана.\n" +"Действието се извършва на мястото на мерника.\n" +"\n" +"• Бутони с мерник\n" +"За копаене / поставяне се използват определени бутони.\n" +"Действието се извършва на мястото на мерника." #: src/settings_translation_file.cpp msgid "" @@ -6466,7 +6849,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "The network interface that the server listens on." -msgstr "" +msgstr "Мрежов интерфейс, на който слуша сървъра." #: src/settings_translation_file.cpp msgid "" @@ -6487,7 +6870,7 @@ msgid "" "This should be configured together with active_object_send_range_blocks." msgstr "" "Радиусът на обема от блокове около всеки играч, който е обект на\n" -"свързаните с активни блокове действия, посочен в блокове на картата (16 " +"свързаните с активни блокове действия, посочен в блокове от света (16 " "възела).\n" "В активните блокове се зареждат обекти и се изпълняват ABM.\n" "Това е и минималният обхват, в който се поддържат активни обекти (зверове).\n" @@ -6505,6 +6888,8 @@ msgid "" "The sensitivity of the joystick axes for moving the\n" "in-game view frustum around." msgstr "" +"Чувствителност на осите на контролера при\n" +"преместване на погледа в играта." #: src/settings_translation_file.cpp msgid "" @@ -6534,16 +6919,20 @@ 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 node placements when holding\n" "the place button." msgstr "" +"Време между повтарящо се поставяне на възли, при задържане\n" +"на бутона за поставяне, в секунди." #: src/settings_translation_file.cpp msgid "The type of joystick" -msgstr "" +msgstr "Вид на контролера" #: src/settings_translation_file.cpp msgid "" @@ -6551,28 +6940,36 @@ msgid "" "enabled. Also, the vertical distance over which humidity drops by 10 if\n" "'altitude_dry' is enabled." msgstr "" +"Вертикалното разстояние, на което температурата пада с 20\n" +"ако настройката „altitude_chill“ е включена. А също, вертикалното\n" +"разстояние, на което влажността пада с 20 ако настройката\n" +"„altitude_dry“ е включена." #: src/settings_translation_file.cpp msgid "Third of 4 2D noises that together define hill/mountain range height." msgstr "" +"Третият от четирите двумерни шума, които заедно\n" +"определят височината на възвишенията и планинските вериги." #: src/settings_translation_file.cpp msgid "Threshold for long taps" -msgstr "" +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 "" +"Време на съществуване на хвърлените предмети, в секунди.\n" +"Задайте -1 за премахване на ограничението." #: src/settings_translation_file.cpp msgid "Time of day when a new world is started, in millihours (0-23999)." -msgstr "" +msgstr "Час от деня, в който да започва новия свят, в миличасове (0 - 23999)." #: 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, in seconds." @@ -6614,7 +7011,7 @@ msgstr "Превкл. режима на камерата" #: src/settings_translation_file.cpp msgid "Toggle camera update" -msgstr "" +msgstr "Превкл. обновяване на камерата" #: src/settings_translation_file.cpp msgid "Toggle cinematic mode" @@ -6633,9 +7030,8 @@ msgid "Toggle fullscreen" msgstr "Превкл. цял екран" #: src/settings_translation_file.cpp -#, fuzzy msgid "Toggle large chat console" -msgstr "Превкл. разговори" +msgstr "Превкл. голямо поле за разговори" #: src/settings_translation_file.cpp msgid "Toggle pitchmove" @@ -6646,9 +7042,8 @@ msgid "Toggle profiler" msgstr "Превкл. профилиране" #: src/settings_translation_file.cpp -#, fuzzy msgid "Toggle unlimited view range" -msgstr "Клавиш за превключване неограничен обхват на видимост." +msgstr "Превключване неограничен обхват на видимост" #: src/settings_translation_file.cpp msgid "" @@ -6658,7 +7053,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Tooltip delay" -msgstr "" +msgstr "Забавяне на подказката" #: src/settings_translation_file.cpp msgid "Touchscreen" @@ -6713,7 +7108,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Trusted mods" -msgstr "" +msgstr "Доверени модификации" #: src/settings_translation_file.cpp msgid "" @@ -6763,7 +7158,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Unlimited player transfer distance" -msgstr "" +msgstr "Неограничено разстояние на пренасяне на играча" #: src/settings_translation_file.cpp msgid "Unload unused server data" @@ -6808,6 +7203,10 @@ msgid "" "This flag enables use of raytraced occlusion culling test for\n" "client mesh sizes smaller than 4x4x4 map blocks." msgstr "" +"Лъчево премахване на невидимите блокове.\n" +"Флагът включва проверка за използването на лъчевото премахване\n" +"на невидими блокове за клиентски мешове по-малки от 4х4х4\n" +"блокове от картата." #: src/settings_translation_file.cpp msgid "Use smooth cloud shading." @@ -6826,6 +7225,9 @@ msgid "" "If enabled, virtual joystick will also tap \"Aux1\" button when out of main " "circle." msgstr "" +"Използвайте виртуален контролер за използване на бутон „Aux1“.\n" +"Когато е отметнато виртуалният контролер може да натиска бутон „Aux1“, " +"когато се намира извън основния кръг." #: src/settings_translation_file.cpp msgid "User Interfaces" @@ -6853,7 +7255,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Variation of biome filler depth." -msgstr "" +msgstr "Колебание на дълбочината на запълване на различните биоми." #: src/settings_translation_file.cpp msgid "Variation of maximum mountain height (in nodes)." @@ -6899,7 +7301,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "View bobbing factor" -msgstr "" +msgstr "Коефициент на поклащане" #: src/settings_translation_file.cpp msgid "View distance in nodes." @@ -6911,7 +7313,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Virtual joystick triggers Aux1 button" -msgstr "" +msgstr "Виртуалният контролер натиска бутон „Aux1“" #: src/settings_translation_file.cpp msgid "Volume" @@ -6919,7 +7321,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Volume multiplier when the window is unfocused." -msgstr "" +msgstr "Множител на звука, когато прозорецът загуби фокус." #: src/settings_translation_file.cpp msgid "" @@ -6929,7 +7331,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Volume when unfocused" -msgstr "" +msgstr "Сила на звука при загуба на фокус" #: src/settings_translation_file.cpp msgid "Volumetric lighting" @@ -6955,6 +7357,8 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Walking, flying and climbing speed in fast mode, in nodes per second." msgstr "" +"Скорост на ходене, летене и катерене в режим\n" +"на бързо придвижване в възли/секунда." #: src/settings_translation_file.cpp msgid "Water level" @@ -6970,7 +7374,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Waving leaves" -msgstr "" +msgstr "Поклащащи се листа" #: src/settings_translation_file.cpp msgid "Waving liquids" @@ -7005,6 +7409,9 @@ msgid "" "When enabled, the GUI is optimized to be more usable on touchscreens.\n" "Whether this is enabled by default depends on your hardware form-factor." msgstr "" +"Когато е отметнато, интерфейсът е оптимизиран за лесно използване\n" +"посредством сензорен екран.\n" +"Състоянието по подразбиране зависи от хардуера на устройството." #: src/settings_translation_file.cpp msgid "" @@ -7194,5 +7601,68 @@ msgstr "Изчакване за взаимодействие с cURL" msgid "cURL parallel limit" msgstr "Ограничение на едновременните връзки на cURL" -#~ msgid "Apply specular shading to nodes." -#~ msgstr "Прилагане на рефлекторна сянка към възлите." +#~ msgid "Apps" +#~ msgstr "Приложения" + +#~ msgid "End" +#~ msgstr "End" + +#~ msgid "Erase EOF" +#~ msgstr "Премахване EOF" + +#~ msgid "Execute" +#~ msgstr "Изпълняване" + +#~ msgid "Help" +#~ msgstr "Help" + +#~ msgid "Home" +#~ msgstr "Home" + +#~ msgid "IME Accept" +#~ msgstr "IME: Приемане" + +#~ msgid "IME Convert" +#~ msgstr "IME: Превъщане" + +#~ msgid "IME Escape" +#~ msgstr "IME: Избягване" + +#~ msgid "IME Mode Change" +#~ msgstr "IME: Смяна на режима" + +#~ msgid "IME Nonconvert" +#~ msgstr "IME: Без преобразуване" + +#~ msgid "Left Button" +#~ msgstr "Ляв бутон" + +#~ msgid "Middle Button" +#~ msgstr "Среден бутон" + +#~ msgid "No world created or selected!" +#~ msgstr "Не е създаден или избран свят!" + +#~ msgid "OEM Clear" +#~ msgstr "OEM Изчистване" + +#~ msgid "Right Button" +#~ msgstr "Десен бутон" + +#~ msgid "Select" +#~ msgstr "Избиране" + +#~ msgid "Sleep" +#~ msgstr "Сън" + +#~ msgid "Snapshot" +#~ msgstr "Снимка на екрана" + +#~ msgid "Tab" +#~ msgstr "Табулатор" + +#~ msgid "X Button 1" +#~ msgstr "Доп. бутон 1" + +#~ msgid "X Button 2" +#~ msgstr "Доп. бутон 2" diff --git a/po/br/luanti.po b/po/br/luanti.po index 7085d59e9..07e26c5d9 100644 --- a/po/br/luanti.po +++ b/po/br/luanti.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: luanti\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-07-11 19:59+0200\n" -"PO-Revision-Date: 2025-04-22 22:19+0000\n" +"POT-Creation-Date: 2025-09-23 19:19+0200\n" +"PO-Revision-Date: 2025-09-07 00:02+0000\n" "Last-Translator: Divarrek \n" "Language-Team: Breton \n" @@ -21,11 +21,11 @@ msgstr "" "&& n % 100 != 92) ? 1 : ((((n % 10 == 3 || n % 10 == 4) || n % 10 == 9) && " "(n % 100 < 10 || n % 100 > 19) && (n % 100 < 70 || n % 100 > 79) && (n % 100 " "< 90 || n % 100 > 99)) ? 2 : ((n != 0 && n % 1000000 == 0) ? 3 : 4)));\n" -"X-Generator: Weblate 5.11.1-dev\n" +"X-Generator: Weblate 5.14-dev\n" #: builtin/client/chatcommands.lua msgid "Clear the out chat queue" -msgstr "" +msgstr "Skarzhañ lostennad ar flapadenn" #: builtin/client/chatcommands.lua msgid "Empty command." @@ -53,7 +53,7 @@ msgstr "C'hoarierien enlinenn: " #: builtin/client/chatcommands.lua msgid "The out chat queue is now empty." -msgstr "" +msgstr "Goullo eo lostennad ar flapadenn." #: builtin/client/chatcommands.lua msgid "This command is disabled by server." @@ -73,7 +73,7 @@ msgstr "Urzhiad dihegerz: " #: builtin/common/chatcommands.lua msgid "Get help for commands (-t: output in chat)" -msgstr "" +msgstr "Kaout skoazell an urzhiadoù (-t: diskouez ar flapadenn)" #: builtin/common/chatcommands.lua msgid "" @@ -92,16 +92,15 @@ msgstr "Merdeiñ" #: builtin/common/settings/components.lua msgid "Conflicts with \"$1\"" -msgstr "" +msgstr "Kenniñv gant \"$1\"" #: builtin/common/settings/components.lua msgid "Edit" msgstr "Embann" #: builtin/common/settings/components.lua -#, fuzzy msgid "Remove keybinding" -msgstr "Berradennoù klavier." +msgstr "Dilemel ar verradenn klavier" #: builtin/common/settings/components.lua msgid "Select directory" @@ -113,11 +112,11 @@ msgstr "Diuzañ ur restr" #: builtin/common/settings/components.lua msgid "Set" -msgstr "" +msgstr "Arventennañ" #: builtin/common/settings/dlg_change_mapgen_flags.lua msgid "(No description of setting given)" -msgstr "" +msgstr "(Deskrivadur ebet evit an arventenn-mañ)" #: builtin/common/settings/dlg_change_mapgen_flags.lua msgid "2D Noise" @@ -168,15 +167,15 @@ msgstr "Hadenn" #: builtin/common/settings/dlg_change_mapgen_flags.lua msgid "X spread" -msgstr "" +msgstr "Strewiñ X" #: builtin/common/settings/dlg_change_mapgen_flags.lua msgid "Y spread" -msgstr "" +msgstr "Strewiñ Y" #: builtin/common/settings/dlg_change_mapgen_flags.lua msgid "Z spread" -msgstr "" +msgstr "Strewiñ Z" #. ~ "absvalue" is a noise parameter flag. #. It is short for "absolute value". @@ -199,7 +198,7 @@ msgstr "dre ziouer" #. the settings menu. #: builtin/common/settings/dlg_change_mapgen_flags.lua msgid "eased" -msgstr "" +msgstr "aesaet" #: builtin/common/settings/dlg_settings.lua msgid "(The game will need to enable automatic exposure as well)" @@ -233,7 +232,7 @@ msgstr "Distreiñ" #: builtin/common/settings/dlg_settings.lua msgid "Buttons with crosshair" -msgstr "" +msgstr "Boutonoù gant ur buker" #: builtin/common/settings/dlg_settings.lua src/gui/touchscreenlayout.cpp #: src/settings_translation_file.cpp @@ -263,7 +262,7 @@ msgstr "Hollek" #: builtin/common/settings/dlg_settings.lua msgid "Long tap" -msgstr "" +msgstr "Stokad hir" #: builtin/common/settings/dlg_settings.lua msgid "Movement" @@ -288,7 +287,7 @@ msgstr "Klask" #: builtin/common/settings/dlg_settings.lua msgid "Short tap" -msgstr "" +msgstr "Stokad berr" #: builtin/common/settings/dlg_settings.lua msgid "Show advanced settings" @@ -299,9 +298,8 @@ msgid "Show technical names" msgstr "Diskouez an anvioù teknikel" #: builtin/common/settings/dlg_settings.lua -#, fuzzy msgid "Tap" -msgstr "Taolenn" +msgstr "Stokad" #: builtin/common/settings/dlg_settings.lua msgid "Tap with crosshair" @@ -313,7 +311,7 @@ msgstr "Aozadur ar skramm-stekiñ" #: builtin/common/settings/settingtypes.lua msgid "Client Mods" -msgstr "" +msgstr "Kemmoù an arval" #: builtin/common/settings/settingtypes.lua msgid "Content: Games" @@ -346,15 +344,15 @@ msgstr "Izel" #: builtin/common/settings/shadows_component.lua msgid "Medium" -msgstr "" +msgstr "Etre" #: builtin/common/settings/shadows_component.lua msgid "Very High" -msgstr "" +msgstr "Uhel kenañ" #: builtin/common/settings/shadows_component.lua msgid "Very Low" -msgstr "" +msgstr "Izel kenañ" #: builtin/fstk/ui.lua msgid "" @@ -390,7 +388,7 @@ msgstr "Ne genglot ket handelv ar c'homenad. " #: builtin/mainmenu/common.lua msgid "Server enforces protocol version $1. " -msgstr "" +msgstr "An dafariad a lak da ret handelv $1 ar c'homenad. " #: builtin/mainmenu/common.lua msgid "Server supports protocol versions between $1 and $2. " @@ -400,7 +398,7 @@ msgstr "" #: builtin/mainmenu/common.lua msgid "We only support protocol version $1." -msgstr "" +msgstr "Skoret e vez ganeomp handelv $1 ar c'homenad nemetken." #: builtin/mainmenu/common.lua msgid "We support protocol versions between version $1 and $2." @@ -452,7 +450,7 @@ msgstr "O pellgargañ..." #: builtin/mainmenu/content/dlg_contentdb.lua msgid "Featured" -msgstr "" +msgstr "Dibabet" #: builtin/mainmenu/content/dlg_contentdb.lua msgid "Games" @@ -479,7 +477,7 @@ msgstr "Hizivadur ebet" #: builtin/mainmenu/content/dlg_contentdb.lua msgid "Queued" -msgstr "" +msgstr "Da heul" #: builtin/mainmenu/content/dlg_contentdb.lua msgid "Texture Packs" @@ -495,7 +493,7 @@ msgstr "Hizivaat pep tra [$1}" #: builtin/mainmenu/content/dlg_install.lua msgid "$1 and $2 dependencies will be installed." -msgstr "" +msgstr "$1 a vo bet staliet asambles gant $2 amzalc'h." #: builtin/mainmenu/content/dlg_install.lua msgid "$1 by $2" @@ -515,12 +513,12 @@ msgstr "Staliet dija" #: builtin/mainmenu/content/dlg_install.lua msgid "Base Game:" -msgstr "" +msgstr "C'hoari diazez:" #: builtin/mainmenu/content/dlg_install.lua #: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/tab_content.lua msgid "Dependencies:" -msgstr "" +msgstr "Amzalc'hioù:" #: builtin/mainmenu/content/dlg_install.lua msgid "Error getting dependencies for package $1" @@ -537,7 +535,7 @@ msgstr "Staliañ $1" #: builtin/mainmenu/content/dlg_install.lua msgid "Install missing dependencies" -msgstr "" +msgstr "Staliañ an amzalc'hioù a vank" #: builtin/mainmenu/content/dlg_install.lua msgid "Not found" @@ -549,7 +547,7 @@ msgstr "" #: builtin/mainmenu/content/dlg_install.lua msgid "You need to install a game before you can install a mod" -msgstr "" +msgstr "Ur c'hoari a vez ret staliañ a-raok bezañ gouest da staliañ ur c'hemm" #: builtin/mainmenu/content/dlg_overwrite.lua msgid "\"$1\" already exists. Would you like to overwrite it?" @@ -569,7 +567,7 @@ msgstr "Deskrivadur" #: builtin/mainmenu/content/dlg_package.lua msgid "Donate" -msgstr "" +msgstr "Donezonañ" #: builtin/mainmenu/content/dlg_package.lua msgid "Error loading package information" @@ -621,13 +619,12 @@ msgid "Website" msgstr "Lec'hienn web" #: builtin/mainmenu/content/dlg_package.lua -#, fuzzy msgid "by $1" -msgstr "$1 gant $2" +msgstr "gant $1" #: builtin/mainmenu/content/dlg_package.lua msgid "by $1 — $2 downloads — +$3 / $4 / -$5" -msgstr "" +msgstr "gant $1 — $2 a bellgargadennoù — +$3 / $4 / -$5" #: builtin/mainmenu/content/pkgmgr.lua msgid "$1 (Enabled)" @@ -635,7 +632,7 @@ msgstr "$1 (Gweredekaet)" #: builtin/mainmenu/content/pkgmgr.lua msgid "$1 mods" -msgstr "" +msgstr "$1 a gemmoù" #: builtin/mainmenu/content/pkgmgr.lua msgid "Failed to install $1 to $2" @@ -662,6 +659,8 @@ msgid "" "Players connected to\n" "$1" msgstr "" +"C'hoarierien kennasket ouzh\n" +"$1" #: builtin/mainmenu/dlg_config_world.lua msgid "(Enabled, has error)" @@ -677,7 +676,7 @@ msgstr "Diweredekaat pep tra" #: builtin/mainmenu/dlg_config_world.lua msgid "Disable modpack" -msgstr "" +msgstr "Diweredekaat ar pakad kemmoù" #: builtin/mainmenu/dlg_config_world.lua msgid "Enable all" @@ -685,7 +684,7 @@ msgstr "Gweredekaat pep tra" #: builtin/mainmenu/dlg_config_world.lua msgid "Enable modpack" -msgstr "" +msgstr "Gweredekaat ar pakad kemmoù" #: builtin/mainmenu/dlg_config_world.lua msgid "" @@ -695,15 +694,15 @@ msgstr "" #: builtin/mainmenu/dlg_config_world.lua msgid "Find More Mods" -msgstr "" +msgstr "Kavout kemmoù ouzhpenn" #: builtin/mainmenu/dlg_config_world.lua msgid "Mod:" -msgstr "" +msgstr "Kemm:" #: builtin/mainmenu/dlg_config_world.lua msgid "No (optional) dependencies" -msgstr "" +msgstr "Amzalc'h (diret) ebet" #: builtin/mainmenu/dlg_config_world.lua msgid "No game description provided." @@ -719,11 +718,11 @@ msgstr "" #: builtin/mainmenu/dlg_config_world.lua msgid "No optional dependencies" -msgstr "" +msgstr "Amzalc'h diret ebet" #: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/tab_content.lua msgid "Optional dependencies:" -msgstr "" +msgstr "Amzalc'hioù diret:" #: builtin/mainmenu/dlg_config_world.lua msgid "World:" @@ -789,7 +788,7 @@ msgstr "" #: builtin/mainmenu/dlg_create_world.lua msgid "Dungeons" -msgstr "" +msgstr "Doñjonoù" #: builtin/mainmenu/dlg_create_world.lua msgid "Flat terrain" @@ -952,17 +951,15 @@ msgstr "" #: builtin/mainmenu/dlg_rebind_keys.lua msgid "Close" -msgstr "" +msgstr "Serriñ" #: builtin/mainmenu/dlg_rebind_keys.lua -#, fuzzy msgid "Keybindings changed" -msgstr "Berradennoù klavier." +msgstr "Cheñchet eo bet ar berradennoù klavier" #: builtin/mainmenu/dlg_rebind_keys.lua -#, fuzzy msgid "Open settings" -msgstr "Arventennoù" +msgstr "Digeriñ an arventennoù" #: builtin/mainmenu/dlg_rebind_keys.lua msgid "The input handling system was reworked in Luanti 5.12.0." @@ -1101,7 +1098,7 @@ msgstr "A-zivout" #: builtin/mainmenu/tab_about.lua msgid "Active Contributors" -msgstr "" +msgstr "Perzhidi pennañ" #: builtin/mainmenu/tab_about.lua msgid "Active renderer:" @@ -1230,10 +1227,6 @@ msgstr "" msgid "New" msgstr "Nevez" -#: builtin/mainmenu/tab_local.lua -msgid "No world created or selected!" -msgstr "Bed ebet bet krouet pe diuzet!" - #: builtin/mainmenu/tab_local.lua msgid "Play Game" msgstr "C'hoari" @@ -1359,7 +1352,7 @@ msgstr "Graet!" #: src/client/client.cpp #, c-format msgid "Failed to save screenshot to \"%s\"" -msgstr "" +msgstr "C'hwitadenn war an enrollañ an dapadenn-skramm da \"%s\"" #: src/client/client.cpp msgid "Initializing nodes" @@ -1378,9 +1371,9 @@ msgid "Rebuilding shaders..." msgstr "" #: src/client/client.cpp -#, fuzzy, c-format +#, c-format msgid "Saved screenshot to \"%s\"" -msgstr "Tapadennoù skramm" +msgstr "Tapadenn skramm enrollet da \"%s\"" #: src/client/clientlauncher.cpp msgid "Could not find or load game: " @@ -1819,10 +1812,6 @@ msgstr "" msgid "Profiler shown (page %d of %d)" msgstr "" -#: src/client/keycode.cpp -msgid "Apps" -msgstr "Arloadoù" - #: src/client/keycode.cpp msgid "Backspace" msgstr "Kilesaouiñ" @@ -1853,45 +1842,19 @@ msgid "Down Arrow" msgstr "Bir traoñ" #: src/client/keycode.cpp -msgid "End" -msgstr "Dibenn" - -#: src/client/keycode.cpp -msgid "Erase EOF" -msgstr "" - -#: src/client/keycode.cpp -msgid "Execute" -msgstr "" - -#: src/client/keycode.cpp -msgid "Help" -msgstr "Skoazell" +#, fuzzy +msgid "End Key" +msgstr "Lañser" #: src/client/keycode.cpp #, fuzzy -msgid "Home" -msgstr "Degemer" +msgid "Help Key" +msgstr "Dilemel" #: 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 "" +#, fuzzy +msgid "Home Key" +msgstr "Zoum" #: src/client/keycode.cpp msgid "Insert" @@ -1902,8 +1865,9 @@ msgid "Left Arrow" msgstr "Bir kleiz" #: src/client/keycode.cpp -msgid "Left Button" -msgstr "Klik kleiz" +#, fuzzy +msgid "Left Click" +msgstr "Reol. kleiz" #: src/client/keycode.cpp msgid "Left Control" @@ -1917,19 +1881,27 @@ msgstr "Lañser kleiz" msgid "Left Shift" msgstr "Pennlizh. kleiz" +#. ~ Name of key #: src/client/keycode.cpp msgid "Left Windows" msgstr "Windows kleiz" -#. ~ Key name, common on Windows keyboards #: src/client/keycode.cpp #, fuzzy msgid "Menu Key" msgstr "Lañser" #: src/client/keycode.cpp -msgid "Middle Button" -msgstr "Bouton kreiz" +msgid "Middle Click" +msgstr "" + +#: src/client/keycode.cpp +msgid "Mouse X1" +msgstr "" + +#: src/client/keycode.cpp +msgid "Mouse X2" +msgstr "" #: src/client/keycode.cpp msgid "Num Lock" @@ -1995,10 +1967,6 @@ msgstr "Klavier niverel 8" msgid "Numpad 9" msgstr "Klavier niverel 9" -#: src/client/keycode.cpp -msgid "OEM Clear" -msgstr "" - #: src/client/keycode.cpp msgid "Page Down" msgstr "Pajenn traoñ" @@ -2019,19 +1987,20 @@ msgstr "C'hoari" #. ~ "Print screen" key #: src/client/keycode.cpp msgid "Print" -msgstr "" +msgstr "Tap. skramm" #: src/client/keycode.cpp msgid "Return Key" -msgstr "" +msgstr "Distro" #: src/client/keycode.cpp msgid "Right Arrow" msgstr "Bir dehoù" #: src/client/keycode.cpp -msgid "Right Button" -msgstr "Klik dehou" +#, fuzzy +msgid "Right Click" +msgstr "Reol. dehoù" #: src/client/keycode.cpp msgid "Right Control" @@ -2045,6 +2014,7 @@ msgstr "Lañser dehoù" msgid "Right Shift" msgstr "Pennlizh. dehoù" +#. ~ Name of key #: src/client/keycode.cpp msgid "Right Windows" msgstr "Windows dehoù" @@ -2053,50 +2023,31 @@ msgstr "Windows dehoù" msgid "Scroll Lock" msgstr "Prennañ dibun" -#. ~ Key name #: src/client/keycode.cpp -msgid "Select" -msgstr "Diuzañ" +#, fuzzy +msgid "Select Key" +msgstr "Dilemel" #: src/client/keycode.cpp msgid "Shift Key" msgstr "Pennlizherenn" -#: src/client/keycode.cpp -msgid "Sleep" -msgstr "" - -#: src/client/keycode.cpp -msgid "Snapshot" -msgstr "" - #: src/client/keycode.cpp msgid "Space" msgstr "Esaouenn" #: src/client/keycode.cpp -msgid "Tab" -msgstr "Taolenn" +#, fuzzy +msgid "Tab Key" +msgstr "Ehan" #: src/client/keycode.cpp msgid "Up Arrow" msgstr "Bir krec'h" -#: src/client/keycode.cpp -msgid "X Button 1" -msgstr "Bouton X 1" - -#: src/client/keycode.cpp -msgid "X Button 2" -msgstr "Bouton X 2" - -#: src/client/keycode.cpp -msgid "Zoom Key" -msgstr "Zoum" - #: src/client/minimap.cpp msgid "Minimap hidden" -msgstr "" +msgstr "Minikartenn guzhet" #: src/client/minimap.cpp #, c-format @@ -2194,7 +2145,7 @@ msgstr "Mud" #: src/gui/guiVolumeChange.cpp #, c-format msgid "Sound Volume: %d%%" -msgstr "" +msgstr "Tregern ar son: %d%%" #: src/gui/touchscreeneditor.cpp msgid "Add button" @@ -2262,7 +2213,7 @@ msgstr "" #: src/gui/touchscreenlayout.cpp src/settings_translation_file.cpp msgid "Place/use" -msgstr "" +msgstr "Plasañ/implijout" #: src/gui/touchscreenlayout.cpp msgid "Range select" @@ -2290,7 +2241,7 @@ msgstr "(Di)weredekaat an nijal" #: src/gui/touchscreenlayout.cpp src/settings_translation_file.cpp msgid "Toggle minimap" -msgstr "" +msgstr "(De)weredekaat ar minikartenn" #: src/gui/touchscreenlayout.cpp src/settings_translation_file.cpp msgid "Toggle noclip" @@ -2495,12 +2446,11 @@ msgstr "" msgid "" "3D support.\n" "Currently supported:\n" -"- none: no 3d output.\n" -"- anaglyph: cyan/magenta color 3d.\n" -"- interlaced: odd/even line based polarization screen support.\n" -"- topbottom: split screen top/bottom.\n" -"- sidebyside: split screen side by side.\n" -"- crossview: Cross-eyed 3d" +"- none: no 3D output\n" +"- anaglyph: cyan/magenta color 3D\n" +"- topbottom: split screen top/bottom\n" +"- sidebyside: split screen side-by-side\n" +"- crossview: cross-eyed 3D" msgstr "" #: src/settings_translation_file.cpp @@ -2713,7 +2663,7 @@ msgstr "Aodio" #: src/settings_translation_file.cpp msgid "Automatic jumping" -msgstr "" +msgstr "Lammat ez-emgefreek" #: src/settings_translation_file.cpp msgid "Automatically jump up single-node obstacles." @@ -2823,6 +2773,17 @@ msgstr "" msgid "Camera smoothing in cinematic mode" msgstr "" +#: src/settings_translation_file.cpp +msgid "Capture Tracy zones" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Capture Tracy zones with the profiler's instrumentation.\n" +"You need to build with Tracy to use this, see doc/developing/profiling.md\n" +"for details." +msgstr "" + #: src/settings_translation_file.cpp msgid "Cave noise" msgstr "Trouz ar greier" @@ -2883,7 +2844,7 @@ msgstr "Urzhiadoù ar flapiñ" #: src/settings_translation_file.cpp msgid "Chat font size" -msgstr "" +msgstr "Ment nodrezh ar flapiñ" #: src/settings_translation_file.cpp msgid "Chat log level" @@ -3103,7 +3064,7 @@ msgstr "Kemennadenn sac'hadenn" #: src/settings_translation_file.cpp msgid "Crosshair alpha" -msgstr "" +msgstr "Demerez ar buker" #: src/settings_translation_file.cpp msgid "" @@ -3304,6 +3265,10 @@ msgstr "" msgid "Developer Options" msgstr "" +#: src/settings_translation_file.cpp +msgid "Disable if you only want to instrument with Tracy." +msgstr "" + #: src/settings_translation_file.cpp msgid "Disallow empty passwords" msgstr "Na aotren ket gerioù-tremen goullo" @@ -3350,15 +3315,15 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Dungeon maximum Y" -msgstr "" +msgstr "Y uheloc'h an doñjonoù" #: src/settings_translation_file.cpp msgid "Dungeon minimum Y" -msgstr "" +msgstr "Y izeloc'h an doñjonoù" #: src/settings_translation_file.cpp msgid "Dungeon noise" -msgstr "" +msgstr "Trouz an doñjonoù" #: src/settings_translation_file.cpp msgid "Effects" @@ -3791,7 +3756,7 @@ msgstr "Skramm a-bezh" #: src/settings_translation_file.cpp msgid "Fullscreen mode." -msgstr "" +msgstr "Mod skrammad a-bezh." #: src/settings_translation_file.cpp msgid "GUI" @@ -3834,11 +3799,11 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Graphics" -msgstr "" +msgstr "Kevregañ" #: src/settings_translation_file.cpp msgid "Graphics and Audio" -msgstr "" +msgstr "Kevregañ hag aodio" #: src/settings_translation_file.cpp msgid "Gravity" @@ -3854,7 +3819,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "HTTP mods" -msgstr "" +msgstr "Kemmoù HTTP" #: src/settings_translation_file.cpp msgid "HUD" @@ -4263,7 +4228,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Increase volume" -msgstr "" +msgstr "Kreskaat an tregern" #: src/settings_translation_file.cpp msgid "Initial vertical speed when jumping, in nodes per second." @@ -4301,7 +4266,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Interaction style" -msgstr "" +msgstr "Doare etrewezhiañ" #: src/settings_translation_file.cpp msgid "Interval of saving important changes in the world, stated in seconds." @@ -4473,9 +4438,8 @@ msgid "Key for toggling the display of the profiler. Used for development." msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Keybindings" -msgstr "Berradennoù klavier." +msgstr "Berradennoù klavier" #: src/settings_translation_file.cpp msgid "Keyboard and Mouse" @@ -4593,7 +4557,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Lighting" -msgstr "Sklerijennañ" +msgstr "Goulaouiñ" #: src/settings_translation_file.cpp msgid "" @@ -4987,6 +4951,11 @@ msgstr "" msgid "Maximum users" msgstr "Niver uhelañ a c'hoarierien" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Measure time samples" +msgstr "Temploù an dezerzh" + #: src/settings_translation_file.cpp msgid "Message of the day" msgstr "Kemennadenn an deiz" @@ -5913,7 +5882,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Smooth lighting" -msgstr "" +msgstr "Goulaouiñ lenkr" #: src/settings_translation_file.cpp msgid "Smooth scrolling" @@ -5941,11 +5910,11 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Soft clouds" -msgstr "" +msgstr "Koumoul dous" #: src/settings_translation_file.cpp msgid "Soft shadow radius" -msgstr "" +msgstr "Skin ar skeud kuñv" #: src/settings_translation_file.cpp msgid "Sound" @@ -5953,7 +5922,7 @@ msgstr "Aodio" #: src/settings_translation_file.cpp msgid "Sound Extensions Blacklist" -msgstr "" +msgstr "Roll du an askouezhioù aodio" #: src/settings_translation_file.cpp msgid "" @@ -6369,7 +6338,7 @@ msgstr "Skramm-stekiñ" #: src/settings_translation_file.cpp msgid "Touchscreen controls" -msgstr "" +msgstr "Reolerezhioù ar skramm-stekiñ" #: src/settings_translation_file.cpp msgid "Touchscreen sensitivity" @@ -6381,7 +6350,7 @@ msgstr "Lieskementer kizidigezh ar skramm-stekiñ." #: src/settings_translation_file.cpp msgid "Tradeoffs for performance" -msgstr "" +msgstr "Treuzvarc'hadoù a-fed an digonusted" #: src/settings_translation_file.cpp msgid "Translucent foliage" @@ -6416,7 +6385,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Trusted mods" -msgstr "" +msgstr "Kemmoù fiziañs enno" #: src/settings_translation_file.cpp msgid "" @@ -6527,7 +6496,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "User Interfaces" -msgstr "" +msgstr "Ketalioù an arveriaded" #: src/settings_translation_file.cpp msgid "VSync" @@ -6593,7 +6562,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Video driver" -msgstr "" +msgstr "Stur video" #: src/settings_translation_file.cpp msgid "View bobbing factor" @@ -6613,7 +6582,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Volume" -msgstr "" +msgstr "Tregern" #: src/settings_translation_file.cpp msgid "Volume multiplier when the window is unfocused." @@ -6631,7 +6600,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Volumetric lighting" -msgstr "" +msgstr "Goulaouiñ trimentek" #: src/settings_translation_file.cpp msgid "" @@ -6664,19 +6633,19 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Waving Nodes" -msgstr "" +msgstr "Gwagenniñ ar c'hlomoù" #: src/settings_translation_file.cpp msgid "Waving leaves" -msgstr "" +msgstr "Gwagenniñ an delioù" #: src/settings_translation_file.cpp msgid "Waving liquids" -msgstr "" +msgstr "Gwagenniñ an dourennoù" #: src/settings_translation_file.cpp msgid "Waving liquids wave height" -msgstr "" +msgstr "Uhelded gwagenniñ an dourennoù" #: src/settings_translation_file.cpp msgid "Waving liquids wave speed" @@ -6688,7 +6657,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Waving plants" -msgstr "" +msgstr "Gwagenniñ ar plant" #: src/settings_translation_file.cpp msgid "Weblink color" @@ -6869,3 +6838,43 @@ msgstr "" #: src/settings_translation_file.cpp msgid "cURL parallel limit" msgstr "" + +#~ msgid "Apps" +#~ msgstr "Arloadoù" + +#~ msgid "End" +#~ msgstr "Dibenn" + +#~ msgid "Help" +#~ msgstr "Skoazell" + +#, fuzzy +#~ msgid "Home" +#~ msgstr "Degemer" + +#~ msgid "Left Button" +#~ msgstr "Klik kleiz" + +#~ msgid "Middle Button" +#~ msgstr "Klik kreiz" + +#~ msgid "No world created or selected!" +#~ msgstr "Bed ebet bet krouet pe diuzet!" + +#~ msgid "Right Button" +#~ msgstr "Klik dehou" + +#~ msgid "Select" +#~ msgstr "Diuzañ" + +#~ msgid "Sleep" +#~ msgstr "Kousk" + +#~ msgid "Tab" +#~ msgstr "Taolenn" + +#~ msgid "X Button 1" +#~ msgstr "Bouton X 1" + +#~ msgid "X Button 2" +#~ msgstr "Bouton X 2" diff --git a/po/ca/luanti.po b/po/ca/luanti.po index e4a632576..e90a5e2c4 100644 --- a/po/ca/luanti.po +++ b/po/ca/luanti.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Catalan (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-07-11 19:59+0200\n" +"POT-Creation-Date: 2025-09-23 19:19+0200\n" "PO-Revision-Date: 2024-10-06 05:16+0000\n" "Last-Translator: Joaquín Villalba \n" "Language-Team: Catalan \n" "Language-Team: Czech \n" "Language-Team: Welsh \n" "Language-Team: Danish \n" +"POT-Creation-Date: 2025-09-23 19:19+0200\n" +"PO-Revision-Date: 2025-09-13 08:01+0000\n" +"Last-Translator: Lars Müller \n" "Language-Team: German \n" "Language: de\n" @@ -12,7 +12,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 5.13-dev\n" +"X-Generator: Weblate 5.14-dev\n" #: builtin/client/chatcommands.lua msgid "Clear the out chat queue" @@ -608,9 +608,8 @@ msgid "Website" msgstr "Webseite" #: builtin/mainmenu/content/dlg_package.lua -#, fuzzy msgid "by $1" -msgstr "$1 von $2" +msgstr "von $1" #: builtin/mainmenu/content/dlg_package.lua msgid "by $1 — $2 downloads — +$3 / $4 / -$5" @@ -1234,10 +1233,6 @@ msgstr "" msgid "New" msgstr "Neu" -#: builtin/mainmenu/tab_local.lua -msgid "No world created or selected!" -msgstr "Keine Welt angegeben oder ausgewählt!" - #: builtin/mainmenu/tab_local.lua msgid "Play Game" msgstr "Spiel starten" @@ -1367,7 +1362,7 @@ msgstr "Fertig!" #: src/client/client.cpp #, c-format msgid "Failed to save screenshot to \"%s\"" -msgstr "" +msgstr "Bildschirmfotos konnten nicht nach „%s“ gespeichert werden" #: src/client/client.cpp msgid "Initializing nodes" @@ -1386,9 +1381,9 @@ msgid "Rebuilding shaders..." msgstr "Shader erneuern …" #: src/client/client.cpp -#, fuzzy, c-format +#, c-format msgid "Saved screenshot to \"%s\"" -msgstr "Bildschirmfotos" +msgstr "Bildschirmfoto nach „%s“ gespeichert" #: src/client/clientlauncher.cpp msgid "Could not find or load game: " @@ -1844,10 +1839,6 @@ msgstr "Profiler verborgen" msgid "Profiler shown (page %d of %d)" msgstr "Profiler angezeigt (Seite %d von %d)" -#: src/client/keycode.cpp -msgid "Apps" -msgstr "Anwendungen" - #: src/client/keycode.cpp msgid "Backspace" msgstr "Rücktaste" @@ -1878,44 +1869,19 @@ msgid "Down Arrow" msgstr "Pfeil runter" #: src/client/keycode.cpp -msgid "End" -msgstr "Ende" +#, fuzzy +msgid "End Key" +msgstr "Menü-Taste" #: src/client/keycode.cpp -msgid "Erase EOF" -msgstr "Erase OEF" +#, fuzzy +msgid "Help Key" +msgstr "Entf-Taste" #: src/client/keycode.cpp -msgid "Execute" -msgstr "Ausführen" - -#: src/client/keycode.cpp -msgid "Help" -msgstr "Hilfe" - -#: src/client/keycode.cpp -msgid "Home" -msgstr "Pos1" - -#: src/client/keycode.cpp -msgid "IME Accept" -msgstr "IME: Akzept." - -#: src/client/keycode.cpp -msgid "IME Convert" -msgstr "IME: Konvert." - -#: 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" +#, fuzzy +msgid "Home Key" +msgstr "Zoom-Taste" #: src/client/keycode.cpp msgid "Insert" @@ -1926,8 +1892,9 @@ msgid "Left Arrow" msgstr "Pfeil links" #: src/client/keycode.cpp -msgid "Left Button" -msgstr "Linke Taste" +#, fuzzy +msgid "Left Click" +msgstr "Strg links" #: src/client/keycode.cpp msgid "Left Control" @@ -1941,18 +1908,26 @@ msgstr "Menü links" msgid "Left Shift" msgstr "Umschalt links" +#. ~ Name of key #: src/client/keycode.cpp msgid "Left Windows" msgstr "Windows links" -#. ~ Key name, common on Windows keyboards #: src/client/keycode.cpp msgid "Menu Key" msgstr "Menü-Taste" #: src/client/keycode.cpp -msgid "Middle Button" -msgstr "Mittlere Taste" +msgid "Middle Click" +msgstr "" + +#: src/client/keycode.cpp +msgid "Mouse X1" +msgstr "" + +#: src/client/keycode.cpp +msgid "Mouse X2" +msgstr "" #: src/client/keycode.cpp msgid "Num Lock" @@ -2018,10 +1993,6 @@ msgstr "Ziffernblock 8" msgid "Numpad 9" msgstr "Ziffernblock 9" -#: src/client/keycode.cpp -msgid "OEM Clear" -msgstr "OEM Clear" - #: src/client/keycode.cpp msgid "Page Down" msgstr "Bild ab" @@ -2053,8 +2024,9 @@ msgid "Right Arrow" msgstr "Pfeil rechts" #: src/client/keycode.cpp -msgid "Right Button" -msgstr "Rechte Taste" +#, fuzzy +msgid "Right Click" +msgstr "Strg rechts" #: src/client/keycode.cpp msgid "Right Control" @@ -2068,6 +2040,7 @@ msgstr "Menü rechts" msgid "Right Shift" msgstr "Umschalt rechts" +#. ~ Name of key #: src/client/keycode.cpp msgid "Right Windows" msgstr "Windows rechts" @@ -2076,47 +2049,28 @@ msgstr "Windows rechts" msgid "Scroll Lock" msgstr "Rollen" -#. ~ Key name #: src/client/keycode.cpp -msgid "Select" -msgstr "Auswählen" +#, fuzzy +msgid "Select Key" +msgstr "Entf-Taste" #: src/client/keycode.cpp msgid "Shift Key" msgstr "Umschalt-Taste" -#: src/client/keycode.cpp -msgid "Sleep" -msgstr "Schlaf" - -#: src/client/keycode.cpp -msgid "Snapshot" -msgstr "Druck" - #: src/client/keycode.cpp msgid "Space" msgstr "Leertaste" #: src/client/keycode.cpp -msgid "Tab" -msgstr "Tab" +#, fuzzy +msgid "Tab Key" +msgstr "Untbr-Taste" #: src/client/keycode.cpp msgid "Up Arrow" msgstr "Pfeil hoch" -#: src/client/keycode.cpp -msgid "X Button 1" -msgstr "X-Knopf 1" - -#: src/client/keycode.cpp -msgid "X Button 2" -msgstr "X-Knopf 2" - -#: src/client/keycode.cpp -msgid "Zoom Key" -msgstr "Zoom-Taste" - #: src/client/minimap.cpp msgid "Minimap hidden" msgstr "Übersichtskarte verborgen" @@ -2554,15 +2508,15 @@ 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 +#, fuzzy msgid "" "3D support.\n" "Currently supported:\n" -"- none: no 3d output.\n" -"- anaglyph: cyan/magenta color 3d.\n" -"- interlaced: odd/even line based polarization screen support.\n" -"- topbottom: split screen top/bottom.\n" -"- sidebyside: split screen side by side.\n" -"- crossview: Cross-eyed 3d" +"- none: no 3D output\n" +"- anaglyph: cyan/magenta color 3D\n" +"- topbottom: split screen top/bottom\n" +"- sidebyside: split screen side-by-side\n" +"- crossview: cross-eyed 3D" msgstr "" "3-D-Unterstützung.\n" "Aktuell verfügbar:\n" @@ -2681,12 +2635,10 @@ msgid "Allows liquids to be translucent." msgstr "Erlaubt Flüssigkeiten, transluzent zu sein." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Also used for climbing down and descending in water if aux1_descends is " "disabled." msgstr "" -"Taste zum Schleichen.\n" "Wird auch zum Runterklettern und das Sinken im Wasser verwendet, falls " "aux1_descends deaktiviert ist." @@ -2702,8 +2654,8 @@ msgstr "" "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" +"Das hat nur eine merkliche Wirkung auf Tageslicht und\n" +"künstliches Licht, es hat sehr geringe Auswirkungen\n" "auf natürliches Licht bei Nacht." #: src/settings_translation_file.cpp @@ -2805,11 +2757,10 @@ msgid "" "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 können eventuell in " +"In dieser Entfernung wird der Server aggressiv optimieren,\n" +"welche Kartenblöcke an Clients gesendet werden.\n" +"Kleine Werte werden die Performanz möglicherweise stark erhöhen,\n" +"auf Kosten von sichtbaren Renderfehlern (einige Blöcke können eventuell in " "Höhlen\n" "nicht korrekt gerendert werden).\n" "Wird dieser Wert auf eine Zahl größer als max_block_send_distance gesetzt,\n" @@ -2827,9 +2778,9 @@ msgid "" "Stated in MapBlocks (16 nodes)." msgstr "" "In dieser Distanz wird der Server einen einfacheren und günstigeren\n" -"Occlusion-Check machen.\n" -"Kleine Werte werden die Performanz möglicherweise stark erhöhen, auf\n" -"Kosten von sichtbaren Renderfehlern (fehlende Blöcke).\n" +"Verdeckungs-Prüfung machen.\n" +"Kleine Werte werden die Performanz möglicherweise stark erhöhen,\n" +"auf Kosten von sichtbaren Renderfehlern (fehlende Kartenblöcke).\n" "Dies ist besonders nützlich für eine hohe Sichtweite (über 500).\n" "In Kartenblöcken (16 Blöcke) angegeben." @@ -2949,6 +2900,17 @@ msgstr "Kameraglättung" msgid "Camera smoothing in cinematic mode" msgstr "Kameraglättung im Filmmodus" +#: src/settings_translation_file.cpp +msgid "Capture Tracy zones" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Capture Tracy zones with the profiler's instrumentation.\n" +"You need to build with Tracy to use this, see doc/developing/profiling.md\n" +"for details." +msgstr "" + #: src/settings_translation_file.cpp msgid "Cave noise" msgstr "Höhlenrauschen" @@ -3460,7 +3422,6 @@ msgid "Defines tree areas and tree density." msgstr "Definiert Baumgebiete und Baumdichte." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Delay between mesh updates on the client in ms. Increasing this will slow\n" "down the rate of mesh updates, which can help reduce jitter." @@ -3468,7 +3429,7 @@ 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." +"reduzieren kann." #: src/settings_translation_file.cpp msgid "Delay in sending blocks after building" @@ -3514,6 +3475,10 @@ msgstr "" msgid "Developer Options" msgstr "Entwickleroptionen" +#: src/settings_translation_file.cpp +msgid "Disable if you only want to instrument with Tracy." +msgstr "" + #: src/settings_translation_file.cpp msgid "Disallow empty passwords" msgstr "Leere Passwörter verbieten" @@ -5259,7 +5224,7 @@ msgstr "Kartenschatten-Aktualisierungsframes" #: src/settings_translation_file.cpp msgid "Mapblock limit" -msgstr "Kartenblock-Grenze" +msgstr "Kartenblock-Begrenzung" #: src/settings_translation_file.cpp msgid "Mapblock mesh generation delay" @@ -5523,6 +5488,11 @@ msgstr "" msgid "Maximum users" msgstr "Maximale Benutzerzahl" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Measure time samples" +msgstr "Wüstentempel" + #: src/settings_translation_file.cpp msgid "Message of the day" msgstr "Meldung des Tages (message of the day)" @@ -5587,6 +5557,8 @@ msgid "" "Modifier key bind for closing your world.\n" "Requires ESC + the selected key to work." msgstr "" +"Modifikationstaste zum Schließen der Welt.\n" +"Dafür muss man ESC und die gewählte Taste drücken." #: src/settings_translation_file.cpp msgid "Modifies the size of the HUD elements." @@ -5769,7 +5741,6 @@ msgstr "" "darf." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Number of threads to use for mesh generation.\n" "Value of 0 (default) will let Luanti automatically choose the number of " @@ -6072,9 +6043,8 @@ msgstr "" "READ_PLAYERINFO: 32 (deaktiviert clientseitigen Aufruf von get_player_names)" #: src/settings_translation_file.cpp -#, fuzzy msgid "Return to Main Menu" -msgstr "Ins Hauptmenü beenden" +msgstr "Zurück zum Hauptmenü" #: src/settings_translation_file.cpp msgid "Ridge mountain spread noise" @@ -7202,9 +7172,8 @@ msgid "Toggle fullscreen" msgstr "Vollbild umschalten" #: src/settings_translation_file.cpp -#, fuzzy msgid "Toggle large chat console" -msgstr "Große Chatkonsole" +msgstr "Große Chatkonsole umschalten" #: src/settings_translation_file.cpp msgid "Toggle pitchmove" @@ -7215,9 +7184,8 @@ msgid "Toggle profiler" msgstr "Profiler umschalten" #: src/settings_translation_file.cpp -#, fuzzy msgid "Toggle unlimited view range" -msgstr "Taste zum Umschalten der unbegrenzten Sichtweite." +msgstr "Unbegrenzte Sichtweite umschalten" #: src/settings_translation_file.cpp msgid "" @@ -7727,11 +7695,8 @@ msgid "Width of the selection box lines around nodes." msgstr "Breite der Auswahlboxlinien um Blöcke." #: src/settings_translation_file.cpp -#, fuzzy msgid "Will also disable autoforward, when active." -msgstr "" -"Taste, um den Spieler rückwärts zu bewegen.\n" -"Wird, wenn aktiviert, auch die Vorwärtsautomatik deaktivieren." +msgstr "Wird, wenn aktiviert, auch die Vorwärtsautomatik deaktivieren." #: src/settings_translation_file.cpp msgid "Window maximized" @@ -7851,198 +7816,68 @@ msgstr "cURL-Interaktiv-Zeitüberschreitung" msgid "cURL parallel limit" msgstr "cURL-Parallel-Begrenzung" -#~ msgid "Apply specular shading to nodes." -#~ msgstr "Specular-Shading auf Nodes anwenden." +#~ msgid "Apps" +#~ msgstr "Anwendungen" -#~ msgid "Key for decreasing the viewing range." -#~ msgstr "Taste zum Verringern der Sichtweite." +#~ msgid "End" +#~ msgstr "Ende" -#~ msgid "Key for decreasing the volume." -#~ msgstr "Taste zum Verringern der Lautstärke." +#~ msgid "Erase EOF" +#~ msgstr "Erase OEF" -#~ msgid "Key for dropping the currently selected item." -#~ msgstr "Taste zum Fallenlassen des momentan ausgewählten Gegenstands." +#~ msgid "Execute" +#~ msgstr "Ausführen" -#~ msgid "Key for increasing the viewing range." -#~ msgstr "Taste zur Erhöhung der Sichtweite." +#~ msgid "Help" +#~ msgstr "Hilfe" -#~ msgid "Key for increasing the volume." -#~ msgstr "Taste zur Erhöhung der Lautstärke." +#~ msgid "Home" +#~ msgstr "Pos1" -#~ msgid "Key for jumping." -#~ msgstr "Taste zum Springen." +#~ msgid "IME Accept" +#~ msgstr "IME: Akzept." -#~ msgid "Key for moving the player forward." -#~ msgstr "Taste, um den Spieler vorwärts zu bewegen." +#~ msgid "IME Convert" +#~ msgstr "IME: Konvert." -#~ msgid "Key for moving the player left." -#~ msgstr "Taste, um den Spieler nach links zu bewegen." +#~ msgid "IME Escape" +#~ msgstr "IME: Escape" -#~ msgid "Key for moving the player right." -#~ msgstr "Taste, um den Spieler nach rechts zu bewegen." +#~ msgid "IME Mode Change" +#~ msgstr "IME: Moduswechsel" -#~ msgid "Key for muting the game." -#~ msgstr "Taste, um das Spiel verstummen zu lassen." +#~ msgid "IME Nonconvert" +#~ msgstr "IME: Nonconvert" -#~ msgid "Key for opening the chat window." -#~ msgstr "Taste, um das Chatfenster zu öffnen." +#~ msgid "Left Button" +#~ msgstr "Linke Taste" -#~ msgid "Key for opening the inventory." -#~ msgstr "Taste zum Öffnen des Inventars." +#~ msgid "Middle Button" +#~ msgstr "Mittlere Taste" -#~ msgid "Key for selecting the 11th hotbar slot." -#~ msgstr "Taste für die Auswahl des 11. Schnellleistenplatzes." +#~ msgid "No world created or selected!" +#~ msgstr "Keine Welt angegeben oder ausgewählt!" -#~ msgid "Key for selecting the 12th hotbar slot." -#~ msgstr "Taste für die Auswahl des 12. Schnellleistenplatzes." +#~ msgid "OEM Clear" +#~ msgstr "OEM Clear" -#~ msgid "Key for selecting the 13th hotbar slot." -#~ msgstr "Taste für die Auswahl des 13. Schnellleistenplatzes." +#~ msgid "Right Button" +#~ msgstr "Rechte Taste" -#~ msgid "Key for selecting the 14th hotbar slot." -#~ msgstr "Taste für die Auswahl des 14. Schnellleistenplatzes." +#~ msgid "Select" +#~ msgstr "Auswählen" -#~ msgid "Key for selecting the 15th hotbar slot." -#~ msgstr "Taste für die Auswahl des 15. Schnellleistenplatzes." +#~ msgid "Sleep" +#~ msgstr "Schlaf" -#~ msgid "Key for selecting the 16th hotbar slot." -#~ msgstr "Taste für die Auswahl des 16. Schnellleistenplatzes." +#~ msgid "Snapshot" +#~ msgstr "Druck" -#~ msgid "Key for selecting the 17th hotbar slot." -#~ msgstr "Taste für die Auswahl des 17. Schnellleistenplatzes." +#~ msgid "Tab" +#~ msgstr "Tab" -#~ msgid "Key for selecting the 18th hotbar slot." -#~ msgstr "Taste für die Auswahl des 18. Schnellleistenplatzes." +#~ msgid "X Button 1" +#~ msgstr "X-Knopf 1" -#~ msgid "Key for selecting the 19th hotbar slot." -#~ msgstr "Taste für die Auswahl des 19. Schnellleistenplatzes." - -#~ msgid "Key for selecting the 20th hotbar slot." -#~ msgstr "Taste für die Auswahl des 20. Schnellleistenplatzes." - -#~ msgid "Key for selecting the 21st hotbar slot." -#~ msgstr "Taste für die Auswahl des 21. Schnellleistenplatzes." - -#~ msgid "Key for selecting the 22nd hotbar slot." -#~ msgstr "Taste für die Auswahl des 22. Schnellleistenplatzes." - -#~ msgid "Key for selecting the 23rd hotbar slot." -#~ msgstr "Taste für die Auswahl des 23. Schnellleistenplatzes." - -#~ msgid "Key for selecting the 24th hotbar slot." -#~ msgstr "Taste für die Auswahl des 24. Schnellleistenplatzes." - -#~ msgid "Key for selecting the 25th hotbar slot." -#~ msgstr "Taste für die Auswahl des 25. Schnellleistenplatzes." - -#~ msgid "Key for selecting the 26th hotbar slot." -#~ msgstr "Taste für die Auswahl des 26. Schnellleistenplatzes." - -#~ msgid "Key for selecting the 27th hotbar slot." -#~ msgstr "Taste für die Auswahl des 27. Schnellleistenplatzes." - -#~ msgid "Key for selecting the 28th hotbar slot." -#~ msgstr "Taste für die Auswahl des 28. Schnellleistenplatzes." - -#~ msgid "Key for selecting the 29th hotbar slot." -#~ msgstr "Taste für die Auswahl des 29. Schnellleistenplatzes." - -#~ msgid "Key for selecting the 30th hotbar slot." -#~ msgstr "Taste für die Auswahl des 30. Schnellleistenplatzes." - -#~ msgid "Key for selecting the 31st hotbar slot." -#~ msgstr "Taste für die Auswahl des 31. Schnellleistenplatzes." - -#~ msgid "Key for selecting the 32nd hotbar slot." -#~ msgstr "Taste für die Auswahl des 32. Schnellleistenplatzes." - -#~ msgid "Key for selecting the eighth hotbar slot." -#~ msgstr "Taste für die Auswahl des achten Schnellleistenplatzes." - -#~ msgid "Key for selecting the fifth hotbar slot." -#~ msgstr "Taste für die Auswahl des fünften Schnellleistenplatzes." - -#~ msgid "Key for selecting the first hotbar slot." -#~ msgstr "Taste für die Auswahl des ersten Schnellleistenplatzes." - -#~ msgid "Key for selecting the fourth hotbar slot." -#~ msgstr "Taste für die Auswahl des vierten Schnellleistenplatzes." - -#~ msgid "Key for selecting the next item in the hotbar." -#~ msgstr "" -#~ "Taste für die Auswahl des nächsten Gegenstands in der Schnellleiste." - -#~ msgid "Key for selecting the ninth hotbar slot." -#~ msgstr "Taste für die Auswahl des neunten Schnellleistenplatzes." - -#~ msgid "Key for selecting the previous item in the hotbar." -#~ msgstr "" -#~ "Taste für die Auswahl des vorherigen Gegenstands in der Schnellleiste." - -#~ msgid "Key for selecting the second hotbar slot." -#~ msgstr "Taste für die Auswahl des zweiten Schnellleistenplatzes." - -#~ msgid "Key for selecting the seventh hotbar slot." -#~ msgstr "Taste für die Auswahl des siebten Schnellleistenplatzes." - -#~ msgid "Key for selecting the sixth hotbar slot." -#~ msgstr "Taste für die Auswahl des sechsten Schnellleistenplatzes." - -#~ msgid "Key for selecting the tenth hotbar slot." -#~ msgstr "Taste für die Auswahl des zehnten Schnellleistenplatzes." - -#~ msgid "Key for selecting the third hotbar slot." -#~ msgstr "Taste für die Auswahl des dritten Schnellleistenplatzes." - -#~ msgid "Key for switching between first- and third-person camera." -#~ msgstr "" -#~ "Taste zum Wechseln zwischen der Kamera der ersten Person und der dritten " -#~ "Person." - -#~ msgid "Key for taking screenshots." -#~ msgstr "Taste für die Aufnahme von Screenshots." - -#~ msgid "Key for toggling autoforward." -#~ msgstr "Taste für das Umschalten der Vorwärtsautomatik." - -#~ msgid "Key for toggling cinematic mode." -#~ msgstr "Taste für die Umschaltung des Filmmodus." - -#~ msgid "Key for toggling display of minimap." -#~ msgstr "Taste für das Umschalten der Anzeige der Übersichtskarte." - -#~ msgid "Key for toggling fast mode." -#~ msgstr "Taste zum Umschalten des Schnellmodus." - -#~ msgid "Key for toggling flying." -#~ msgstr "Taste, um das Fliegen ein- oder auszuschalten." - -#~ msgid "Key for toggling fullscreen mode." -#~ msgstr "Taste zum Ein- oder Ausschalten des Vollbildmodus." - -#~ msgid "Key for toggling noclip mode." -#~ msgstr "Taste zum Umschalten des Geistmodus." - -#~ msgid "Key for toggling pitch move mode." -#~ msgstr "Taste zum Umschalten des Nick-Bewegungsmodus." - -#~ msgid "Key for toggling the display of chat." -#~ msgstr "Taste zum Umschalten der Anzeige des Chat." - -#~ msgid "Key for toggling the display of debug info." -#~ msgstr "Taste zum Umschalten der Anzeige der Debuginformationen." - -#~ msgid "Key for toggling the display of fog." -#~ msgstr "Taste zum Umschalten der Anzeige des Nebels." - -#~ msgid "Key for toggling the display of the HUD." -#~ msgstr "Taste zum Umschalten der Anzeige der HUD." - -#~ msgid "Key for toggling the display of the large chat console." -#~ msgstr "Taste zum Umschalten der Anzeige der großen Chatkonsole." - -#~ msgid "Key to use view zoom when possible." -#~ msgstr "Taste für die Benutzung der Zoomansicht, falls möglich." - -#~ msgid "Node specular" -#~ msgstr "Node-Specular" +#~ msgid "X Button 2" +#~ msgstr "X-Knopf 2" diff --git a/po/dv/luanti.po b/po/dv/luanti.po index 2b8d43cba..eaf03ab58 100644 --- a/po/dv/luanti.po +++ b/po/dv/luanti.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Dhivehi (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-07-11 19:59+0200\n" +"POT-Creation-Date: 2025-09-23 19:19+0200\n" "PO-Revision-Date: 2019-11-10 15:04+0000\n" "Last-Translator: Krock \n" "Language-Team: Dhivehi \n" "Language-Team: Greek \n" @@ -102,9 +102,8 @@ msgid "Select file" msgstr "Επιλογή αρχείου" #: builtin/common/settings/components.lua -#, fuzzy msgid "Set" -msgstr "Επιλογή" +msgstr "Όρισε" #: builtin/common/settings/dlg_change_mapgen_flags.lua msgid "(No description of setting given)" @@ -318,9 +317,8 @@ msgid "(The game will need to enable shadows as well)" msgstr "(Το παιχνίδι θα πρέπει επίσης να ενεργοποιήσει σκιές)" #: builtin/common/settings/shadows_component.lua -#, fuzzy msgid "Custom" -msgstr "Προσαρμόσιμο" +msgstr "Προσαρμοσμένο" #: builtin/common/settings/shadows_component.lua #: src/settings_translation_file.cpp @@ -408,7 +406,6 @@ msgid "Failed to download $1" msgstr "Η λήψη του $1 απέτυχε" #: builtin/mainmenu/content/contentdb.lua -#, fuzzy msgid "" "Failed to extract \"$1\" (insufficient disk space, unsupported file type or " "broken archive)" @@ -442,9 +439,8 @@ msgid "Downloading..." msgstr "Λήψη ..." #: builtin/mainmenu/content/dlg_contentdb.lua -#, fuzzy msgid "Featured" -msgstr "Επιλεγμένο" +msgstr "Με χαρακτηριστικά" #: builtin/mainmenu/content/dlg_contentdb.lua msgid "Games" @@ -560,9 +556,8 @@ msgid "Description" msgstr "Περιγραφή" #: builtin/mainmenu/content/dlg_package.lua -#, fuzzy msgid "Donate" -msgstr "Δωρεά" +msgstr "Κάνε Δωρεά" #: builtin/mainmenu/content/dlg_package.lua msgid "Error loading package information" @@ -597,9 +592,8 @@ msgid "Source" msgstr "Πηγή" #: builtin/mainmenu/content/dlg_package.lua -#, fuzzy msgid "Translate" -msgstr "Μετέφρασε" +msgstr "Μετάφρασε" #: builtin/mainmenu/content/dlg_package.lua builtin/mainmenu/tab_content.lua msgid "Uninstall" @@ -614,9 +608,8 @@ msgid "Website" msgstr "Ιστοσελίδα" #: builtin/mainmenu/content/dlg_package.lua -#, fuzzy msgid "by $1" -msgstr "$1 με $2" +msgstr "Από $1" #: builtin/mainmenu/content/dlg_package.lua msgid "by $1 — $2 downloads — +$3 / $4 / -$5" @@ -954,9 +947,8 @@ msgid "Check out the key settings or refer to the documentation:" msgstr "Έλεγξε τις ρυθμίσεις πλήκτρων ή κοίτα στην βιβλιογραφία:" #: builtin/mainmenu/dlg_rebind_keys.lua -#, fuzzy msgid "Close" -msgstr "Κλείνω" +msgstr "Κλείσε" #: builtin/mainmenu/dlg_rebind_keys.lua msgid "Keybindings changed" @@ -1001,9 +993,8 @@ msgid "Register" msgstr "Εγγραφή" #: builtin/mainmenu/dlg_reinstall_mtg.lua -#, fuzzy msgid "Dismiss" -msgstr "Απέρριψε" +msgstr "Παράβλεψε" #: builtin/mainmenu/dlg_reinstall_mtg.lua msgid "" @@ -1081,7 +1072,6 @@ msgstr "" "είσαι ενήμερος για χαρακτηριστικά και διορθώσεις σφαλμάτων." #: builtin/mainmenu/dlg_version_info.lua -#, fuzzy msgid "Later" msgstr "Αργότερα" @@ -1244,10 +1234,6 @@ msgstr "" msgid "New" msgstr "Νέο" -#: builtin/mainmenu/tab_local.lua -msgid "No world created or selected!" -msgstr "Κανένας κόσμος δεν δημιουργήθηκε ούτε επιλέχθηκε!" - #: builtin/mainmenu/tab_local.lua msgid "Play Game" msgstr "Εκκίνηση Παιχνιδιού" @@ -1279,9 +1265,8 @@ msgstr "" "κόσμο." #: builtin/mainmenu/tab_online.lua -#, fuzzy msgid "Add favorite" -msgstr "Αγαπημένα" +msgstr "Προσθήκη στα αγαπημένα" #: builtin/mainmenu/tab_online.lua msgid "Address" @@ -1301,9 +1286,8 @@ msgid "Favorites" msgstr "Αγαπημένα" #: builtin/mainmenu/tab_online.lua -#, fuzzy msgid "Game: $1" -msgstr "Παιχνίδι" +msgstr "Παιχνίδι: $1" #: builtin/mainmenu/tab_online.lua msgid "Incompatible Servers" @@ -1315,19 +1299,19 @@ msgstr "Συμμετοχή στο Παιχνίδι" #: builtin/mainmenu/tab_online.lua msgid "Login" -msgstr "" +msgstr "Σύνδεση" #: builtin/mainmenu/tab_online.lua msgid "Number of mods: $1" -msgstr "" +msgstr "Αριθμός τροποποιήσεων: $1" #: builtin/mainmenu/tab_online.lua msgid "Open server website" -msgstr "" +msgstr "Άνοιγμα ιστότοπου διακομιστή" #: builtin/mainmenu/tab_online.lua msgid "Ping" -msgstr "" +msgstr "Ping" #: builtin/mainmenu/tab_online.lua msgid "" @@ -1344,6 +1328,10 @@ msgid "" "mod:\n" "player:" msgstr "" +"Πιθανά φίλτρα\n" +"παιχνίδι:<όνομα>\n" +"τροποποίηση:<όνομα>\n" +"παίκτης:<όνομα>" #: builtin/mainmenu/tab_online.lua msgid "Public Servers" @@ -1355,16 +1343,15 @@ msgstr "Ανανέωση" #: builtin/mainmenu/tab_online.lua msgid "Remove favorite" -msgstr "" +msgstr "Αφαίρεση αγαπημένου" #: builtin/mainmenu/tab_online.lua msgid "Server Description" msgstr "Περιγραφή Διακομιστή" #: src/client/client.cpp -#, fuzzy msgid "Connection aborted (protocol error?)." -msgstr "Σφάλμα σύνδεσης (λήξη χρόνου;)." +msgstr "Διακοπή σύνδεσης (σφάλμα πρωτοκόλλου;)." #: src/client/client.cpp src/client/game.cpp msgid "Connection timed out." @@ -1377,7 +1364,7 @@ msgstr "Έτοιμο!" #: src/client/client.cpp #, c-format msgid "Failed to save screenshot to \"%s\"" -msgstr "" +msgstr "Αποτυχία αποθήκευσης στιγμιότυπου οθόνης σε \"%s\"" #: src/client/client.cpp msgid "Initializing nodes" @@ -1396,9 +1383,9 @@ msgid "Rebuilding shaders..." msgstr "Ανακατασκευή σκίαστρων..." #: src/client/client.cpp -#, fuzzy, c-format +#, c-format msgid "Saved screenshot to \"%s\"" -msgstr "Στιγμιότυπο οθόνης" +msgstr "Αποθηκεύτηκε στιγμιότυπο οθόνης σε \"%s\"" #: src/client/clientlauncher.cpp msgid "Could not find or load game: " @@ -1430,7 +1417,7 @@ msgstr "Το αρχείο του Κόσμου δεν υπάρχει: " #: src/client/clientmedia.cpp src/client/game.cpp msgid "Media..." -msgstr "" +msgstr "Μέσα..." #: src/client/game.cpp src/client/shader.cpp src/server.cpp msgid "" @@ -1441,9 +1428,8 @@ msgstr "" "Ελέγξτε το debug.txt για λεπτομέρειες." #: src/client/game.cpp -#, fuzzy msgid "A serialization error occurred:" -msgstr "Παρουσιάστηκε σφάλμα:" +msgstr "Παρουσιάστηκε σφάλμα σειριοποίησης:" #: src/client/game.cpp #, c-format @@ -1451,9 +1437,8 @@ msgid "Access denied. Reason: %s" msgstr "Δεν επιτρέπεται η πρόσβαση. Αιτία: %s" #: src/client/game.cpp -#, fuzzy msgid "All debug info hidden" -msgstr "Εμφάνιση πληροφοριών εντοπισμού σφαλμάτων" +msgstr "Όλες οι πληροφορίες αποσφαλμάτωσης κρυφές" #: src/client/game.cpp msgid "Automatic forward disabled" @@ -1477,7 +1462,7 @@ msgstr "Εμφανίζονται όρια αποκλεισμού για κοντ #: src/client/game.cpp msgid "Bounding boxes shown" -msgstr "" +msgstr "Εμφάνιση πλαισίων οριοθέτησης" #: src/client/game.cpp msgid "Camera update disabled" @@ -1488,11 +1473,10 @@ msgid "Camera update enabled" msgstr "Η ενημέρωση κάμερας ενεργοποιήθηκε" #: src/client/game.cpp -#, fuzzy msgid "Can't show block bounds (disabled by game or mod)" msgstr "" -"Δεν είναι δυνατή η εμφάνιση ορίων μπλοκ (χρειάζεται το δικαίωμα " -"\"basic_debug\")" +"Δεν είναι δυνατή η εμφάνιση ορίων μπλοκ (απενεργοποιημένο από παιχνίδι ή " +"τροποποίηση)" #: src/client/game.cpp msgid "Cinematic mode disabled" @@ -1579,9 +1563,8 @@ msgid "Fog enabled" msgstr "Η ομίχλη ενεργοποιήθηκε" #: src/client/game.cpp -#, fuzzy msgid "Fog enabled by game or mod" -msgstr "Το ζουμ είναι απενεργοποιημένο από το παιχνίδι ή την τροποποίηση" +msgstr "Η ομίχλη είναι ενεργοποιημένη από το παιχνίδι ή την τροποποίηση" #: src/client/game.cpp msgid "Item definitions..." @@ -1589,15 +1572,16 @@ msgstr "Ορισμοί στοιχείων..." #: src/client/game.cpp msgid "KiB/s" -msgstr "" +msgstr "KiB/s" #: src/client/game.cpp msgid "MiB/s" -msgstr "" +msgstr "MiB/s" #: src/client/game.cpp msgid "Minimap currently disabled by game or mod" msgstr "" +"Ο μίνι χάρτης είναι τωρινά απενεργοποιημένος από παιχνίδι ή τροποποίηση" #: src/client/game.cpp msgid "Multiplayer" @@ -1605,31 +1589,33 @@ msgstr "Πολλοί παίκτες" #: src/client/game.cpp msgid "Noclip mode disabled" -msgstr "" +msgstr "Η άυλη λειτουργία είναι απενεργοποιημένη" #: src/client/game.cpp msgid "Noclip mode enabled" -msgstr "" +msgstr "Η άυλη λειτουργία είναι ενεργοποιημένη" #: src/client/game.cpp msgid "Noclip mode enabled (note: no 'noclip' privilege)" msgstr "" +"Η άυλη λειτουργία ενεργοποιήθηκε (σημείωση: δεν υπάρχει δικαίωμα για 'αύλη' " +"λειτουργία)" #: src/client/game.cpp msgid "Node definitions..." -msgstr "" +msgstr "Ορισμοί κόμβων..." #: src/client/game.cpp msgid "Pitch move mode disabled" -msgstr "" +msgstr "Η λειτουργία κίνησης κλίσης είναι απενεργοποιημένη" #: src/client/game.cpp msgid "Pitch move mode enabled" -msgstr "" +msgstr "Η λειτουργία κίνησης κλίσης είναι ενεργοποιημένη" #: src/client/game.cpp msgid "Profiler graph shown" -msgstr "" +msgstr "Εμφάνιση γραφημάτων profiler" #: src/client/game.cpp msgid "Resolving address..." @@ -1641,7 +1627,7 @@ msgstr "Τερματισμός Λειτουργίας..." #: src/client/game.cpp src/client/game_formspec.cpp msgid "Singleplayer" -msgstr "" +msgstr "Παιχνίδι ενός παίκτη" #: src/client/game.cpp msgid "Sound muted" @@ -1653,7 +1639,7 @@ msgstr "Το Σύστημα Ήχου δεν υποστηρίζεται σε αυ #: src/client/game.cpp msgid "Sound unmuted" -msgstr "" +msgstr "Ήχος χωρίς σίγαση" #: src/client/game.cpp #, c-format @@ -1673,28 +1659,30 @@ msgstr "" "Δεν είναι δυνατή η ακρόαση στο %s επειδή το IPv6 είναι απενεργοποιημένο" #: src/client/game.cpp -#, fuzzy msgid "Unlimited viewing range disabled" -msgstr "Ενεργοποιημένο το απεριόριστο εύρος προβολής" +msgstr "Η απεριόριστη εμβέλεια θέασης είναι απενεργοποιημένη" #: src/client/game.cpp -#, fuzzy msgid "Unlimited viewing range enabled" -msgstr "Ενεργοποιημένο το απεριόριστο εύρος προβολής" +msgstr "Η απεριόριστη εμβέλεια θέασης είναι ενεργοποιημένη" #: src/client/game.cpp msgid "Unlimited viewing range enabled, but forbidden by game or mod" msgstr "" +"Η απεριόριστη εμβέλεια θέασης είναι ενεργοποιημένη, αλλά απαγορεύεται από " +"παιχνίδι ή τροποποίηση" #: src/client/game.cpp -#, fuzzy, c-format +#, c-format msgid "Viewing changed to %d (the minimum)" -msgstr "Το εύρος προβολής πρέπει να είναι τουλάχιστον: %d" +msgstr "Η θέαση άλλαξε σε: %d (το ελάχιστο)" #: src/client/game.cpp #, c-format msgid "Viewing changed to %d (the minimum), but limited to %d by game or mod" msgstr "" +"Η θέαση άλλαξε σε %d (το ελάχιστο), αλλά περιορίστηκε σε %d από παιχνίδι ή " +"τροποποίηση" #: src/client/game.cpp #, c-format @@ -1702,15 +1690,17 @@ msgid "Viewing range changed to %d" msgstr "Το εύρος προβολής άλλαξε σε %d" #: src/client/game.cpp -#, fuzzy, c-format +#, c-format msgid "Viewing range changed to %d (the maximum)" -msgstr "Το εύρος προβολής άλλαξε σε %d" +msgstr "Το εύρος θέασης άλλαξε σε %d (το μέγιστο)" #: src/client/game.cpp #, c-format msgid "" "Viewing range changed to %d (the maximum), but limited to %d by game or mod" msgstr "" +"Η θέαση άλλαξε σε %d (το μέγιστο), αλλά περιορίστηκε σε %d από παιχνίδι ή " +"τροποποίηση" #: src/client/game.cpp #, c-format @@ -1726,11 +1716,11 @@ msgstr "Η ένταση άλλαξε σε %d%%" #: src/client/game.cpp msgid "Wireframe not supported by video driver" -msgstr "" +msgstr "Το Wireframe δεν υποστηρίζεται από το πρόγραμμα οδήγησης βίντεο" #: src/client/game.cpp msgid "Wireframe shown" -msgstr "" +msgstr "Το Wireframe είναι εμφανές" #: src/client/game.cpp msgid "Zoom currently disabled by game or mod" @@ -1747,7 +1737,7 @@ msgstr "- Δημόσιο: " #. ~ PvP = Player versus Player #: src/client/game_formspec.cpp msgid "- PvP: " -msgstr "" +msgstr "-PvP: " #: src/client/game_formspec.cpp msgid "- Server Name: " @@ -1811,20 +1801,19 @@ msgstr "Διακομιστής Φιλοξενίας" #: src/client/game_formspec.cpp msgid "Off" -msgstr "" +msgstr "Ανενεργό" #: src/client/game_formspec.cpp msgid "On" -msgstr "" +msgstr "Ενεργό" #: src/client/game_formspec.cpp msgid "Remote server" msgstr "Απομακρυσμένος διακομιστής" #: src/client/game_formspec.cpp -#, fuzzy msgid "Respawn" -msgstr "Επανεμφάνηση" +msgstr "Aναγέννηση" #: src/client/game_formspec.cpp msgid "Sound Volume" @@ -1835,9 +1824,8 @@ msgid "You died" msgstr "Πέθανες" #: src/client/gameui.cpp -#, fuzzy msgid "Chat currently disabled by game or mod" -msgstr "Το ζουμ είναι απενεργοποιημένο από το παιχνίδι ή την τροποποίηση" +msgstr "Η συζήτηση είναι απενεργοποιημένη από παιχνίδι ή τροποποίηση" #: src/client/gameui.cpp msgid "Chat hidden" @@ -1849,95 +1837,64 @@ msgstr "Συνομιλία εμφανής" #: src/client/gameui.cpp msgid "HUD hidden" -msgstr "" +msgstr "HUD κρυφό" #: src/client/gameui.cpp msgid "HUD shown" -msgstr "" +msgstr "HUD εμφανές" #: src/client/gameui.cpp msgid "Profiler hidden" -msgstr "" +msgstr "Profiler κρυφός" #: src/client/gameui.cpp #, c-format msgid "Profiler shown (page %d of %d)" -msgstr "" - -#: src/client/keycode.cpp -msgid "Apps" -msgstr "Εφαρμογές" +msgstr "Profiler εμφανής (σελίδα %d από %d)" #: src/client/keycode.cpp msgid "Backspace" -msgstr "" +msgstr "Οπισθοδιάστημα" #. ~ Usually paired with the Pause key #: src/client/keycode.cpp msgid "Break Key" -msgstr "" +msgstr "Κουμπί Παύσης" #: src/client/keycode.cpp msgid "Caps Lock" -msgstr "" +msgstr "Caps Lock" #: src/client/keycode.cpp -#, fuzzy msgid "Clear Key" -msgstr "Εκκαθάριση" +msgstr "Πλήκτρο Clear" #: src/client/keycode.cpp msgid "Control Key" -msgstr "" +msgstr "Πλήκτρο Control" #: src/client/keycode.cpp -#, fuzzy msgid "Delete Key" -msgstr "Διαγραφή" +msgstr "Πλήκτρο Delete" #: src/client/keycode.cpp msgid "Down Arrow" -msgstr "" +msgstr "Κάτω Βέλος" #: src/client/keycode.cpp -msgid "End" -msgstr "Τέλος" +#, fuzzy +msgid "End Key" +msgstr "Μενού" #: src/client/keycode.cpp -msgid "Erase EOF" -msgstr "" +#, fuzzy +msgid "Help Key" +msgstr "Πλήκτρο Delete" #: 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 "" +#, fuzzy +msgid "Home Key" +msgstr "Μεγέθυνση" #: src/client/keycode.cpp msgid "Insert" @@ -1948,7 +1905,7 @@ msgid "Left Arrow" msgstr "" #: src/client/keycode.cpp -msgid "Left Button" +msgid "Left Click" msgstr "" #: src/client/keycode.cpp @@ -1963,18 +1920,26 @@ msgstr "" msgid "Left Shift" msgstr "" +#. ~ Name of key #: src/client/keycode.cpp msgid "Left Windows" msgstr "" -#. ~ Key name, common on Windows keyboards #: src/client/keycode.cpp #, fuzzy msgid "Menu Key" msgstr "Μενού" #: src/client/keycode.cpp -msgid "Middle Button" +msgid "Middle Click" +msgstr "" + +#: src/client/keycode.cpp +msgid "Mouse X1" +msgstr "" + +#: src/client/keycode.cpp +msgid "Mouse X2" msgstr "" #: src/client/keycode.cpp @@ -2041,10 +2006,6 @@ msgstr "Αριθμητικό Πληκτρολόγιο 8" msgid "Numpad 9" msgstr "Αριθμητικό Πληκτρολόγιο 9" -#: src/client/keycode.cpp -msgid "OEM Clear" -msgstr "" - #: src/client/keycode.cpp #, fuzzy msgid "Page Down" @@ -2080,7 +2041,7 @@ msgid "Right Arrow" msgstr "Δεξιά" #: src/client/keycode.cpp -msgid "Right Button" +msgid "Right Click" msgstr "" #: src/client/keycode.cpp @@ -2095,6 +2056,7 @@ msgstr "" msgid "Right Shift" msgstr "" +#. ~ Name of key #: src/client/keycode.cpp msgid "Right Windows" msgstr "" @@ -2103,48 +2065,28 @@ msgstr "" msgid "Scroll Lock" msgstr "" -#. ~ Key name #: src/client/keycode.cpp -msgid "Select" -msgstr "Επιλογή" +#, fuzzy +msgid "Select Key" +msgstr "Πλήκτρο Delete" #: src/client/keycode.cpp msgid "Shift Key" 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 "" +#, fuzzy +msgid "Tab Key" +msgstr "Κουμπί Παύσης" #: src/client/keycode.cpp msgid "Up Arrow" msgstr "" -#: src/client/keycode.cpp -msgid "X Button 1" -msgstr "" - -#: src/client/keycode.cpp -msgid "X Button 2" -msgstr "" - -#: src/client/keycode.cpp -#, fuzzy -msgid "Zoom Key" -msgstr "Μεγέθυνση" - #: src/client/minimap.cpp msgid "Minimap hidden" msgstr "" @@ -2298,7 +2240,7 @@ msgstr "Έξοδος" #: src/gui/touchscreenlayout.cpp msgid "Inventory" -msgstr "" +msgstr "Υπάρχοντα" #: src/gui/touchscreenlayout.cpp msgid "Joystick" @@ -2539,12 +2481,11 @@ msgstr "" msgid "" "3D support.\n" "Currently supported:\n" -"- none: no 3d output.\n" -"- anaglyph: cyan/magenta color 3d.\n" -"- interlaced: odd/even line based polarization screen support.\n" -"- topbottom: split screen top/bottom.\n" -"- sidebyside: split screen side by side.\n" -"- crossview: Cross-eyed 3d" +"- none: no 3D output\n" +"- anaglyph: cyan/magenta color 3D\n" +"- topbottom: split screen top/bottom\n" +"- sidebyside: split screen side-by-side\n" +"- crossview: cross-eyed 3D" msgstr "" #: src/settings_translation_file.cpp @@ -2869,6 +2810,17 @@ msgstr "" msgid "Camera smoothing in cinematic mode" msgstr "" +#: src/settings_translation_file.cpp +msgid "Capture Tracy zones" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Capture Tracy zones with the profiler's instrumentation.\n" +"You need to build with Tracy to use this, see doc/developing/profiling.md\n" +"for details." +msgstr "" + #: src/settings_translation_file.cpp msgid "Cave noise" msgstr "" @@ -3350,6 +3302,10 @@ msgstr "" msgid "Developer Options" msgstr "Διακοσμήσεις" +#: src/settings_translation_file.cpp +msgid "Disable if you only want to instrument with Tracy." +msgstr "" + #: src/settings_translation_file.cpp msgid "Disallow empty passwords" msgstr "" @@ -5033,6 +4989,11 @@ msgstr "" msgid "Maximum users" msgstr "" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Measure time samples" +msgstr "Ναοί της ερήμου" + #: src/settings_translation_file.cpp msgid "Message of the day" msgstr "" @@ -6398,9 +6359,8 @@ msgid "Toggle profiler" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Toggle unlimited view range" -msgstr "Πλήκτρο για εναλλαγή απεριόριστης απόστασης ορατότητας." +msgstr "Πλήκτρο για εναλλαγή απεριόριστης απόστασης ορατότητας" #: src/settings_translation_file.cpp msgid "" @@ -6918,3 +6878,45 @@ msgstr "" #: src/settings_translation_file.cpp msgid "cURL parallel limit" msgstr "Παράλληλο όριο cURL" + +#~ msgid "Apps" +#~ msgstr "Εφαρμογές" + +#~ msgid "End" +#~ msgstr "Τέλος" + +#~ msgid "Erase EOF" +#~ msgstr "Σβήσε EOF" + +#~ msgid "Execute" +#~ msgstr "Εκτέλεσε" + +#~ msgid "Help" +#~ msgstr "Βοήθεια" + +#~ msgid "Home" +#~ msgstr "Σπίτι" + +#~ msgid "IME Accept" +#~ msgstr "IME Αποδεκτό" + +#~ msgid "IME Convert" +#~ msgstr "IME Μετατροπή" + +#~ msgid "IME Escape" +#~ msgstr "IME Έξοδος" + +#~ msgid "IME Mode Change" +#~ msgstr "IME Αλλαγή Λειτουργίας" + +#~ msgid "IME Nonconvert" +#~ msgstr "IME Μη-μετατροπή" + +#~ msgid "No world created or selected!" +#~ msgstr "Κανένας κόσμος δεν δημιουργήθηκε ούτε επιλέχθηκε!" + +#~ msgid "Select" +#~ msgstr "Επιλογή" + +#~ msgid "Sleep" +#~ msgstr "Ύπνος" diff --git a/po/eo/luanti.po b/po/eo/luanti.po index 0d96c441f..3703d7f47 100644 --- a/po/eo/luanti.po +++ b/po/eo/luanti.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Esperanto (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-07-11 19:59+0200\n" +"POT-Creation-Date: 2025-09-23 19:19+0200\n" "PO-Revision-Date: 2024-12-27 21:05+0000\n" "Last-Translator: Hugo \n" "Language-Team: Esperanto \n" "Language-Team: Spanish \n" +"POT-Creation-Date: 2025-09-23 19:19+0200\n" +"PO-Revision-Date: 2025-08-02 09:02+0000\n" +"Last-Translator: Krock \n" "Language-Team: Spanish (American) \n" "Language: es_US\n" @@ -17,7 +17,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 5.10-dev\n" +"X-Generator: Weblate 5.13-dev\n" #: builtin/client/chatcommands.lua msgid "Clear the out chat queue" @@ -1238,10 +1238,6 @@ msgstr "" msgid "New" msgstr "Nuevo" -#: builtin/mainmenu/tab_local.lua -msgid "No world created or selected!" -msgstr "¡Ningún mundo creado o seleccionado!" - #: builtin/mainmenu/tab_local.lua msgid "Play Game" msgstr "Jugar" @@ -1848,10 +1844,6 @@ msgstr "" msgid "Profiler shown (page %d of %d)" msgstr "" -#: src/client/keycode.cpp -msgid "Apps" -msgstr "" - #: src/client/keycode.cpp msgid "Backspace" msgstr "" @@ -1882,43 +1874,16 @@ msgid "Down Arrow" msgstr "" #: src/client/keycode.cpp -msgid "End" +msgid "End Key" msgstr "" #: src/client/keycode.cpp -msgid "Erase EOF" -msgstr "" - -#: src/client/keycode.cpp -msgid "Execute" -msgstr "" - -#: src/client/keycode.cpp -msgid "Help" +#, fuzzy +msgid "Help Key" msgstr "Ayuda" #: 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" +msgid "Home Key" msgstr "" #: src/client/keycode.cpp @@ -1930,8 +1895,8 @@ msgid "Left Arrow" msgstr "" #: src/client/keycode.cpp -msgid "Left Button" -msgstr "Botón izquierdo" +msgid "Left Click" +msgstr "" #: src/client/keycode.cpp msgid "Left Control" @@ -1945,17 +1910,25 @@ msgstr "" msgid "Left Shift" msgstr "" +#. ~ Name of key #: src/client/keycode.cpp msgid "Left Windows" msgstr "" -#. ~ Key name, common on Windows keyboards #: src/client/keycode.cpp msgid "Menu Key" msgstr "" #: src/client/keycode.cpp -msgid "Middle Button" +msgid "Middle Click" +msgstr "" + +#: src/client/keycode.cpp +msgid "Mouse X1" +msgstr "" + +#: src/client/keycode.cpp +msgid "Mouse X2" msgstr "" #: src/client/keycode.cpp @@ -2022,10 +1995,6 @@ msgstr "" msgid "Numpad 9" msgstr "" -#: src/client/keycode.cpp -msgid "OEM Clear" -msgstr "" - #: src/client/keycode.cpp msgid "Page Down" msgstr "" @@ -2057,8 +2026,8 @@ msgid "Right Arrow" msgstr "" #: src/client/keycode.cpp -msgid "Right Button" -msgstr "Botón derecho" +msgid "Right Click" +msgstr "" #: src/client/keycode.cpp msgid "Right Control" @@ -2072,6 +2041,7 @@ msgstr "" msgid "Right Shift" msgstr "" +#. ~ Name of key #: src/client/keycode.cpp msgid "Right Windows" msgstr "" @@ -2080,47 +2050,27 @@ msgstr "" msgid "Scroll Lock" msgstr "" -#. ~ Key name #: src/client/keycode.cpp -msgid "Select" -msgstr "Seleccionar" +#, fuzzy +msgid "Select Key" +msgstr "Seleccionar archivo" #: src/client/keycode.cpp msgid "Shift Key" msgstr "" -#: src/client/keycode.cpp -msgid "Sleep" -msgstr "" - -#: src/client/keycode.cpp -msgid "Snapshot" -msgstr "" - #: src/client/keycode.cpp msgid "Space" msgstr "Espacio" #: src/client/keycode.cpp -msgid "Tab" -msgstr "Pestaña" +msgid "Tab Key" +msgstr "" #: src/client/keycode.cpp msgid "Up Arrow" msgstr "" -#: src/client/keycode.cpp -msgid "X Button 1" -msgstr "" - -#: src/client/keycode.cpp -msgid "X Button 2" -msgstr "" - -#: src/client/keycode.cpp -msgid "Zoom Key" -msgstr "" - #: src/client/minimap.cpp msgid "Minimap hidden" msgstr "" @@ -2353,7 +2303,7 @@ msgstr "" #: src/network/clientpackethandler.cpp src/script/lua_api/l_client.cpp #: src/script/lua_api/l_mainmenu.cpp msgid "LANG_CODE" -msgstr "" +msgstr "es_US" #: src/network/clientpackethandler.cpp msgid "" @@ -2515,12 +2465,11 @@ msgstr "" msgid "" "3D support.\n" "Currently supported:\n" -"- none: no 3d output.\n" -"- anaglyph: cyan/magenta color 3d.\n" -"- interlaced: odd/even line based polarization screen support.\n" -"- topbottom: split screen top/bottom.\n" -"- sidebyside: split screen side by side.\n" -"- crossview: Cross-eyed 3d" +"- none: no 3D output\n" +"- anaglyph: cyan/magenta color 3D\n" +"- topbottom: split screen top/bottom\n" +"- sidebyside: split screen side-by-side\n" +"- crossview: cross-eyed 3D" msgstr "" #: src/settings_translation_file.cpp @@ -2841,6 +2790,17 @@ msgstr "" msgid "Camera smoothing in cinematic mode" msgstr "" +#: src/settings_translation_file.cpp +msgid "Capture Tracy zones" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Capture Tracy zones with the profiler's instrumentation.\n" +"You need to build with Tracy to use this, see doc/developing/profiling.md\n" +"for details." +msgstr "" + #: src/settings_translation_file.cpp msgid "Cave noise" msgstr "" @@ -3323,6 +3283,10 @@ msgstr "" msgid "Developer Options" msgstr "" +#: src/settings_translation_file.cpp +msgid "Disable if you only want to instrument with Tracy." +msgstr "" + #: src/settings_translation_file.cpp msgid "Disallow empty passwords" msgstr "" @@ -5004,6 +4968,11 @@ msgstr "" msgid "Maximum users" msgstr "" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Measure time samples" +msgstr "Templos del desierto" + #: src/settings_translation_file.cpp msgid "Message of the day" msgstr "" @@ -6875,3 +6844,18 @@ msgstr "" #: src/settings_translation_file.cpp msgid "cURL parallel limit" msgstr "" + +#~ msgid "Left Button" +#~ msgstr "Botón izquierdo" + +#~ msgid "No world created or selected!" +#~ msgstr "¡Ningún mundo creado o seleccionado!" + +#~ msgid "Right Button" +#~ msgstr "Botón derecho" + +#~ msgid "Select" +#~ msgstr "Seleccionar" + +#~ msgid "Tab" +#~ msgstr "Pestaña" diff --git a/po/et/luanti.po b/po/et/luanti.po index 1d2f7c3a3..b3bc6fbb5 100644 --- a/po/et/luanti.po +++ b/po/et/luanti.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Estonian (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-07-11 19:59+0200\n" +"POT-Creation-Date: 2025-09-23 19:19+0200\n" "PO-Revision-Date: 2023-10-22 17:18+0000\n" "Last-Translator: Janar Leas \n" "Language-Team: Estonian \n" "Language-Team: Basque \n" "Language-Team: Persian \n" "Language-Team: Finnish \n" +"POT-Creation-Date: 2025-09-23 19:19+0200\n" +"PO-Revision-Date: 2025-09-19 07:19+0000\n" +"Last-Translator: Filipino Student \n" "Language-Team: Filipino \n" "Language: fil\n" @@ -13,15 +13,15 @@ msgstr "" "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 5.13-dev\n" +"X-Generator: Weblate 5.14-dev\n" #: builtin/client/chatcommands.lua msgid "Clear the out chat queue" -msgstr "Linisin ang pila ng out chat" +msgstr "Linisin ang chat queue" #: builtin/client/chatcommands.lua msgid "Empty command." -msgstr "Bakanteng utos." +msgstr "Empty na command." #: builtin/client/chatcommands.lua msgid "Exit to main menu" @@ -29,44 +29,43 @@ msgstr "Umalis sa main menu" #: builtin/client/chatcommands.lua msgid "Invalid command: " -msgstr "Invalid na utos: " +msgstr "Invalid na command: " #: builtin/client/chatcommands.lua msgid "Issued command: " -msgstr "Inisyu na utos: " +msgstr "Issued na command: " #: builtin/client/chatcommands.lua msgid "List online players" -msgstr "Ilista ang mga naka-online na player" +msgstr "Maglista ng online players" #: builtin/client/chatcommands.lua msgid "Online players: " -msgstr "Mga naka-online na player: " +msgstr "Mga online na player: " #: builtin/client/chatcommands.lua msgid "The out chat queue is now empty." -msgstr "Bakante na ang pila ng out chat." +msgstr "Ang chat queue ay walang laman." #: builtin/client/chatcommands.lua msgid "This command is disabled by server." -msgstr "Sinara ng server ang utos na ito." +msgstr "Naka-sara sa server na ito ang command na ito." #: builtin/common/chatcommands.lua msgid "Available commands:" -msgstr "Mga magagamit na utos:" +msgstr "Mga available na commands:" #: builtin/common/chatcommands.lua msgid "Available commands: " -msgstr "Mga magagamit na utos: " +msgstr "Mga available na commands: " #: builtin/common/chatcommands.lua msgid "Command not available: " -msgstr "Di magagamit ang utos: " +msgstr "Unavailable ang command: " #: builtin/common/chatcommands.lua -#, fuzzy msgid "Get help for commands (-t: output in chat)" -msgstr "Humingi ng tulong para malaman ang mga utos" +msgstr "Humingi ng tulong para sa commands (-t: output sa chat)" #: builtin/common/chatcommands.lua msgid "" @@ -76,33 +75,32 @@ msgstr "" "o '.help all' para ilista lahat." #: builtin/common/chatcommands.lua -#, fuzzy msgid "[all | ] [-t]" -msgstr "[all | ]" +msgstr "" #: builtin/common/settings/components.lua msgid "Browse" -msgstr "Mag-browse" +msgstr "Magbrowse" #: builtin/common/settings/components.lua msgid "Conflicts with \"$1\"" -msgstr "" +msgstr "May Conflict sa \"$1\"" #: builtin/common/settings/components.lua msgid "Edit" -msgstr "Baguhin" +msgstr "Magedit" #: builtin/common/settings/components.lua msgid "Remove keybinding" -msgstr "" +msgstr "Magremove ng Keybinding" #: builtin/common/settings/components.lua msgid "Select directory" -msgstr "Pumili ng directory" +msgstr "Magselect ng directory" #: builtin/common/settings/components.lua msgid "Select file" -msgstr "Pumili ng file" +msgstr "Magselect ng file" #: builtin/common/settings/components.lua #, fuzzy @@ -111,7 +109,7 @@ msgstr "Magtakda" #: builtin/common/settings/dlg_change_mapgen_flags.lua msgid "(No description of setting given)" -msgstr "(Walang binigay na paglalarawan)" +msgstr "(Walang binigay na description ukol dito)" #: builtin/common/settings/dlg_change_mapgen_flags.lua msgid "2D Noise" @@ -162,15 +160,15 @@ msgstr "Seed" #: builtin/common/settings/dlg_change_mapgen_flags.lua msgid "X spread" -msgstr "Pagkalat ng X" +msgstr "" #: builtin/common/settings/dlg_change_mapgen_flags.lua msgid "Y spread" -msgstr "Pagkalat ng Y" +msgstr "" #: builtin/common/settings/dlg_change_mapgen_flags.lua msgid "Z spread" -msgstr "Pagkalat ng Z" +msgstr "" #. ~ "absvalue" is a noise parameter flag. #. It is short for "absolute value". @@ -196,23 +194,20 @@ msgid "eased" msgstr "eased" #: builtin/common/settings/dlg_settings.lua -#, fuzzy msgid "(The game will need to enable automatic exposure as well)" -msgstr "(Ang laro ay kinakailangang ring buksan ang automatic exposure)" +msgstr "(Ang laro ay kinakailangang ding buksan ang automatic exposure)" #: builtin/common/settings/dlg_settings.lua -#, fuzzy msgid "(The game will need to enable bloom as well)" -msgstr "(Ang laro ay nangangailangan ring buksan ang bloom)" +msgstr "(Ang laro ay nangangailangan ding buksan ang bloom)" #: builtin/common/settings/dlg_settings.lua -#, fuzzy msgid "(The game will need to enable volumetric lighting as well)" -msgstr "(Ang laro ay nangangailangan ring buksan ang volumetric lightning)" +msgstr "(Ang laro ay nangangailangan ding buksan ang volumetric lightning)" #: builtin/common/settings/dlg_settings.lua msgid "(Use system language)" -msgstr "(Gumamit ng wika ng sistema)" +msgstr "(Gumamit ng wika sa sistema)" #: builtin/common/settings/dlg_settings.lua msgid "Accessibility" @@ -220,7 +215,7 @@ msgstr "" #: builtin/common/settings/dlg_settings.lua msgid "Auto" -msgstr "Pagkukusa" +msgstr "Pag-auto" #: builtin/common/settings/dlg_settings.lua #: builtin/mainmenu/content/dlg_contentdb.lua @@ -241,29 +236,28 @@ msgstr "Chat" #: builtin/common/settings/dlg_settings.lua builtin/mainmenu/tab_online.lua msgid "Clear" -msgstr "Linisin" +msgstr "Magclear" #: builtin/common/settings/dlg_settings.lua src/settings_translation_file.cpp msgid "Controls" -msgstr "" +msgstr "Mga Kontrol" #: builtin/common/settings/dlg_settings.lua #: builtin/common/settings/shadows_component.lua msgid "Disabled" -msgstr "Nakasara" +msgstr "Nakadisable" #: builtin/common/settings/dlg_settings.lua msgid "Enabled" -msgstr "Nakabukas" +msgstr "Nakaenable" #: builtin/common/settings/dlg_settings.lua src/settings_translation_file.cpp msgid "General" msgstr "" #: builtin/common/settings/dlg_settings.lua -#, fuzzy msgid "Long tap" -msgstr "Diinan" +msgstr "Pindot na Madiin" #: builtin/common/settings/dlg_settings.lua msgid "Movement" @@ -272,26 +266,23 @@ msgstr "Paggalaw" #: builtin/common/settings/dlg_settings.lua #: builtin/mainmenu/content/dlg_contentdb.lua msgid "No results" -msgstr "Walang mga resulta" +msgstr "Walang resulta" #: builtin/common/settings/dlg_settings.lua -#, fuzzy msgid "Reset setting to default" -msgstr "I-reset ang setting sa dati" +msgstr "I-reset ang setting sa default" #: builtin/common/settings/dlg_settings.lua -#, fuzzy msgid "Reset setting to default ($1)" -msgstr "I-reset ang setting sa dati ($1)" +msgstr "I-reset ang setting sa default ($1)" #: builtin/common/settings/dlg_settings.lua builtin/mainmenu/tab_online.lua msgid "Search" msgstr "Maghanap" #: builtin/common/settings/dlg_settings.lua -#, fuzzy msgid "Short tap" -msgstr "Maiigsing Pindot" +msgstr "Pindot na Maiikli" #: builtin/common/settings/dlg_settings.lua #, fuzzy @@ -300,7 +291,7 @@ msgstr "Buksan ang advanced settings" #: builtin/common/settings/dlg_settings.lua msgid "Show technical names" -msgstr "Ipakita ang mga teknikal na pangalan" +msgstr "Ipakita ang technical names" #: builtin/common/settings/dlg_settings.lua #, fuzzy @@ -308,24 +299,20 @@ msgid "Tap" msgstr "Pindot" #: builtin/common/settings/dlg_settings.lua -#, fuzzy msgid "Tap with crosshair" -msgstr "Pindot gamit ang crosshair" +msgstr "Pindot kasama'ng crosshair" #: builtin/common/settings/dlg_settings.lua -#, fuzzy msgid "Touchscreen layout" -msgstr "Puwesto ng Touchscreen" +msgstr "Layout ng Touchscreen" #: builtin/common/settings/settingtypes.lua -#, fuzzy msgid "Client Mods" -msgstr "Mod sa Client" +msgstr "Modyul sa Client" #: builtin/common/settings/settingtypes.lua -#, fuzzy msgid "Content: Games" -msgstr "Nilalaman: Laro" +msgstr "Nilalaman: Mga Laro" #: builtin/common/settings/settingtypes.lua #, fuzzy @@ -333,9 +320,8 @@ msgid "Content: Mods" msgstr "Nilalaman: Modyul" #: builtin/common/settings/shadows_component.lua -#, fuzzy msgid "(The game will need to enable shadows as well)" -msgstr "(Ang laro ay nangangailangan ring buksan ang anino/shadows)" +msgstr "(Ang larong ito ay nangangailangan ring i-enable ang shadows)" #: builtin/common/settings/shadows_component.lua #, fuzzy @@ -345,7 +331,7 @@ msgstr "Kustom" #: builtin/common/settings/shadows_component.lua #: src/settings_translation_file.cpp msgid "Dynamic shadows" -msgstr "Dynamic na mga anino" +msgstr "Dynamic na anino" #: builtin/common/settings/shadows_component.lua msgid "High" @@ -390,71 +376,67 @@ msgstr "Sige" #: builtin/fstk/ui.lua msgid "Reconnect" -msgstr "Kumonekta uli" +msgstr "Magreconnect" #: builtin/fstk/ui.lua msgid "The server has requested a reconnect:" -msgstr "Humiling ang server ng pagkonekta muli:" +msgstr "Nagrequest ang server ng reconnection:" #: builtin/mainmenu/common.lua msgid "Protocol version mismatch. " -msgstr "Di tumugmang bersyon ng protocol. " +msgstr "Mismatch ang version ng protocol. " #: builtin/mainmenu/common.lua msgid "Server enforces protocol version $1. " -msgstr "Pinapatupad ng server ang bersyon ng protocol na $1. " +msgstr "Pinapatupad ng server ang version 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. " +msgstr "Supported ng server ang mga version ng protocol mula sa $1 at $2. " #: builtin/mainmenu/common.lua msgid "We only support protocol version $1." -msgstr "Suportado lang po namin ang bersyon ng protocol na $1." +msgstr "Aming supported ay ang version na $1 lamang." #: 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." +msgstr "Aming supported ay ang protocol version $1 at $2 lamang." #: builtin/mainmenu/content/contentdb.lua -#, fuzzy msgid "Error installing \"$1\": $2" -msgstr "Error na salpak \"$1\": $2" +msgstr "Error ang sinalpak na \"$1\": $2" #: builtin/mainmenu/content/contentdb.lua -#, fuzzy msgid "Failed to download \"$1\"" -msgstr "Di-Tagumpay sa pag-download ng \"$1\"" +msgstr "Failed ang pagdownload ng \"$1\"" #: builtin/mainmenu/content/contentdb.lua msgid "Failed to download $1" -msgstr "Bigong ma-download ang $1" +msgstr "Failed ang pagdownload ng $1" #: builtin/mainmenu/content/contentdb.lua msgid "" "Failed to extract \"$1\" (insufficient disk space, unsupported file type or " "broken archive)" msgstr "" -"Di-Tagumpay na pag-extract ng \"$1\" (kulang ang laman ng disk, o hindi " -"supportadong file type o sirang archive)" +"Failed ang pag-extract ng \"$1\" (kulang ang laman ng disk space, o " +"unsupported file type o broken na archive)" #: builtin/mainmenu/content/dlg_contentdb.lua msgid "" "$1 downloading,\n" "$2 queued" msgstr "" -"$1 dina-download,\n" -"$2 nakapila" +"$1 ay dinadownload,\n" +"$2 ay nakaqueue" #: builtin/mainmenu/content/dlg_contentdb.lua msgid "$1 downloading..." -msgstr "$1 dina-download..." +msgstr "$1 ay dinadownload..." #: builtin/mainmenu/content/dlg_contentdb.lua msgid "All" -msgstr "Pangkalahatan" +msgstr "Kalahatan" #: builtin/mainmenu/content/dlg_contentdb.lua msgid "ContentDB is not available when Luanti was compiled without cURL" @@ -463,11 +445,11 @@ msgstr "" #: builtin/mainmenu/content/dlg_contentdb.lua msgid "Downloading..." -msgstr "Dina-download..." +msgstr "Dinadownload..." #: builtin/mainmenu/content/dlg_contentdb.lua msgid "Featured" -msgstr "" +msgstr "Nakatampok" #: builtin/mainmenu/content/dlg_contentdb.lua msgid "Games" @@ -478,23 +460,23 @@ msgstr "Mga Laro" #: builtin/mainmenu/content/dlg_package.lua builtin/mainmenu/serverlistmgr.lua #: src/client/game.cpp msgid "Loading..." -msgstr "Nilo-load..." +msgstr "Niloload..." #: builtin/mainmenu/content/dlg_contentdb.lua msgid "Mods" -msgstr "Mga Mod" +msgstr "Mga Modyul" #: builtin/mainmenu/content/dlg_contentdb.lua msgid "No packages could be retrieved" -msgstr "Walang makuhang mga package" +msgstr "Walang nakukuhang mga package" #: builtin/mainmenu/content/dlg_contentdb.lua msgid "No updates" -msgstr "Walang mga update" +msgstr "Walang update" #: builtin/mainmenu/content/dlg_contentdb.lua msgid "Queued" -msgstr "Nakapila" +msgstr "Nakaqueue" #: builtin/mainmenu/content/dlg_contentdb.lua msgid "Texture Packs" @@ -502,7 +484,7 @@ msgstr "Texture Packs" #: builtin/mainmenu/content/dlg_contentdb.lua msgid "The package $1 was not found." -msgstr "Ang paketeng $1 ay hindi mahanap." +msgstr "Ang package na $1 ay hindi mahanap." #: builtin/mainmenu/content/dlg_contentdb.lua msgid "Update All [$1]" @@ -510,7 +492,7 @@ msgstr "I-update Lahat [$1]" #: builtin/mainmenu/content/dlg_install.lua msgid "$1 and $2 dependencies will be installed." -msgstr "Ii-install ang mga kailangan na $1 at $2." +msgstr "Maginstall ng dependencies na $1 at $2." #: builtin/mainmenu/content/dlg_install.lua msgid "$1 by $2" @@ -518,15 +500,15 @@ msgstr "$1 ni $2" #: builtin/mainmenu/content/dlg_install.lua msgid "$1 required dependencies could not be found." -msgstr "Di makita ang $1 (na) kailangan." +msgstr "$1 na dependencies ay hindi mahanap." #: builtin/mainmenu/content/dlg_install.lua msgid "$1 will be installed, and $2 dependencies will be skipped." -msgstr "Ii-install ang $1, at lalaktawan ang %2." +msgstr "Maiinstall ang $1, at ang $2 dependencies ay lalaktawan." #: builtin/mainmenu/content/dlg_install.lua msgid "Already installed" -msgstr "Naka-install na" +msgstr "Nakainstall na" #: builtin/mainmenu/content/dlg_install.lua msgid "Base Game:" @@ -535,11 +517,11 @@ msgstr "Basehang Laro:" #: builtin/mainmenu/content/dlg_install.lua #: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/tab_content.lua msgid "Dependencies:" -msgstr "Mga kailangan:" +msgstr "Dependencies:" #: builtin/mainmenu/content/dlg_install.lua msgid "Error getting dependencies for package $1" -msgstr "Di-Tagumpay manguha ng dependencies ng paketeng $1" +msgstr "Error ang pagkuha sa dependencies ukol sa package $1" #: builtin/mainmenu/content/dlg_install.lua #: builtin/mainmenu/content/dlg_package.lua @@ -552,27 +534,27 @@ msgstr "I-install ang $1" #: builtin/mainmenu/content/dlg_install.lua msgid "Install missing dependencies" -msgstr "I-install ang mga nawawalang kailangan" +msgstr "I-install ang walang mga dependencies" #: builtin/mainmenu/content/dlg_install.lua msgid "Not found" -msgstr "Di nakita" +msgstr "Hindi nahanap" #: builtin/mainmenu/content/dlg_install.lua msgid "Please check that the base game is correct." -msgstr "Siguraduhing tama ang basehang laro." +msgstr "Mangyaring suriin kung ang basehang laro ay tugma/tama." #: builtin/mainmenu/content/dlg_install.lua msgid "You need to install a game before you can install a mod" -msgstr "Kailangan mag-salpak ng laro bago makapag-salpak ng modyul" +msgstr "Kailangan magsalpak ng laro bago makapagsalpak ng modyul" #: builtin/mainmenu/content/dlg_overwrite.lua msgid "\"$1\" already exists. Would you like to overwrite it?" -msgstr "Meron na'ng \"$1\". Gusto mo bang i-overwrite ito?" +msgstr "Meron nang $1. Nais mo bang palitan ng bago ito?" #: builtin/mainmenu/content/dlg_overwrite.lua msgid "Overwrite" -msgstr "I-overwrite" +msgstr "Magoverwrite" #: builtin/mainmenu/content/dlg_package.lua msgid "ContentDB page" @@ -612,7 +594,7 @@ msgstr "" #: builtin/mainmenu/content/dlg_package.lua msgid "Reviews" -msgstr "" +msgstr "Mga Review" #: builtin/mainmenu/content/dlg_package.lua msgid "Source" @@ -635,13 +617,12 @@ msgid "Website" msgstr "" #: builtin/mainmenu/content/dlg_package.lua -#, fuzzy msgid "by $1" -msgstr "$1 ni $2" +msgstr "kay $1" #: builtin/mainmenu/content/dlg_package.lua msgid "by $1 — $2 downloads — +$3 / $4 / -$5" -msgstr "" +msgstr "kay $1 — dinownload ni $2 — +$3/$4/-$5" #: builtin/mainmenu/content/pkgmgr.lua msgid "$1 (Enabled)" @@ -683,11 +664,11 @@ msgstr "" #: builtin/mainmenu/dlg_config_world.lua msgid "(Enabled, has error)" -msgstr "" +msgstr "(Nag-enable, may error)" #: builtin/mainmenu/dlg_config_world.lua msgid "(Unsatisfied)" -msgstr "" +msgstr "(May kulang)" #: builtin/mainmenu/dlg_config_world.lua msgid "Disable all" @@ -806,6 +787,8 @@ msgid "" "Different dungeon variant generated in desert biomes (only if dungeons " "enabled)" msgstr "" +"Maraming uri ng dungeon ma-generate sa mga desert biome (kapag naka-enable " +"ang dungeons)" #: builtin/mainmenu/dlg_create_world.lua msgid "Dungeons" @@ -833,7 +816,7 @@ msgstr "Mga burol" #: builtin/mainmenu/dlg_create_world.lua msgid "Humid rivers" -msgstr "Mga mahalumigmig na ilog" +msgstr "" #: builtin/mainmenu/dlg_create_world.lua msgid "Increases humidity around rivers" @@ -973,7 +956,7 @@ msgstr "Dahil dyan, may pagbabagong nangyari sa iyong keybindings." #: builtin/mainmenu/dlg_rebind_keys.lua msgid "Check out the key settings or refer to the documentation:" -msgstr "" +msgstr "Tingnan ang key settings o tumugon sa documentation:" #: builtin/mainmenu/dlg_rebind_keys.lua msgid "Close" @@ -1023,7 +1006,7 @@ msgstr "Magparehistro" #: builtin/mainmenu/dlg_reinstall_mtg.lua msgid "Dismiss" -msgstr "" +msgstr "Huwag pansinin" #: builtin/mainmenu/dlg_reinstall_mtg.lua msgid "" @@ -1102,7 +1085,7 @@ msgstr "" #: builtin/mainmenu/dlg_version_info.lua msgid "Later" -msgstr "" +msgstr "Mamaya na" #: builtin/mainmenu/dlg_version_info.lua msgid "Never" @@ -1110,7 +1093,7 @@ msgstr "" #: builtin/mainmenu/dlg_version_info.lua msgid "Visit website" -msgstr "" +msgstr "Tingnan sa website" #: builtin/mainmenu/init.lua src/client/game_formspec.cpp msgid "Settings" @@ -1128,7 +1111,7 @@ msgstr "" #: builtin/mainmenu/tab_about.lua msgid "About" -msgstr "Patungkol" +msgstr "" #: builtin/mainmenu/tab_about.lua msgid "Active Contributors" @@ -1168,25 +1151,23 @@ msgstr "Dating Nangungunang mga Developer" #: builtin/mainmenu/tab_about.lua msgid "Share debug log" -msgstr "" +msgstr "I-share ang debug log" #: builtin/mainmenu/tab_content.lua msgid "Browse online content" msgstr "Mag-browse ng online content" #: builtin/mainmenu/tab_content.lua -#, fuzzy msgid "Browse online content [$1]" -msgstr "Mag-browse ng online content" +msgstr "Mag-browse ng online content [$1]" #: builtin/mainmenu/tab_content.lua msgid "Content" msgstr "Content" #: builtin/mainmenu/tab_content.lua -#, fuzzy msgid "Content [$1]" -msgstr "Content" +msgstr "Content [$1]" #: builtin/mainmenu/tab_content.lua msgid "Disable Texture Pack" @@ -1241,9 +1222,8 @@ msgid "Host Server" msgstr "Mag-host ng Server" #: builtin/mainmenu/tab_local.lua -#, fuzzy msgid "Install a game" -msgstr "I-install ang $1" +msgstr "I-salpak ang laro" #: builtin/mainmenu/tab_local.lua msgid "Install games from ContentDB" @@ -1251,22 +1231,20 @@ msgstr "Mag-install ng mga laro mula sa ContentDB" #: builtin/mainmenu/tab_local.lua msgid "Luanti doesn't come with a game by default." -msgstr "" +msgstr "Ang Luanti ay wala ng kasamang laro nang default." #: builtin/mainmenu/tab_local.lua msgid "" "Luanti is a game-creation platform that allows you to play many different " "games." msgstr "" +"Ang Luanti ay Isang game-creation platform na pwedeng maglaro ng iba't ibang " +"laro." #: 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" @@ -1381,9 +1359,8 @@ msgid "Server Description" msgstr "Paglalarawan sa Server" #: src/client/client.cpp -#, fuzzy msgid "Connection aborted (protocol error?)." -msgstr "Error sa koneksyon (nag-timeout?)" +msgstr "Aborted ang connection (nag-error ang protocol?)." #: src/client/client.cpp src/client/game.cpp msgid "Connection timed out." @@ -1396,7 +1373,7 @@ msgstr "Tapos na!" #: src/client/client.cpp #, c-format msgid "Failed to save screenshot to \"%s\"" -msgstr "" +msgstr "Failed ma-save ang screenshot sa \"%s\"" #: src/client/client.cpp msgid "Initializing nodes" @@ -1415,9 +1392,9 @@ msgid "Rebuilding shaders..." msgstr "Rine-rebuild ang mga shader..." #: src/client/client.cpp -#, fuzzy, c-format +#, c-format msgid "Saved screenshot to \"%s\"" -msgstr "Mag-screenshot" +msgstr "Saved ang screenshot sa \"%s\"" #: src/client/clientlauncher.cpp msgid "Could not find or load game: " @@ -1502,7 +1479,7 @@ msgstr "Nakadisable ang Camera update" #: src/client/game.cpp msgid "Camera update enabled" -msgstr "" +msgstr "Naka-enable ang Camera update" #: src/client/game.cpp msgid "Can't show block bounds (disabled by game or mod)" @@ -1682,28 +1659,29 @@ msgid "Unable to listen on %s because IPv6 is disabled" msgstr "Bigong makakinig sa %s dahil nakasara ang IPv6" #: src/client/game.cpp -#, fuzzy msgid "Unlimited viewing range disabled" -msgstr "Nakabukas ang unlimited na viewing range" +msgstr "Naka-disable ang Unlimited viewing range" #: src/client/game.cpp -#, fuzzy msgid "Unlimited viewing range enabled" -msgstr "Nakabukas ang unlimited na viewing range" +msgstr "Naka-enable ang Unlimited viewing range" #: src/client/game.cpp msgid "Unlimited viewing range enabled, but forbidden by game or mod" msgstr "" +"Naka-enable ang Unlimited viewing range, pero hindi pinahintulutang ng laro " +"o modyul" #: src/client/game.cpp -#, fuzzy, c-format +#, c-format msgid "Viewing changed to %d (the minimum)" -msgstr "Nasa minimum na ang viewing range: %d" +msgstr "Nabago ang Viewing sa %d (minimum)" #: src/client/game.cpp #, c-format msgid "Viewing changed to %d (the minimum), but limited to %d by game or mod" msgstr "" +"Nabago ang Viewing sa %d (minimum), pero ni-limita sa %d ng game o modyul" #: src/client/game.cpp #, c-format @@ -1711,20 +1689,21 @@ msgid "Viewing range changed to %d" msgstr "Binago ang viewing range papuntang %d" #: src/client/game.cpp -#, fuzzy, c-format +#, c-format msgid "Viewing range changed to %d (the maximum)" -msgstr "Binago ang viewing range papuntang %d" +msgstr "Nabago ang Viewing range sa %d (max)" #: src/client/game.cpp #, c-format msgid "" "Viewing range changed to %d (the maximum), but limited to %d by game or mod" -msgstr "" +msgstr "Nabago ang Viewing sa %d (max), pero ni-limita sa %d ng game o modyul" #: src/client/game.cpp -#, fuzzy, c-format +#, c-format msgid "Viewing range changed to %d, but limited to %d by game or mod" -msgstr "Binago ang viewing range papuntang %d" +msgstr "" +"Binago ang viewing range papuntang %d, pero ni-limita sa %d ng game o modyul" #: src/client/game.cpp #, c-format @@ -1733,7 +1712,7 @@ msgstr "Binago ang volume papuntang %d%%" #: src/client/game.cpp msgid "Wireframe not supported by video driver" -msgstr "" +msgstr "Unsupported ng video driver ang Wireframe" #: src/client/game.cpp msgid "Wireframe shown" @@ -1769,7 +1748,6 @@ msgid "Continue" msgstr "Magpatuloy" #: src/client/game_formspec.cpp -#, fuzzy msgid "" "Controls:\n" "No menu open:\n" @@ -1784,18 +1762,18 @@ msgid "" "- 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" +"Controls:\n" +"No menu open:\n" +"- slide ang daliri: look around\n" +"- pindot/tap: place/punch/use (default)\n" +"- pindot/tap na madiin: dig/use (default)\n" +"Kung bubuksan ang Menu/inventory:\n" +"- dobleng pindot (outside):\n" +" --> close\n" +"- touch stack, touch slot:\n" +" --> move stack\n" +"- touch&drag, tap 2nd finger\n" +" --> place single item to slot\n" #: src/client/game_formspec.cpp msgid "Exit to Menu" @@ -1842,9 +1820,8 @@ msgid "You died" msgstr "Namatay ka" #: src/client/gameui.cpp -#, fuzzy msgid "Chat currently disabled by game or mod" -msgstr "Kasalukuyang sinara ng laro o mod ang pag-zoom" +msgstr "Currently naka-disable ang chat ng game o mod" #: src/client/gameui.cpp msgid "Chat hidden" @@ -1871,10 +1848,6 @@ msgstr "Nakatago ang profiler" 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" @@ -1889,76 +1862,47 @@ msgid "Caps Lock" msgstr "Caps Lock" #: src/client/keycode.cpp -#, fuzzy msgid "Clear Key" -msgstr "Linisin" +msgstr "" #: src/client/keycode.cpp -#, fuzzy msgid "Control Key" -msgstr "Control" +msgstr "" #: src/client/keycode.cpp -#, fuzzy msgid "Delete Key" -msgstr "Burahin" +msgstr "" #: src/client/keycode.cpp msgid "Down Arrow" msgstr "" #: src/client/keycode.cpp -msgid "End" -msgstr "End" +msgid "End Key" +msgstr "" #: src/client/keycode.cpp -msgid "Erase EOF" -msgstr "Erase EOF" - -#: src/client/keycode.cpp -msgid "Execute" -msgstr "Execute" - -#: src/client/keycode.cpp -msgid "Help" +#, fuzzy +msgid "Help Key" msgstr "Help" #: src/client/keycode.cpp -msgid "Home" +#, fuzzy +msgid "Home Key" 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 -#, fuzzy msgid "Left Arrow" -msgstr "Left Control" +msgstr "" #: src/client/keycode.cpp -msgid "Left Button" -msgstr "Left Button" +#, fuzzy +msgid "Left Click" +msgstr "Left Control" #: src/client/keycode.cpp msgid "Left Control" @@ -1972,19 +1916,26 @@ msgstr "Left Menu" msgid "Left Shift" msgstr "Left Shift" +#. ~ Name of key #: src/client/keycode.cpp msgid "Left Windows" msgstr "Left Windows" -#. ~ Key name, common on Windows keyboards #: src/client/keycode.cpp -#, fuzzy msgid "Menu Key" -msgstr "Menu" +msgstr "" #: src/client/keycode.cpp -msgid "Middle Button" -msgstr "Middle Button" +msgid "Middle Click" +msgstr "" + +#: src/client/keycode.cpp +msgid "Mouse X1" +msgstr "" + +#: src/client/keycode.cpp +msgid "Mouse X2" +msgstr "" #: src/client/keycode.cpp msgid "Num Lock" @@ -2051,24 +2002,17 @@ msgid "Numpad 9" msgstr "Numpad 9" #: src/client/keycode.cpp -msgid "OEM Clear" -msgstr "OEM Clear" - -#: src/client/keycode.cpp -#, fuzzy msgid "Page Down" -msgstr "Page down" +msgstr "" #: src/client/keycode.cpp -#, fuzzy msgid "Page Up" -msgstr "Page up" +msgstr "" #. ~ Usually paired with the Break key #: src/client/keycode.cpp -#, fuzzy msgid "Pause Key" -msgstr "Pause" +msgstr "" #: src/client/keycode.cpp msgid "Play" @@ -2080,19 +2024,18 @@ msgid "Print" msgstr "Print" #: src/client/keycode.cpp -#, fuzzy msgid "Return Key" -msgstr "Return" +msgstr "" + +#: src/client/keycode.cpp +msgid "Right Arrow" +msgstr "" #: src/client/keycode.cpp #, fuzzy -msgid "Right Arrow" +msgid "Right Click" msgstr "Right Control" -#: src/client/keycode.cpp -msgid "Right Button" -msgstr "Right Button" - #: src/client/keycode.cpp msgid "Right Control" msgstr "Right Control" @@ -2105,6 +2048,7 @@ msgstr "Right Menu" msgid "Right Shift" msgstr "Right Shift" +#. ~ Name of key #: src/client/keycode.cpp msgid "Right Windows" msgstr "Right Windows" @@ -2113,49 +2057,27 @@ msgstr "Right Windows" msgid "Scroll Lock" msgstr "Scroll Lock" -#. ~ Key name -#: src/client/keycode.cpp -msgid "Select" -msgstr "Select" - #: src/client/keycode.cpp #, fuzzy +msgid "Select Key" +msgstr "Magselect ng file" + +#: src/client/keycode.cpp msgid "Shift Key" -msgstr "Shift" - -#: src/client/keycode.cpp -msgid "Sleep" -msgstr "Sleep" - -#: src/client/keycode.cpp -msgid "Snapshot" -msgstr "Snapshot" +msgstr "" #: src/client/keycode.cpp msgid "Space" msgstr "Space" #: src/client/keycode.cpp -msgid "Tab" -msgstr "Tab" +msgid "Tab Key" +msgstr "" #: src/client/keycode.cpp msgid "Up Arrow" msgstr "" -#: 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 -#, fuzzy -msgid "Zoom Key" -msgstr "Zoom" - #: src/client/minimap.cpp msgid "Minimap hidden" msgstr "Nakatago ang minimap" @@ -2175,41 +2097,42 @@ msgid "Minimap in texture mode" msgstr "Minimap sa texture mode" #: src/client/shader.cpp -#, fuzzy, c-format +#, c-format msgid "Failed to compile the \"%s\" shader." -msgstr "Bigong mabuksan ang webpage" +msgstr "Failed ma-compile ang \"%s\" shader." #: src/client/shader.cpp -#, fuzzy msgid "GLSL is not supported by the driver" -msgstr "Di suportado ang system ng tunog sa build na ito" +msgstr "Unsupported ng driver ang GLSL" #. ~ Error when a mod is missing dependencies. Ex: "Mod Title is missing: mod1, mod2, mod3" #: src/content/mod_configuration.cpp #, c-format msgid "%s is missing:" -msgstr "" +msgstr "%s ay nawawalan nang:" #: src/content/mod_configuration.cpp msgid "" "Install and enable the required mods, or disable the mods causing errors." msgstr "" +"I-salpak at enable ang required modyul, o i-disable/tanggalin ang modyul na " +"nag-error dito." #: src/content/mod_configuration.cpp msgid "" "Note: this may be caused by a dependency cycle, in which case try updating " "the mods." msgstr "" +"Paalala: posibleng dahil ito sa dependency cycle, kung maaari subukang i-" +"update ang mga modyul." #: src/content/mod_configuration.cpp -#, fuzzy msgid "Some mods have unsatisfied dependencies:" -msgstr "Walang kailangang kailangan" +msgstr "Unsatisfied ang iilang dependencies ng modyul:" #: src/gui/guiButtonKey.h -#, fuzzy msgid "Press Button" -msgstr "Left Button" +msgstr "" #: src/gui/guiChatConsole.cpp msgid "Failed to open webpage" @@ -2225,16 +2148,15 @@ msgstr "Tumuloy" #: src/gui/guiOpenURL.cpp msgid "Open" -msgstr "" +msgstr "I-Open" #: src/gui/guiOpenURL.cpp msgid "Open URL?" -msgstr "" +msgstr "I-open ang URL?" #: src/gui/guiOpenURL.cpp -#, fuzzy msgid "Unable to open URL" -msgstr "Bigong mabuksan ang webpage" +msgstr "Unable i-open ang URL" #: src/gui/guiPasswordChange.cpp msgid "Change" @@ -2262,19 +2184,16 @@ msgid "Sound Volume: %d%%" msgstr "Volume ng Tunog: %d%%" #: src/gui/touchscreeneditor.cpp -#, fuzzy msgid "Add button" -msgstr "Middle Button" +msgstr "" #: src/gui/touchscreeneditor.cpp -#, fuzzy msgid "Done" -msgstr "Tapos na!" +msgstr "Tapos na" #: src/gui/touchscreeneditor.cpp -#, fuzzy msgid "Remove" -msgstr "Remote na server" +msgstr "" #: src/gui/touchscreeneditor.cpp msgid "Reset" @@ -2345,9 +2264,8 @@ msgid "Toggle chat log" msgstr "I-toggle ang chat log" #: src/gui/touchscreenlayout.cpp -#, fuzzy msgid "Toggle debug" -msgstr "I-toggle ang hamog" +msgstr "I-toggle ang debug" #: src/gui/touchscreenlayout.cpp src/settings_translation_file.cpp msgid "Toggle fast" @@ -2374,19 +2292,22 @@ msgid "" "Another client is connected with this name. If your client closed " "unexpectedly, try again in a minute." msgstr "" +"Ang pangalang ito ay naka-connect sa ibang client. Kung nag-close ang " +"client nang di inaasahan, subukan muli mamaya." #: src/network/clientpackethandler.cpp msgid "Empty passwords are disallowed. Set a password and try again." msgstr "" +"Bawal ang walang naka-lagay na password. Gumawa ng password at balikan " +"nalang ito muli." #: src/network/clientpackethandler.cpp msgid "Internal server error" -msgstr "" +msgstr "Error sa internal server" #: src/network/clientpackethandler.cpp -#, fuzzy msgid "Invalid password" -msgstr "Lumang Password" +msgstr "Invalid ang password" #. ~ DO NOT TRANSLATE THIS LITERALLY! #. This is a special string which needs to contain the translation's @@ -2400,59 +2321,63 @@ msgstr "fil" msgid "" "Name is not registered. To create an account on this server, click 'Register'" msgstr "" +"Unregistered ang pangalang ito. Para makagawa ng account sa server na ito, I-" +"click ang 'Register'" #: src/network/clientpackethandler.cpp -#, fuzzy msgid "Name is taken. Please choose another name" -msgstr "Mangyaring pumili po ng pangalan!" +msgstr "May gumamit na ng pangalan. Pumili ng iba" #: src/network/clientpackethandler.cpp msgid "Player name contains disallowed characters" -msgstr "" +msgstr "May disallowed characters ang nakalagay sa player name" #: src/network/clientpackethandler.cpp -#, fuzzy msgid "Player name not allowed" -msgstr "Masyadong mahaba ang pangalan ng player." +msgstr "Hindi pwede ang Player name na'to" #: src/network/clientpackethandler.cpp -#, fuzzy msgid "Server shutting down" -msgstr "Sina-shutdown..." +msgstr "Pinapatay ang server" #: src/network/clientpackethandler.cpp msgid "" "The server has experienced an internal error. You will now be disconnected." msgstr "" +"May internal error na naranasan sa server. Ikaw ay madi-disconnect na." #: src/network/clientpackethandler.cpp msgid "The server is running in singleplayer mode. You cannot connect." -msgstr "" +msgstr "Naka-singleplayer mode ang server. Bawal mag-connect." #: src/network/clientpackethandler.cpp msgid "Too many users" -msgstr "" +msgstr "Sobrang ang mga user" #: src/network/clientpackethandler.cpp msgid "Unknown disconnect reason." -msgstr "" +msgstr "Na-disconnect nang di-batid ang dahilan." #: src/network/clientpackethandler.cpp msgid "" "Your client sent something the server didn't expect. Try reconnecting or " "updating your client." msgstr "" +"May unexpeected na pinadala ang client sa server. Subukan magreconnect o i-" +"update ang iyong client." #: src/network/clientpackethandler.cpp msgid "" "Your client's version is not supported.\n" "Please contact the server administrator." msgstr "" +"Unsupported ang iyong client version.\n" +"Mangyaring i-contact ang server administrator." #: src/server.cpp -#, fuzzy, c-format +#, c-format msgid "%s while shutting down: " -msgstr "Sina-shutdown..." +msgstr "%s habang sina-shutdown: " #: src/settings_translation_file.cpp msgid "" @@ -2465,16 +2390,6 @@ msgid "" "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 "" @@ -2486,36 +2401,30 @@ msgid "" "Default is for a vertically-squashed shape suitable for\n" "an island, set all 3 numbers equal for the raw shape." msgstr "" -"(X,Y,Z) 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." +"Ang 2D noise na nagko-control ng shape/size lubak ng bundok (ridged " +"mountains.)" #: 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." +msgstr "" +"Ang 2D noise na nagko-control ng shape/size ng kurba ng burol (rolling " +"hills.)" #: 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." +msgstr "" #: 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." +msgstr "" #: src/settings_translation_file.cpp msgid "2D noise that controls the size/occurrence of step mountain ranges." @@ -2592,12 +2501,11 @@ msgstr "3D noise na nagdedetermina sa bilang ng mga dungeon kada mapchunk." msgid "" "3D support.\n" "Currently supported:\n" -"- none: no 3d output.\n" -"- anaglyph: cyan/magenta color 3d.\n" -"- interlaced: odd/even line based polarization screen support.\n" -"- topbottom: split screen top/bottom.\n" -"- sidebyside: split screen side by side.\n" -"- crossview: Cross-eyed 3d" +"- none: no 3D output\n" +"- anaglyph: cyan/magenta color 3D\n" +"- topbottom: split screen top/bottom\n" +"- sidebyside: split screen side-by-side\n" +"- crossview: cross-eyed 3D" msgstr "" "Suporta sa 3D.\n" "Kasalukuyang suportado:\n" @@ -2651,11 +2559,11 @@ 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" +msgstr "" #: src/settings_translation_file.cpp msgid "Active block management interval" -msgstr "Pagitan sa management sa aktibong block" +msgstr "" #: src/settings_translation_file.cpp msgid "Active block range" @@ -2689,9 +2597,8 @@ msgstr "" "gumagawa ng solidong layer ng lumulutang na lupa." #: src/settings_translation_file.cpp -#, fuzzy msgid "Admin name" -msgstr "Idagdag ang pangalan ng item" +msgstr "Pangalan ng admin" #: src/settings_translation_file.cpp msgid "Advanced" @@ -2709,7 +2616,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Allows liquids to be translucent." -msgstr "" +msgstr "Gawing translucent ang liquid." #: src/settings_translation_file.cpp msgid "" @@ -2734,9 +2641,8 @@ msgstr "" "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" +msgstr "Palaging lumipad nang mabilis" #: src/settings_translation_file.cpp msgid "Ambient occlusion gamma" @@ -2980,6 +2886,17 @@ msgstr "Pag-smooth sa kamera" msgid "Camera smoothing in cinematic mode" msgstr "Pag-smooth sa kamera sa cinematic mode" +#: src/settings_translation_file.cpp +msgid "Capture Tracy zones" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Capture Tracy zones with the profiler's instrumentation.\n" +"You need to build with Tracy to use this, see doc/developing/profiling.md\n" +"for details." +msgstr "" + #: src/settings_translation_file.cpp msgid "Cave noise" msgstr "Noise ng kweba" @@ -3086,13 +3003,12 @@ msgid "Client" msgstr "Client" #: src/settings_translation_file.cpp -#, fuzzy msgid "Client Debugging" -msgstr "Pag-mod ng client" +msgstr "Debugging ang Client" #: src/settings_translation_file.cpp msgid "Client Mesh Chunksize" -msgstr "" +msgstr "Chunksize ng Client Mesh" #: src/settings_translation_file.cpp msgid "Client and Server" @@ -3100,49 +3016,47 @@ msgstr "Client at Server" #: src/settings_translation_file.cpp msgid "Client modding" -msgstr "Pag-mod ng client" +msgstr "Modding ng client" #: src/settings_translation_file.cpp msgid "Client side modding restrictions" -msgstr "Mga restriksyon sa pag-mod ng client side" +msgstr "Restrictions sa modding ng Client side" #: src/settings_translation_file.cpp -#, fuzzy msgid "Client-side Modding" -msgstr "Pag-mod ng client" +msgstr "Modding sa Client-Side" #: src/settings_translation_file.cpp -#, fuzzy msgid "Client-side node lookup range restriction" -msgstr "Restriksyon sa saklaw ng pagtingin sa node ng client side" +msgstr "Restriction sa lookup range ng Client-Side node" #: src/settings_translation_file.cpp msgid "Climbing speed" -msgstr "Bilis ng pag-akyat" +msgstr "Speed ng Climbing" #: src/settings_translation_file.cpp msgid "Cloud radius" -msgstr "Radius ng ulap" +msgstr "Radius ng Cloud" #: src/settings_translation_file.cpp msgid "Clouds" -msgstr "Mga ulap" +msgstr "Mga Cloud" #: src/settings_translation_file.cpp msgid "Clouds in menu" -msgstr "Mga ulap sa menu" +msgstr "Clouds sa menu" #: src/settings_translation_file.cpp msgid "Color depth for post-processing texture" -msgstr "" +msgstr "Color depth para sa post-processing texture" #: src/settings_translation_file.cpp msgid "Colored fog" -msgstr "May kulay na hamog" +msgstr "Fog na Colored" #: src/settings_translation_file.cpp msgid "Colored shadows" -msgstr "Makukulay na anino" +msgstr "Shadows na colored" #: src/settings_translation_file.cpp msgid "" @@ -3166,12 +3080,18 @@ 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 "" +"Listahan ng Comma-separated na mga modyul na pwedeng i-access ang HTTP APIs, " +"na\n" +"nagaallow sa pag upload at download ng data sa/Mula sa 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 "" +"Listahan ng Comma-separated na mga modyul na pwedeng i-access nang insecure\n" +"na functions kahit na ang security ng modyul ay naka-on (via " +"request_insecure_environment())." #: src/settings_translation_file.cpp msgid "Command" @@ -3199,11 +3119,11 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Connect to external media server" -msgstr "" +msgstr "Magconnect sa external media server" #: src/settings_translation_file.cpp msgid "Connects glass if supported by node." -msgstr "" +msgstr "Nagko-connect ng glass kung supported ng node." #: src/settings_translation_file.cpp msgid "Console alpha" @@ -3471,6 +3391,10 @@ msgstr "" msgid "Developer Options" msgstr "Mga dekorasyon" +#: src/settings_translation_file.cpp +msgid "Disable if you only want to instrument with Tracy." +msgstr "" + #: src/settings_translation_file.cpp msgid "Disallow empty passwords" msgstr "" @@ -4323,6 +4247,8 @@ msgid "" "If disabled, \"Aux1\" key is used to fly fast if both fly and fast mode are\n" "enabled." msgstr "" +"Kung disabled, ang \"Aux1\" key ang ginagamit kung enabled ang fly mode at " +"fast mode." #: src/settings_translation_file.cpp msgid "" @@ -4330,6 +4256,9 @@ msgid "" "ContentDB to\n" "check for package updates when opening the mainmenu." msgstr "" +"Kung enabled at merong nakasalpak na ContentDB packages,\n" +"Ang Luanti ay maaring i-contact ang ContentDB ukol sa pagcheck ng package " +"updates kapag nasa mainmenu." #: src/settings_translation_file.cpp msgid "" @@ -4337,24 +4266,33 @@ msgid "" "and\n" "descending." msgstr "" +"Kung enabled, Ang \"Aux1\" key ang gagamitin sa magclimb down at bumaba/" +"descend at hindi ang \"Sneak\" key." #: src/settings_translation_file.cpp msgid "" "If enabled, actions are recorded for rollback.\n" "This option is only read when server starts." msgstr "" +"Kung enabled, recorded ang actions sa rollback.\n" +"Ang optiong ito ay nare-read lamang sa pag-start ng server." #: 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 "" +"Kung enabled, ang invalid world data ay hindi magiging sanhi ng pagsara ng " +"server.\n" +"I-enable lamang ito kapag batid ang iyong gagawin." #: src/settings_translation_file.cpp msgid "" "If enabled, players cannot join without a password or change theirs to an " "empty password." msgstr "" +"Kung enabled, Hindi pwede mag-join ang mga player nang walang password o " +"binago sa empty password." #: src/settings_translation_file.cpp msgid "" @@ -4362,16 +4300,21 @@ msgid "" "If disabled, connecting to a server will automatically register a new " "account." msgstr "" +"Kung enabled, Nakahiwalay sa UI ng login ang server account registration.\n" +"Kung disabled, Automatic na nakaregister sa bagong account kapag nakaconnect " +"sa server." #: src/settings_translation_file.cpp msgid "If enabled, the \"Aux1\" key will toggle when pressed." -msgstr "" +msgstr "Kung enabled, Magto-toggle ang \"Aux1\" key kapag na-press." #: src/settings_translation_file.cpp msgid "" "If enabled, the \"Sneak\" key will toggle when pressed.\n" "This functionality is ignored when fly is enabled." msgstr "" +"Kapag enabled, Magto-toggle ang \"Sneak\" key kapag napressed.\n" +"Itong functionality ay ignored kapag enabled ang fly mode." #: src/settings_translation_file.cpp #, no-c-format @@ -5161,6 +5104,11 @@ msgstr "" msgid "Maximum users" msgstr "" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Measure time samples" +msgstr "Mga Templo ng Disyerto" + #: src/settings_translation_file.cpp msgid "Message of the day" msgstr "" @@ -6985,7 +6933,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "World start time" -msgstr "" +msgstr "Pag-umpisa ng oras ng world" #: src/settings_translation_file.cpp msgid "" @@ -7063,6 +7011,62 @@ msgstr "" msgid "cURL parallel limit" msgstr "" -#, fuzzy -#~ msgid "Key for toggling cinematic mode." -#~ msgstr "Pag-smooth sa kamera sa cinematic mode" +#~ msgid "Apps" +#~ msgstr "Mga App" + +#~ msgid "End" +#~ msgstr "End" + +#~ msgid "Erase EOF" +#~ msgstr "Erase EOF" + +#~ msgid "Execute" +#~ msgstr "Execute" + +#~ msgid "IME Accept" +#~ msgstr "IME Accept" + +#~ msgid "IME Convert" +#~ msgstr "IME Convert" + +#~ msgid "IME Escape" +#~ msgstr "IME Escape" + +#~ msgid "IME Mode Change" +#~ msgstr "IME Mode Change" + +#~ msgid "IME Nonconvert" +#~ msgstr "IME Nonconvert" + +#~ msgid "Left Button" +#~ msgstr "Left Button" + +#~ msgid "Middle Button" +#~ msgstr "Middle Button" + +#~ msgid "No world created or selected!" +#~ msgstr "Walang nagawa o napiling mundo!" + +#~ msgid "OEM Clear" +#~ msgstr "OEM Clear" + +#~ msgid "Right Button" +#~ msgstr "Right Button" + +#~ msgid "Select" +#~ msgstr "Select" + +#~ msgid "Sleep" +#~ msgstr "Sleep" + +#~ msgid "Snapshot" +#~ msgstr "Snapshot" + +#~ msgid "Tab" +#~ msgstr "Tab" + +#~ msgid "X Button 1" +#~ msgstr "X Button 1" + +#~ msgid "X Button 2" +#~ msgstr "X Button 2" diff --git a/po/fr/luanti.po b/po/fr/luanti.po index df8422822..9fa6bd6df 100644 --- a/po/fr/luanti.po +++ b/po/fr/luanti.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: French (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-07-11 19:59+0200\n" +"POT-Creation-Date: 2025-09-23 19:19+0200\n" "PO-Revision-Date: 2025-07-01 14:49+0000\n" "Last-Translator: Tanavit MINETEST \n" "Language-Team: French \n" "Language-Team: Irish \n" "Language-Team: Gaelic \n" "Language-Team: Galician \n" @@ -12,7 +12,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 5.12-dev\n" +"X-Generator: Weblate 5.13-dev\n" #: builtin/client/chatcommands.lua msgid "Clear the out chat queue" @@ -607,9 +607,8 @@ msgid "Website" msgstr "Páxina web" #: builtin/mainmenu/content/dlg_package.lua -#, fuzzy msgid "by $1" -msgstr "$1 por $2" +msgstr "por $1" #: builtin/mainmenu/content/dlg_package.lua msgid "by $1 — $2 downloads — +$3 / $4 / -$5" @@ -1233,10 +1232,6 @@ msgstr "" 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" @@ -1365,7 +1360,7 @@ msgstr "Feito!" #: src/client/client.cpp #, c-format msgid "Failed to save screenshot to \"%s\"" -msgstr "" +msgstr "Non se puido gardar a captura de pantalla en \"%s\"" #: src/client/client.cpp msgid "Initializing nodes" @@ -1384,9 +1379,9 @@ msgid "Rebuilding shaders..." msgstr "Reconstruíndo sombreadores..." #: src/client/client.cpp -#, fuzzy, c-format +#, c-format msgid "Saved screenshot to \"%s\"" -msgstr "Capturas de pantalla" +msgstr "Captura de pantalla gardada en \"%s\"" #: src/client/clientlauncher.cpp msgid "Could not find or load game: " @@ -1841,10 +1836,6 @@ msgstr "Análise do mundo oculta" 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 "Aplicacións" - #: src/client/keycode.cpp msgid "Backspace" msgstr "Retroceso" @@ -1875,44 +1866,19 @@ msgid "Down Arrow" msgstr "Frecha abaixo" #: src/client/keycode.cpp -msgid "End" -msgstr "Fin" +#, fuzzy +msgid "End Key" +msgstr "Tecla do menú" #: src/client/keycode.cpp -msgid "Erase EOF" -msgstr "Borrar EOF" +#, fuzzy +msgid "Help Key" +msgstr "Tecla de eliminar" #: 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" +#, fuzzy +msgid "Home Key" +msgstr "Tecla de zoom" #: src/client/keycode.cpp msgid "Insert" @@ -1923,8 +1889,9 @@ msgid "Left Arrow" msgstr "Frecha esquerda" #: src/client/keycode.cpp -msgid "Left Button" -msgstr "Botón esquerdo" +#, fuzzy +msgid "Left Click" +msgstr "Control Esquerdo" #: src/client/keycode.cpp msgid "Left Control" @@ -1938,18 +1905,26 @@ msgstr "Menú esquerdo" msgid "Left Shift" msgstr "Shift esquerdo" +#. ~ Name of key #: src/client/keycode.cpp msgid "Left Windows" msgstr "Win. esqueda" -#. ~ Key name, common on Windows keyboards #: src/client/keycode.cpp msgid "Menu Key" msgstr "Tecla do menú" #: src/client/keycode.cpp -msgid "Middle Button" -msgstr "Botón central" +msgid "Middle Click" +msgstr "" + +#: src/client/keycode.cpp +msgid "Mouse X1" +msgstr "" + +#: src/client/keycode.cpp +msgid "Mouse X2" +msgstr "" #: src/client/keycode.cpp msgid "Num Lock" @@ -2015,10 +1990,6 @@ msgstr "Teclado numérico 8" 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 "Páxina abaixo" @@ -2050,8 +2021,9 @@ msgid "Right Arrow" msgstr "Frecha dereita" #: src/client/keycode.cpp -msgid "Right Button" -msgstr "Botón dereito" +#, fuzzy +msgid "Right Click" +msgstr "Control dereito" #: src/client/keycode.cpp msgid "Right Control" @@ -2065,6 +2037,7 @@ msgstr "Menú dereito" msgid "Right Shift" msgstr "Shift dereito" +#. ~ Name of key #: src/client/keycode.cpp msgid "Right Windows" msgstr "Windows dereito" @@ -2073,47 +2046,28 @@ msgstr "Windows dereito" msgid "Scroll Lock" msgstr "Bloqueo de desprazamento" -#. ~ Key name #: src/client/keycode.cpp -msgid "Select" -msgstr "Seleccionar" +#, fuzzy +msgid "Select Key" +msgstr "Tecla de eliminar" #: src/client/keycode.cpp msgid "Shift Key" msgstr "Tecla Maiúsculas" -#: 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" +#, fuzzy +msgid "Tab Key" +msgstr "Tecla de interrupción" #: src/client/keycode.cpp msgid "Up Arrow" msgstr "Frecha cara 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 -msgid "Zoom Key" -msgstr "Tecla de zoom" - #: src/client/minimap.cpp msgid "Minimap hidden" msgstr "Minimapa oculto" @@ -2545,15 +2499,15 @@ 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 +#, fuzzy msgid "" "3D support.\n" "Currently supported:\n" -"- none: no 3d output.\n" -"- anaglyph: cyan/magenta color 3d.\n" -"- interlaced: odd/even line based polarization screen support.\n" -"- topbottom: split screen top/bottom.\n" -"- sidebyside: split screen side by side.\n" -"- crossview: Cross-eyed 3d" +"- none: no 3D output\n" +"- anaglyph: cyan/magenta color 3D\n" +"- topbottom: split screen top/bottom\n" +"- sidebyside: split screen side-by-side\n" +"- crossview: cross-eyed 3D" msgstr "" "Soporte 3D.\n" "Soportado actualmente:\n" @@ -2665,14 +2619,12 @@ msgid "Allows liquids to be translucent." msgstr "Permite que os líquidos sexan translúcidos." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Also used for climbing down and descending in water if aux1_descends is " "disabled." msgstr "" -"Tecla para agacharse.\n" -"Tamén se usa para baixar escaleiras e descender na auga se está desactivada " -"a opción aux1_descends." +"Tamén se usa para baixar e descender na auga se aux1_descends está " +"desactivado." #: src/settings_translation_file.cpp msgid "" @@ -2933,6 +2885,17 @@ msgstr "Suavizado de cámara" msgid "Camera smoothing in cinematic mode" msgstr "Suavizado de cámara en modo cinematográfico" +#: src/settings_translation_file.cpp +msgid "Capture Tracy zones" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Capture Tracy zones with the profiler's instrumentation.\n" +"You need to build with Tracy to use this, see doc/developing/profiling.md\n" +"for details." +msgstr "" + #: src/settings_translation_file.cpp msgid "Cave noise" msgstr "Ruído de covas" @@ -3436,15 +3399,14 @@ msgid "Defines tree areas and tree density." msgstr "Define as áreas arbóreas e a densidade das árbores." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Delay between mesh updates on the client in ms. Increasing this will slow\n" "down the rate of mesh updates, which can help reduce jitter." 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." +"Retraso entre actualizacións de mallas no cliente en ms. Incrementar este " +"valor diminuirá\n" +"a frecuencia das actualizacións de mallas, o que pode axudar a reducir o " +"tremor (jitter)." #: src/settings_translation_file.cpp msgid "Delay in sending blocks after building" @@ -3490,6 +3452,10 @@ msgstr "" msgid "Developer Options" msgstr "Opcións de desenvolvedor" +#: src/settings_translation_file.cpp +msgid "Disable if you only want to instrument with Tracy." +msgstr "" + #: src/settings_translation_file.cpp msgid "Disallow empty passwords" msgstr "Non permitir contrasinais baleiros" @@ -5479,6 +5445,11 @@ msgstr "" msgid "Maximum users" msgstr "Usuarios máximos" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Measure time samples" +msgstr "Templos do deserto" + #: src/settings_translation_file.cpp msgid "Message of the day" msgstr "Mensaxe do día" @@ -5540,6 +5511,8 @@ msgid "" "Modifier key bind for closing your world.\n" "Requires ESC + the selected key to work." msgstr "" +"Atallo con tecla modificadora para pechar o teu mundo.\n" +"Necesítase premer ESC máis a tecla escollida." #: src/settings_translation_file.cpp msgid "Modifies the size of the HUD elements." @@ -5719,15 +5692,14 @@ msgid "Number of messages a player may send per 10 seconds." msgstr "Cantidade de mensaxes que un xogador pode enviar por cada 10 segundos." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Number of threads to use for mesh generation.\n" "Value of 0 (default) will let Luanti automatically choose the number of " "threads." msgstr "" -"Número de fíos a utilizar para a xeración de mallas.\n" -"Un valor de 0 (por defecto) permitirá que Luanti detecte automaticamente o " -"número de fíos dispoñibles." +"Número de fíos a usar para a xeración de mallas.\n" +"Un valor de 0 (por defecto) permitirá que Luanti escolla automaticamente o " +"número de fíos." #: src/settings_translation_file.cpp msgid "Occlusion Culler" @@ -6019,9 +5991,8 @@ msgstr "" "READ_PLAYERINFO: 32 (desactiva a chamada \"get_player_names\" no cliente)" #: src/settings_translation_file.cpp -#, fuzzy msgid "Return to Main Menu" -msgstr "Sair ao menú principal" +msgstr "Voltar ao menú principal" #: src/settings_translation_file.cpp msgid "Ridge mountain spread noise" @@ -7145,9 +7116,8 @@ msgid "Toggle fullscreen" msgstr "Activar/desactivar a pantalla completa" #: src/settings_translation_file.cpp -#, fuzzy msgid "Toggle large chat console" -msgstr "Consola de conversa grande" +msgstr "Alternar consola de conversa grande" #: src/settings_translation_file.cpp msgid "Toggle pitchmove" @@ -7158,9 +7128,8 @@ msgid "Toggle profiler" msgstr "Activar/desactivar o perfilador" #: src/settings_translation_file.cpp -#, fuzzy msgid "Toggle unlimited view range" -msgstr "Tecla para activar/desactivar o rango de vista ilimitado." +msgstr "Alternar alcance de visión ilimitado" #: src/settings_translation_file.cpp msgid "" @@ -7661,11 +7630,8 @@ 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 -#, fuzzy msgid "Will also disable autoforward, when active." -msgstr "" -"Tecla para mover o xogador cara atrás.\n" -"Tamén desactivará o desprazamento automático cando estea activa." +msgstr "Tamén desactivará o desprazamento automático cando estea activa." #: src/settings_translation_file.cpp msgid "Window maximized" @@ -7785,196 +7751,68 @@ msgstr "Tempo limite de cURL" msgid "cURL parallel limit" msgstr "Límite paralelo de cURL" -#~ msgid "Apply specular shading to nodes." -#~ msgstr "Aplique sombreado especular aos nodos." +#~ msgid "Apps" +#~ msgstr "Aplicacións" -#~ msgid "Key for decreasing the viewing range." -#~ msgstr "Tecla para diminuír o rango de visión." +#~ msgid "End" +#~ msgstr "Fin" -#~ msgid "Key for decreasing the volume." -#~ msgstr "Tecla para baixar o volume." +#~ msgid "Erase EOF" +#~ msgstr "Borrar EOF" -#~ msgid "Key for dropping the currently selected item." -#~ msgstr "Tecla para tirar o elemento seleccionado." +#~ msgid "Execute" +#~ msgstr "Executar" -#~ msgid "Key for increasing the viewing range." -#~ msgstr "Tecla para aumentar o rango de visión." +#~ msgid "Help" +#~ msgstr "Axuda" -#~ msgid "Key for increasing the volume." -#~ msgstr "Tecla para aumentar o volume." +#~ msgid "Home" +#~ msgstr "Inicio" -#~ msgid "Key for jumping." -#~ msgstr "Tecla para saltar." +#~ msgid "IME Accept" +#~ msgstr "Aceptar IME" -#~ msgid "Key for moving the player forward." -#~ msgstr "Tecla para mover o xogador cara adiante." +#~ msgid "IME Convert" +#~ msgstr "Converter IME" -#~ msgid "Key for moving the player left." -#~ msgstr "Tecla para mover o xogador á esquerda." +#~ msgid "IME Escape" +#~ msgstr "Saír do IME" -#~ msgid "Key for moving the player right." -#~ msgstr "Tecla para mover o xogador á dereita." +#~ msgid "IME Mode Change" +#~ msgstr "Cambiar modo do IME" -#~ msgid "Key for muting the game." -#~ msgstr "Tecla para silenciar o xogo." +#~ msgid "IME Nonconvert" +#~ msgstr "Non converter IME" -#~ msgid "Key for opening the chat window." -#~ msgstr "Tecla para abrir a xanela de chat." +#~ msgid "Left Button" +#~ msgstr "Botón esquerdo" -#~ msgid "Key for opening the inventory." -#~ msgstr "Tecla para abrir o inventario." +#~ msgid "Middle Button" +#~ msgstr "Botón central" -#~ msgid "Key for selecting the 11th hotbar slot." -#~ msgstr "Tecla para seleccionar o 11º slot da barra de acceso rápido." +#~ msgid "No world created or selected!" +#~ msgstr "Ningún mundo creado ou seleccionado!" -#~ msgid "Key for selecting the 12th hotbar slot." -#~ msgstr "Tecla para seleccionar o 12º slot da barra de acceso rápido." +#~ msgid "OEM Clear" +#~ msgstr "Limpar OEM" -#~ msgid "Key for selecting the 13th hotbar slot." -#~ msgstr "Tecla para seleccionar o 13º slot da barra de acceso rápido." +#~ msgid "Right Button" +#~ msgstr "Botón dereito" -#~ msgid "Key for selecting the 14th hotbar slot." -#~ msgstr "Tecla para seleccionar o 14º slot da barra de acceso rápido." +#~ msgid "Select" +#~ msgstr "Seleccionar" -#~ msgid "Key for selecting the 15th hotbar slot." -#~ msgstr "Tecla para seleccionar o 15º slot da barra de acceso rápido." +#~ msgid "Sleep" +#~ msgstr "Suspender" -#~ msgid "Key for selecting the 16th hotbar slot." -#~ msgstr "Tecla para seleccionar o 16º slot da barra de acceso rápido." +#~ msgid "Snapshot" +#~ msgstr "Instantánea" -#~ msgid "Key for selecting the 17th hotbar slot." -#~ msgstr "Tecla para seleccionar o 17º slot da barra de acceso rápido." +#~ msgid "Tab" +#~ msgstr "Tabulador" -#~ msgid "Key for selecting the 18th hotbar slot." -#~ msgstr "Tecla para seleccionar o 18º slot da barra de acceso rápido." +#~ msgid "X Button 1" +#~ msgstr "X Botón 1" -#~ msgid "Key for selecting the 19th hotbar slot." -#~ msgstr "Tecla para seleccionar o 19º slot da barra de acceso rápido." - -#~ msgid "Key for selecting the 20th hotbar slot." -#~ msgstr "Tecla para seleccionar o 20º slot da barra de acceso rápido." - -#~ msgid "Key for selecting the 21st hotbar slot." -#~ msgstr "Tecla para seleccionar o 21º slot da barra de acceso rápido." - -#~ msgid "Key for selecting the 22nd hotbar slot." -#~ msgstr "Tecla para seleccionar o 22º slot da barra de acceso rápido." - -#~ msgid "Key for selecting the 23rd hotbar slot." -#~ msgstr "Tecla para seleccionar o 23º slot da barra de acceso rápido." - -#~ msgid "Key for selecting the 24th hotbar slot." -#~ msgstr "Tecla para seleccionar o 24º slot da barra de acceso rápido." - -#~ msgid "Key for selecting the 25th hotbar slot." -#~ msgstr "Tecla para seleccionar o 25º slot da barra de acceso rápido." - -#~ msgid "Key for selecting the 26th hotbar slot." -#~ msgstr "Tecla para seleccionar o 26º slot da barra de acceso rápido." - -#~ msgid "Key for selecting the 27th hotbar slot." -#~ msgstr "Tecla para seleccionar o 27º slot da barra de acceso rápido." - -#~ msgid "Key for selecting the 28th hotbar slot." -#~ msgstr "Tecla para seleccionar o 28º slot da barra de acceso rápido." - -#~ msgid "Key for selecting the 29th hotbar slot." -#~ msgstr "Tecla para seleccionar o 29º slot da barra de acceso rápido." - -#~ msgid "Key for selecting the 30th hotbar slot." -#~ msgstr "Tecla para seleccionar o 30º slot da barra de acceso rápido." - -#~ msgid "Key for selecting the 31st hotbar slot." -#~ msgstr "Tecla para seleccionar o 31º slot da barra de acceso rápido." - -#~ msgid "Key for selecting the 32nd hotbar slot." -#~ msgstr "Tecla para seleccionar o 32º slot da barra de acceso rápido." - -#~ msgid "Key for selecting the eighth hotbar slot." -#~ msgstr "Tecla para seleccionar o 8º slot da barra de acceso rápido." - -#~ msgid "Key for selecting the fifth hotbar slot." -#~ msgstr "Tecla para seleccionar o 5º slot da barra de acceso rápido." - -#~ msgid "Key for selecting the first hotbar slot." -#~ msgstr "Tecla para seleccionar o 1º slot da barra de acceso rápido." - -#~ msgid "Key for selecting the fourth hotbar slot." -#~ msgstr "Tecla para seleccionar o 4º slot da barra de acceso rápido." - -#~ msgid "Key for selecting the next item in the hotbar." -#~ msgstr "" -#~ "Tecla para seleccionar o seguinte obxecto na barra de acceso rápido." - -#~ msgid "Key for selecting the ninth hotbar slot." -#~ msgstr "Tecla para seleccionar o 9º slot da barra de acceso rápido." - -#~ msgid "Key for selecting the previous item in the hotbar." -#~ msgstr "" -#~ "Tecla para seleccionar o obxecto anterior na barra de acceso rápido." - -#~ msgid "Key for selecting the second hotbar slot." -#~ msgstr "Tecla para seleccionar o 2º slot da barra de acceso rápido." - -#~ msgid "Key for selecting the seventh hotbar slot." -#~ msgstr "Tecla para seleccionar o 7º slot da barra de acceso rápido." - -#~ msgid "Key for selecting the sixth hotbar slot." -#~ msgstr "Tecla para seleccionar o 6º slot da barra de acceso rápido." - -#~ msgid "Key for selecting the tenth hotbar slot." -#~ msgstr "Tecla para seleccionar o 10º slot da barra de acceso rápido." - -#~ msgid "Key for selecting the third hotbar slot." -#~ msgstr "Tecla para seleccionar o 3º slot da barra de acceso rápido." - -#~ msgid "Key for switching between first- and third-person camera." -#~ msgstr "Tecla para cambiar entre a cámara en primeira e terceira persoa." - -#~ msgid "Key for taking screenshots." -#~ msgstr "Tecla para facer capturas de pantalla." - -#~ msgid "Key for toggling autoforward." -#~ msgstr "Tecla para alternar o autoforward." - -#~ msgid "Key for toggling cinematic mode." -#~ msgstr "Tecla para activar/desactivar o modo cinemático." - -#~ msgid "Key for toggling display of minimap." -#~ msgstr "Tecla para alternar a visualización do minimapa." - -#~ msgid "Key for toggling fast mode." -#~ msgstr "Tecla para alternar o modo rápido." - -#~ msgid "Key for toggling flying." -#~ msgstr "Tecla para alternar o voo." - -#~ msgid "Key for toggling fullscreen mode." -#~ msgstr "Tecla para activar/desactivar o modo de pantalla completa." - -#~ msgid "Key for toggling noclip mode." -#~ msgstr "Tecla para alternar o modo noclip." - -#~ msgid "Key for toggling pitch move mode." -#~ msgstr "Tecla para alternar o modo de movemento de inclinación." - -#~ msgid "Key for toggling the display of chat." -#~ msgstr "Tecla para alternar a visualización do chat." - -#~ msgid "Key for toggling the display of debug info." -#~ msgstr "Tecla para alternar a visualización da información de depuración." - -#~ msgid "Key for toggling the display of fog." -#~ msgstr "Tecla para alternar a visualización da néboa." - -#~ msgid "Key for toggling the display of the HUD." -#~ msgstr "Tecla para alternar a visualización do HUD." - -#~ msgid "Key for toggling the display of the large chat console." -#~ msgstr "Tecla para alternar a visualización da consola de chat grande." - -#~ msgid "Key to use view zoom when possible." -#~ msgstr "Tecla para usar o zoom da vista cando sexa posible." - -#~ msgid "Node specular" -#~ msgstr "Nodo especular" +#~ msgid "X Button 2" +#~ msgstr "X Botón 2" diff --git a/po/he/luanti.po b/po/he/luanti.po index 84b05c5e2..a78dd33ff 100644 --- a/po/he/luanti.po +++ b/po/he/luanti.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Hebrew (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-07-11 19:59+0200\n" +"POT-Creation-Date: 2025-09-23 19:19+0200\n" "PO-Revision-Date: 2025-06-21 13:01+0000\n" "Last-Translator: ShiloMazuz \n" "Language-Team: Hebrew \n" "Language-Team: Hindi \n" +"POT-Creation-Date: 2025-09-23 19:19+0200\n" +"PO-Revision-Date: 2025-08-06 12:02+0000\n" +"Last-Translator: Unacceptium \n" "Language-Team: Hungarian \n" "Language: hu\n" @@ -24,7 +24,7 @@ msgstr "Üres parancs." #: builtin/client/chatcommands.lua msgid "Exit to main menu" -msgstr "Kilépés a főmenübe" +msgstr "Kilép a főmenübe" #: builtin/client/chatcommands.lua msgid "Invalid command: " @@ -75,7 +75,7 @@ msgstr "" #: builtin/common/chatcommands.lua msgid "[all | ] [-t]" -msgstr "[all | ] [-t]" +msgstr "[all | ] [-t]" #: builtin/common/settings/components.lua msgid "Browse" @@ -607,9 +607,8 @@ msgid "Website" msgstr "Weboldal" #: builtin/mainmenu/content/dlg_package.lua -#, fuzzy msgid "by $1" -msgstr "$1 az $2-ből" +msgstr "$1 -ből" #: builtin/mainmenu/content/dlg_package.lua msgid "by $1 — $2 downloads — +$3 / $4 / -$5" @@ -1231,10 +1230,6 @@ msgstr "" msgid "New" msgstr "Új" -#: builtin/mainmenu/tab_local.lua -msgid "No world created or selected!" -msgstr "Nincs létrehozott vagy kiválasztott világ!" - #: builtin/mainmenu/tab_local.lua msgid "Play Game" msgstr "Játék indítása" @@ -1364,7 +1359,7 @@ msgstr "Kész!" #: src/client/client.cpp #, c-format msgid "Failed to save screenshot to \"%s\"" -msgstr "" +msgstr "A képernyőképet nem sikerült \"%s\"-be menteni" #: src/client/client.cpp msgid "Initializing nodes" @@ -1383,9 +1378,9 @@ msgid "Rebuilding shaders..." msgstr "Árnyalók újraépítése…" #: src/client/client.cpp -#, fuzzy, c-format +#, c-format msgid "Saved screenshot to \"%s\"" -msgstr "Képernyőképek" +msgstr "Képernyőképek elmentve ide: \"%s\"" #: src/client/clientlauncher.cpp msgid "Could not find or load game: " @@ -1771,7 +1766,7 @@ msgstr "" #: src/client/game_formspec.cpp msgid "Exit to Menu" -msgstr "Kilépés a főmenübe" +msgstr "Kilépés a Menübe" #: src/client/game_formspec.cpp msgid "Exit to OS" @@ -1842,10 +1837,6 @@ msgstr "Profiler elrejtése" msgid "Profiler shown (page %d of %d)" msgstr "Profiler megjelenítése (lap: %d1 ennyiből: %d2)" -#: src/client/keycode.cpp -msgid "Apps" -msgstr "Alkalmazások" - #: src/client/keycode.cpp msgid "Backspace" msgstr "Backspace" @@ -1876,44 +1867,19 @@ msgid "Down Arrow" msgstr "Lefelé nyíl" #: src/client/keycode.cpp -msgid "End" -msgstr "End" +#, fuzzy +msgid "End Key" +msgstr "Menü" #: src/client/keycode.cpp -msgid "Erase EOF" -msgstr "EOF törlése" +#, fuzzy +msgid "Help Key" +msgstr "Törlés(kulcs)" #: src/client/keycode.cpp -msgid "Execute" -msgstr "Végrehajtás" - -#: src/client/keycode.cpp -msgid "Help" -msgstr "Segítség" - -#: src/client/keycode.cpp -msgid "Home" -msgstr "Home" - -#: src/client/keycode.cpp -msgid "IME Accept" -msgstr "IME Elfogadás" - -#: src/client/keycode.cpp -msgid "IME Convert" -msgstr "IME átalakítás" - -#: src/client/keycode.cpp -msgid "IME Escape" -msgstr "IME Kilépés" - -#: 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" +#, fuzzy +msgid "Home Key" +msgstr "Nagyítási gomb" #: src/client/keycode.cpp msgid "Insert" @@ -1924,8 +1890,9 @@ msgid "Left Arrow" msgstr "Bal nyíl" #: src/client/keycode.cpp -msgid "Left Button" -msgstr "Bal gomb" +#, fuzzy +msgid "Left Click" +msgstr "Bal Control" #: src/client/keycode.cpp msgid "Left Control" @@ -1939,18 +1906,26 @@ msgstr "Bal menü" msgid "Left Shift" msgstr "Bal Shift" +#. ~ Name of key #: src/client/keycode.cpp msgid "Left Windows" msgstr "Bal Windows" -#. ~ Key name, common on Windows keyboards #: src/client/keycode.cpp msgid "Menu Key" msgstr "Menü" #: src/client/keycode.cpp -msgid "Middle Button" -msgstr "Középső gomb" +msgid "Middle Click" +msgstr "" + +#: src/client/keycode.cpp +msgid "Mouse X1" +msgstr "" + +#: src/client/keycode.cpp +msgid "Mouse X2" +msgstr "" #: src/client/keycode.cpp msgid "Num Lock" @@ -2016,10 +1991,6 @@ msgstr "Számbillentyűzet 8" msgid "Numpad 9" msgstr "Számbillentyűzet 9" -#: src/client/keycode.cpp -msgid "OEM Clear" -msgstr "OEM Tisztítás" - #: src/client/keycode.cpp msgid "Page Down" msgstr "Lapozás lefelé" @@ -2051,8 +2022,9 @@ msgid "Right Arrow" msgstr "Jobb nyíl" #: src/client/keycode.cpp -msgid "Right Button" -msgstr "Jobb gomb" +#, fuzzy +msgid "Right Click" +msgstr "Jobb Control" #: src/client/keycode.cpp msgid "Right Control" @@ -2066,6 +2038,7 @@ msgstr "Jobb menü" msgid "Right Shift" msgstr "Jobb Shift" +#. ~ Name of key #: src/client/keycode.cpp msgid "Right Windows" msgstr "Jobb Windows" @@ -2074,47 +2047,28 @@ msgstr "Jobb Windows" msgid "Scroll Lock" msgstr "Scroll Lock" -#. ~ Key name #: src/client/keycode.cpp -msgid "Select" -msgstr "Kiválasztás" +#, fuzzy +msgid "Select Key" +msgstr "Törlés(kulcs)" #: src/client/keycode.cpp msgid "Shift Key" msgstr "Shift" -#: src/client/keycode.cpp -msgid "Sleep" -msgstr "Alvás" - -#: src/client/keycode.cpp -msgid "Snapshot" -msgstr "Pillanatkép" - #: src/client/keycode.cpp msgid "Space" msgstr "Szóköz" #: src/client/keycode.cpp -msgid "Tab" -msgstr "Tabulátor" +#, fuzzy +msgid "Tab Key" +msgstr "Szüneteltetés" #: src/client/keycode.cpp msgid "Up Arrow" msgstr "Felfele nyíl" -#: src/client/keycode.cpp -msgid "X Button 1" -msgstr "X gomb 1" - -#: src/client/keycode.cpp -msgid "X Button 2" -msgstr "X Gomb 2" - -#: src/client/keycode.cpp -msgid "Zoom Key" -msgstr "Nagyítási gomb" - #: src/client/minimap.cpp msgid "Minimap hidden" msgstr "Kistérkép elrejtve" @@ -2544,15 +2498,15 @@ 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 pályadarabkánként." #: src/settings_translation_file.cpp +#, fuzzy msgid "" "3D support.\n" "Currently supported:\n" -"- none: no 3d output.\n" -"- anaglyph: cyan/magenta color 3d.\n" -"- interlaced: odd/even line based polarization screen support.\n" -"- topbottom: split screen top/bottom.\n" -"- sidebyside: split screen side by side.\n" -"- crossview: Cross-eyed 3d" +"- none: no 3D output\n" +"- anaglyph: cyan/magenta color 3D\n" +"- topbottom: split screen top/bottom\n" +"- sidebyside: split screen side-by-side\n" +"- crossview: cross-eyed 3D" msgstr "" "3D támogatás.\n" "Jelenleg támogatott:\n" @@ -2663,14 +2617,12 @@ msgid "Allows liquids to be translucent." msgstr "A folyadékok áttetszőségét teszi lehetővé." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Also used for climbing down and descending in water if aux1_descends is " "disabled." 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." +"Gomb a lopakodáshoz. 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." #: src/settings_translation_file.cpp msgid "" @@ -2929,6 +2881,17 @@ msgstr "Kamera stabilizálása" msgid "Camera smoothing in cinematic mode" msgstr "Lágy kameramozgás operatőr módban" +#: src/settings_translation_file.cpp +msgid "Capture Tracy zones" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Capture Tracy zones with the profiler's instrumentation.\n" +"You need to build with Tracy to use this, see doc/developing/profiling.md\n" +"for details." +msgstr "" + #: src/settings_translation_file.cpp msgid "Cave noise" msgstr "Barlang zaj" @@ -3433,13 +3396,14 @@ 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 -#, fuzzy msgid "" "Delay between mesh updates on the client in ms. Increasing this will slow\n" "down the rate of mesh updates, which can help reduce jitter." msgstr "" -"A világ 3D-modelljének frissítési időköze a klienseken. Ennek a megnövelése\n" -"ritkábbá teszi a frissítéseket, így csökkenti a lassú kliensek szaggatását." +"Az egyedi 3D modellek (Mesh-ek) frissítési időköze a klienseken. Ezen " +"értékkel megnövelheti az\n" +"egyedi 3D modellek frissítési időközét, amely csökkentheti a szaggatást " +"gyenge eszközökön." #: src/settings_translation_file.cpp msgid "Delay in sending blocks after building" @@ -3486,6 +3450,10 @@ msgstr "" msgid "Developer Options" msgstr "Fejlesztői beállítások" +#: src/settings_translation_file.cpp +msgid "Disable if you only want to instrument with Tracy." +msgstr "" + #: src/settings_translation_file.cpp msgid "Disallow empty passwords" msgstr "Üres jelszavak tiltása" @@ -4943,9 +4911,8 @@ msgstr "" "objektumfrissítés között),\n" "másodpercben megadva.\n" "Ez nem érvényes a kliens menüjéből indított munkamenetekre.\n" -"Ez egy alsó korlát, azaz a szerverlépések nem lehetnek ennél rövidebben, " -"viszont\n" -"gyakorta ennél hosszabbak." +"Ez egy alsó korlát. a szerverlépések nem lehetnek\n" +"rövidebbek, viszont gyakran hosszabbak." #: src/settings_translation_file.cpp msgid "Length of liquid waves." @@ -5319,7 +5286,7 @@ msgstr "Max. csomagszám lépésenként" #: src/settings_translation_file.cpp msgid "Maximum FPS" -msgstr "Maximum FPS" +msgstr "Maximum képkocka/másodperc" #: src/settings_translation_file.cpp msgid "Maximum FPS when the window is not focused." @@ -5482,6 +5449,11 @@ msgstr "" msgid "Maximum users" msgstr "Maximum felhasználók" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Measure time samples" +msgstr "Sivatag sablonok" + #: src/settings_translation_file.cpp msgid "Message of the day" msgstr "Napi üzenet" @@ -5547,6 +5519,8 @@ msgid "" "Modifier key bind for closing your world.\n" "Requires ESC + the selected key to work." msgstr "" +"Módosító billentyű a világod bezárásához.\n" +"Az ESC +a kiválasztott gomb szükséges a működéséhez." #: src/settings_translation_file.cpp msgid "Modifies the size of the HUD elements." @@ -5562,7 +5536,7 @@ msgstr "Monospace betűméret" #: src/settings_translation_file.cpp msgid "Monospace font size divisible by" -msgstr "Monospace betűméret osztható ezzel:" +msgstr "Monospace betűméret osztható ezzel" #: src/settings_translation_file.cpp msgid "Mountain height noise" @@ -5729,7 +5703,6 @@ msgid "Number of messages a player may send per 10 seconds." msgstr "Üzenetek száma amit egy játékos küldhet 10 másodpercenként." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Number of threads to use for mesh generation.\n" "Value of 0 (default) will let Luanti automatically choose the number of " @@ -6034,9 +6007,8 @@ msgstr "" "READ_PLAYERINFO: 32 (letiltja a get_player_names hívásokat kliensoldalon)" #: src/settings_translation_file.cpp -#, fuzzy msgid "Return to Main Menu" -msgstr "Kilépés a főmenübe" +msgstr "Kilép a Főmenübe" #: src/settings_translation_file.cpp msgid "Ridge mountain spread noise" @@ -7171,9 +7143,8 @@ msgid "Toggle fullscreen" msgstr "Teljes képernyő kapcsolása" #: src/settings_translation_file.cpp -#, fuzzy msgid "Toggle large chat console" -msgstr "Nagy csevegőkonzol" +msgstr "Váltás nagy csevegőkonzolra" #: src/settings_translation_file.cpp msgid "Toggle pitchmove" @@ -7184,9 +7155,8 @@ msgid "Toggle profiler" msgstr "Profilozó kapcsolása" #: src/settings_translation_file.cpp -#, fuzzy msgid "Toggle unlimited view range" -msgstr "Kulcs a korlátlan látótávolság váltásához." +msgstr "Végtelen látótávolság váltása" #: src/settings_translation_file.cpp msgid "" @@ -7681,11 +7651,8 @@ msgid "Width of the selection box lines around nodes." msgstr "A kijelölődoboz vonalainak szélessége a kockák körül." #: src/settings_translation_file.cpp -#, fuzzy msgid "Will also disable autoforward, when active." -msgstr "" -"A játékos visszafelé történő mozgatásának gombja.\n" -"Ha aktív, az automatikus előremenetelt is kikapcsolja." +msgstr "az automatikus előrehaladás funkciót is kikapcsolja, ha aktív." #: src/settings_translation_file.cpp msgid "Window maximized" @@ -7806,196 +7773,68 @@ msgstr "cURL interaktív időtúllépés" msgid "cURL parallel limit" msgstr "cURL párhuzamossági korlát" -#~ msgid "Apply specular shading to nodes." -#~ msgstr "Tükröződő árnyékolás alkalmazása a kockákon." +#~ msgid "Apps" +#~ msgstr "Alkalmazások" -#~ msgid "Key for decreasing the viewing range." -#~ msgstr "Billentyű a látótávolság csökkentéséhez." +#~ msgid "End" +#~ msgstr "End" -#~ msgid "Key for decreasing the volume." -#~ msgstr "A hangerő csökkentésének gombja." +#~ msgid "Erase EOF" +#~ msgstr "EOF törlése" -#~ msgid "Key for dropping the currently selected item." -#~ msgstr "Az aktuálisan kiválasztott tárgy eldobásának gombja." +#~ msgid "Execute" +#~ msgstr "Végrehajtás" -#~ msgid "Key for increasing the viewing range." -#~ msgstr "Billentyű a látótávolság növeléséhez." +#~ msgid "Help" +#~ msgstr "Segítség" -#~ msgid "Key for increasing the volume." -#~ msgstr "Billentyű a hangerő növeléséhez." +#~ msgid "Home" +#~ msgstr "Home" -#~ msgid "Key for jumping." -#~ msgstr "Billentyű az ugráshoz." +#~ msgid "IME Accept" +#~ msgstr "IME Elfogadás" -#~ msgid "Key for moving the player forward." -#~ msgstr "Billentyű a játékos előrehaladásához." +#~ msgid "IME Convert" +#~ msgstr "IME átalakítás" -#~ msgid "Key for moving the player left." -#~ msgstr "A játékos balra mozgatásának billentyűje." +#~ msgid "IME Escape" +#~ msgstr "IME Kilépés" -#~ msgid "Key for moving the player right." -#~ msgstr "A játékos jobbra mozgatásának billentyűje." +#~ msgid "IME Mode Change" +#~ msgstr "IME módváltás" -#~ msgid "Key for muting the game." -#~ msgstr "A játék elnémításának gombja." +#~ msgid "IME Nonconvert" +#~ msgstr "IME nem átalakított" -#~ msgid "Key for opening the chat window." -#~ msgstr "A csevegőablak megnyitásához szükséges billentyű." +#~ msgid "Left Button" +#~ msgstr "Bal gomb" -#~ msgid "Key for opening the inventory." -#~ msgstr "Billentyű a leltár megnyitásához." +#~ msgid "Middle Button" +#~ msgstr "Középső gomb" -#~ msgid "Key for selecting the 11th hotbar slot." -#~ msgstr "Billentyű a gyors elérési sáv 11. helyének kiválasztásához." +#~ msgid "No world created or selected!" +#~ msgstr "Nincs létrehozott vagy kiválasztott világ!" -#~ msgid "Key for selecting the 12th hotbar slot." -#~ msgstr "Billentyű a gyors elérési sáv 12. helyének kiválasztásához." +#~ msgid "OEM Clear" +#~ msgstr "OEM Tisztítás" -#~ msgid "Key for selecting the 13th hotbar slot." -#~ msgstr "Billentyű a gyors elérési sáv 13. helyének kiválasztásához." +#~ msgid "Right Button" +#~ msgstr "Jobb gomb" -#~ msgid "Key for selecting the 14th hotbar slot." -#~ msgstr "Billentyű a gyors elérési sáv 14. helyének kiválasztásához." +#~ msgid "Select" +#~ msgstr "Kiválasztás" -#~ msgid "Key for selecting the 15th hotbar slot." -#~ msgstr "Billentyű a gyors elérési sáv 15. helyének kiválasztásához." +#~ msgid "Sleep" +#~ msgstr "Alvás" -#~ msgid "Key for selecting the 16th hotbar slot." -#~ msgstr "Billentyű a gyors elérési sáv 16. helyének kiválasztásához." +#~ msgid "Snapshot" +#~ msgstr "Pillanatkép" -#~ msgid "Key for selecting the 17th hotbar slot." -#~ msgstr "Billentyű a gyors elérési sáv 17. helyének kiválasztásához." +#~ msgid "Tab" +#~ msgstr "Tabulátor" -#~ msgid "Key for selecting the 18th hotbar slot." -#~ msgstr "Billentyű a gyors elérési sáv 18. helyének kiválasztásához." +#~ msgid "X Button 1" +#~ msgstr "X gomb 1" -#~ msgid "Key for selecting the 19th hotbar slot." -#~ msgstr "Billentyű a gyors elérési sáv 19. helyének kiválasztásához." - -#~ msgid "Key for selecting the 20th hotbar slot." -#~ msgstr "Billentyű a gyors elérési sáv 20. helyének kiválasztásához." - -#~ msgid "Key for selecting the 21st hotbar slot." -#~ msgstr "Billentyű a gyors elérési sáv 21. helyének kiválasztásához." - -#~ msgid "Key for selecting the 22nd hotbar slot." -#~ msgstr "Billentyű a gyors elérési sáv 22. helyének kiválasztásához." - -#~ msgid "Key for selecting the 23rd hotbar slot." -#~ msgstr "Billentyű a gyors elérési sáv 23. helyének kiválasztásához." - -#~ msgid "Key for selecting the 24th hotbar slot." -#~ msgstr "Billentyű a gyors elérési sáv 24. helyének kiválasztásához." - -#~ msgid "Key for selecting the 25th hotbar slot." -#~ msgstr "Billentyű a gyors elérési sáv 25. helyének kiválasztásához." - -#~ msgid "Key for selecting the 26th hotbar slot." -#~ msgstr "Billentyű a gyors elérési sáv 26. helyének kiválasztásához." - -#~ msgid "Key for selecting the 27th hotbar slot." -#~ msgstr "Billentyű a gyors elérési sáv 27. helyének kiválasztásához." - -#~ msgid "Key for selecting the 28th hotbar slot." -#~ msgstr "Billentyű a gyors elérési sáv 28. helyének kiválasztásához." - -#~ msgid "Key for selecting the 29th hotbar slot." -#~ msgstr "Billentyű a gyors elérési sáv 29. helyének kiválasztásához." - -#~ msgid "Key for selecting the 30th hotbar slot." -#~ msgstr "Billentyű a gyors elérési sáv 30. helyének kiválasztásához." - -#~ msgid "Key for selecting the 31st hotbar slot." -#~ msgstr "Billentyű a gyors elérési sáv 31. helyének kiválasztásához." - -#~ msgid "Key for selecting the 32nd hotbar slot." -#~ msgstr "Billentyű a gyors elérési sáv 32. helyének kiválasztásához." - -#~ msgid "Key for selecting the eighth hotbar slot." -#~ msgstr "Billentyű a gyors elérési sáv nyolcas helyének kiválasztásához." - -#~ msgid "Key for selecting the fifth hotbar slot." -#~ msgstr "Billentyű a gyors elérési sáv ötös helyének kiválasztásához." - -#~ msgid "Key for selecting the first hotbar slot." -#~ msgstr "Billentyű a gyors elérési sáv első helyének kiválasztásához." - -#~ msgid "Key for selecting the fourth hotbar slot." -#~ msgstr "Billentyű a gyors elérési sáv négyes helyének kiválasztásához." - -#~ msgid "Key for selecting the next item in the hotbar." -#~ msgstr "Billentyű a gyors elérési sáv következő helyének kiválasztásához." - -#~ msgid "Key for selecting the ninth hotbar slot." -#~ msgstr "Billentyű a gyors elérési sáv kilences helyének kiválasztásához." - -#~ msgid "Key for selecting the previous item in the hotbar." -#~ msgstr "Billentyű a gyors elérési sáv előző helyének kiválasztásához." - -#~ msgid "Key for selecting the second hotbar slot." -#~ msgstr "Billentyű a gyors elérési sáv kettes helyének kiválasztásához." - -#~ msgid "Key for selecting the seventh hotbar slot." -#~ msgstr "Billentyű a gyors elérési sáv hetes helyének kiválasztásához." - -#~ msgid "Key for selecting the sixth hotbar slot." -#~ msgstr "Billentyű a gyors elérési sáv hatos helyének kiválasztásához." - -#~ msgid "Key for selecting the tenth hotbar slot." -#~ msgstr "Billentyű a gyors elérési sáv tízes helyének kiválasztásához." - -#~ msgid "Key for selecting the third hotbar slot." -#~ msgstr "Billentyű a gyors elérési sáv hármas helyének kiválasztásához." - -#~ msgid "Key for switching between first- and third-person camera." -#~ msgstr "Billentyű az belső és külső nézetű kamera közötti váltáshoz." - -#~ msgid "Key for taking screenshots." -#~ msgstr "Billentyű a képernyőképek készítéséhez." - -#~ msgid "Key for toggling autoforward." -#~ msgstr "Billentyű az automatikus előrehaladás kapcsolásához." - -#~ msgid "Key for toggling cinematic mode." -#~ msgstr "A filmes üzemmód váltásának gombja." - -#~ msgid "Key for toggling display of minimap." -#~ msgstr "Billentyű a minitérkép megjelenítésének kapcsolásához ." - -#~ msgid "Key for toggling fast mode." -#~ msgstr "A gyors üzemmód váltásának gombja." - -#~ msgid "Key for toggling flying." -#~ msgstr "Gomb a repülés váltásához." - -#~ msgid "Key for toggling fullscreen mode." -#~ msgstr "Billentyű a teljes képernyős mód váltásához." - -#~ msgid "Key for toggling noclip mode." -#~ msgstr "A noclip üzemmód váltásának gombja." - -#~ msgid "Key for toggling pitch move mode." -#~ msgstr "Billentyű a pitch move üzemmód váltásához." - -#~ msgid "Key for toggling the display of chat." -#~ msgstr "A csevegés megjelenítésének váltására szolgáló billentyű." - -#~ msgid "Key for toggling the display of debug info." -#~ msgstr "" -#~ "A hibakeresési információk megjelenítésének váltására szolgáló billentyű." - -#~ msgid "Key for toggling the display of fog." -#~ msgstr "A köd megjelenítésének váltására szolgáló billentyű." - -#~ msgid "Key for toggling the display of the HUD." -#~ msgstr "A HUD megjelenítésének váltására szolgáló billentyű." - -#~ msgid "Key for toggling the display of the large chat console." -#~ msgstr "" -#~ "A nagy csevegő konzol megjelenítésének váltására szolgáló billentyű." - -#~ msgid "Key to use view zoom when possible." -#~ msgstr "Billentyű a nézet nagyítás használatához, ha lehetséges." - -#~ msgid "Node specular" -#~ msgstr "Kocka tükröződése" +#~ msgid "X Button 2" +#~ msgstr "X Gomb 2" diff --git a/po/hy/luanti.po b/po/hy/luanti.po new file mode 100644 index 000000000..6197198aa --- /dev/null +++ b/po/hy/luanti.po @@ -0,0 +1,6762 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the luanti package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: luanti\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-09-23 19:19+0200\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: Automatically generated\n" +"Language-Team: none\n" +"Language: hy\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" + +#: 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/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 (-t: output in chat)" +msgstr "" + +#: builtin/common/chatcommands.lua +msgid "" +"Use '.help ' to get more information, or '.help all' to list everything." +msgstr "" + +#: builtin/common/chatcommands.lua +msgid "[all | ] [-t]" +msgstr "" + +#: builtin/common/settings/components.lua +msgid "Browse" +msgstr "" + +#: builtin/common/settings/components.lua +msgid "Conflicts with \"$1\"" +msgstr "" + +#: builtin/common/settings/components.lua +msgid "Edit" +msgstr "" + +#: builtin/common/settings/components.lua +msgid "Remove keybinding" +msgstr "" + +#: builtin/common/settings/components.lua +msgid "Select directory" +msgstr "" + +#: builtin/common/settings/components.lua +msgid "Select file" +msgstr "" + +#: builtin/common/settings/components.lua +msgid "Set" +msgstr "" + +#: builtin/common/settings/dlg_change_mapgen_flags.lua +msgid "(No description of setting given)" +msgstr "" + +#: builtin/common/settings/dlg_change_mapgen_flags.lua +msgid "2D Noise" +msgstr "" + +#: builtin/common/settings/dlg_change_mapgen_flags.lua +#: builtin/mainmenu/content/dlg_install.lua +#: builtin/mainmenu/content/dlg_overwrite.lua +#: builtin/mainmenu/dlg_config_world.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 src/gui/guiOpenURL.cpp +#: src/gui/guiPasswordChange.cpp +msgid "Cancel" +msgstr "" + +#: builtin/common/settings/dlg_change_mapgen_flags.lua +msgid "Lacunarity" +msgstr "" + +#: builtin/common/settings/dlg_change_mapgen_flags.lua +msgid "Octaves" +msgstr "" + +#: builtin/common/settings/dlg_change_mapgen_flags.lua +#: src/settings_translation_file.cpp +msgid "Offset" +msgstr "" + +#: builtin/common/settings/dlg_change_mapgen_flags.lua +msgid "Persistence" +msgstr "" + +#: builtin/common/settings/dlg_change_mapgen_flags.lua +#: builtin/mainmenu/dlg_config_world.lua +msgid "Save" +msgstr "" + +#: builtin/common/settings/dlg_change_mapgen_flags.lua +#: src/settings_translation_file.cpp +msgid "Scale" +msgstr "" + +#: builtin/common/settings/dlg_change_mapgen_flags.lua +#: builtin/mainmenu/dlg_create_world.lua +msgid "Seed" +msgstr "" + +#: builtin/common/settings/dlg_change_mapgen_flags.lua +msgid "X spread" +msgstr "" + +#: builtin/common/settings/dlg_change_mapgen_flags.lua +msgid "Y spread" +msgstr "" + +#: builtin/common/settings/dlg_change_mapgen_flags.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 +#. the settings menu. +#: builtin/common/settings/dlg_change_mapgen_flags.lua +msgid "absvalue" +msgstr "" + +#. ~ "defaults" is a noise parameter flag. +#. It describes the default processing options +#. for noise settings in the settings menu. +#: builtin/common/settings/dlg_change_mapgen_flags.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 +#. the settings menu. +#: builtin/common/settings/dlg_change_mapgen_flags.lua +msgid "eased" +msgstr "" + +#: builtin/common/settings/dlg_settings.lua +msgid "(The game will need to enable automatic exposure as well)" +msgstr "" + +#: builtin/common/settings/dlg_settings.lua +msgid "(The game will need to enable bloom as well)" +msgstr "" + +#: builtin/common/settings/dlg_settings.lua +msgid "(The game will need to enable volumetric lighting as well)" +msgstr "" + +#: builtin/common/settings/dlg_settings.lua +msgid "(Use system language)" +msgstr "" + +#: builtin/common/settings/dlg_settings.lua +msgid "Accessibility" +msgstr "" + +#: builtin/common/settings/dlg_settings.lua +msgid "Auto" +msgstr "" + +#: builtin/common/settings/dlg_settings.lua +#: builtin/mainmenu/content/dlg_contentdb.lua +#: builtin/mainmenu/content/dlg_package.lua src/gui/guiVolumeChange.cpp +msgid "Back" +msgstr "" + +#: builtin/common/settings/dlg_settings.lua +msgid "Buttons with crosshair" +msgstr "" + +#: builtin/common/settings/dlg_settings.lua src/gui/touchscreenlayout.cpp +#: src/settings_translation_file.cpp +msgid "Chat" +msgstr "" + +#: builtin/common/settings/dlg_settings.lua builtin/mainmenu/tab_online.lua +msgid "Clear" +msgstr "" + +#: builtin/common/settings/dlg_settings.lua src/settings_translation_file.cpp +msgid "Controls" +msgstr "" + +#: builtin/common/settings/dlg_settings.lua +#: builtin/common/settings/shadows_component.lua +msgid "Disabled" +msgstr "" + +#: builtin/common/settings/dlg_settings.lua +msgid "Enabled" +msgstr "" + +#: builtin/common/settings/dlg_settings.lua src/settings_translation_file.cpp +msgid "General" +msgstr "" + +#: builtin/common/settings/dlg_settings.lua +msgid "Long tap" +msgstr "" + +#: builtin/common/settings/dlg_settings.lua +msgid "Movement" +msgstr "" + +#: builtin/common/settings/dlg_settings.lua +#: builtin/mainmenu/content/dlg_contentdb.lua +msgid "No results" +msgstr "" + +#: builtin/common/settings/dlg_settings.lua +msgid "Reset setting to default" +msgstr "" + +#: builtin/common/settings/dlg_settings.lua +msgid "Reset setting to default ($1)" +msgstr "" + +#: builtin/common/settings/dlg_settings.lua builtin/mainmenu/tab_online.lua +msgid "Search" +msgstr "" + +#: builtin/common/settings/dlg_settings.lua +msgid "Short tap" +msgstr "" + +#: builtin/common/settings/dlg_settings.lua +msgid "Show advanced settings" +msgstr "" + +#: builtin/common/settings/dlg_settings.lua +msgid "Show technical names" +msgstr "" + +#: builtin/common/settings/dlg_settings.lua +msgid "Tap" +msgstr "" + +#: builtin/common/settings/dlg_settings.lua +msgid "Tap with crosshair" +msgstr "" + +#: builtin/common/settings/dlg_settings.lua +msgid "Touchscreen layout" +msgstr "" + +#: builtin/common/settings/settingtypes.lua +msgid "Client Mods" +msgstr "" + +#: builtin/common/settings/settingtypes.lua +msgid "Content: Games" +msgstr "" + +#: builtin/common/settings/settingtypes.lua +msgid "Content: Mods" +msgstr "" + +#: builtin/common/settings/shadows_component.lua +msgid "(The game will need to enable shadows as well)" +msgstr "" + +#: builtin/common/settings/shadows_component.lua +msgid "Custom" +msgstr "" + +#: builtin/common/settings/shadows_component.lua +#: src/settings_translation_file.cpp +msgid "Dynamic shadows" +msgstr "" + +#: builtin/common/settings/shadows_component.lua +msgid "High" +msgstr "" + +#: builtin/common/settings/shadows_component.lua +msgid "Low" +msgstr "" + +#: builtin/common/settings/shadows_component.lua +msgid "Medium" +msgstr "" + +#: builtin/common/settings/shadows_component.lua +msgid "Very High" +msgstr "" + +#: builtin/common/settings/shadows_component.lua +msgid "Very Low" +msgstr "" + +#: builtin/fstk/ui.lua +msgid "" +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 "OK" +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 "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 "We only support protocol version $1." +msgstr "" + +#: builtin/mainmenu/common.lua +msgid "We support protocol versions between version $1 and $2." +msgstr "" + +#: builtin/mainmenu/content/contentdb.lua +msgid "Error installing \"$1\": $2" +msgstr "" + +#: builtin/mainmenu/content/contentdb.lua +msgid "Failed to download \"$1\"" +msgstr "" + +#: builtin/mainmenu/content/contentdb.lua +msgid "Failed to download $1" +msgstr "" + +#: builtin/mainmenu/content/contentdb.lua +msgid "" +"Failed to extract \"$1\" (insufficient disk space, unsupported file type or " +"broken archive)" +msgstr "" + +#: builtin/mainmenu/content/dlg_contentdb.lua +msgid "" +"$1 downloading,\n" +"$2 queued" +msgstr "" + +#: builtin/mainmenu/content/dlg_contentdb.lua +msgid "$1 downloading..." +msgstr "" + +#: builtin/mainmenu/content/dlg_contentdb.lua +msgid "All" +msgstr "" + +#: builtin/mainmenu/content/dlg_contentdb.lua +msgid "ContentDB is not available when Luanti was compiled without cURL" +msgstr "" + +#: builtin/mainmenu/content/dlg_contentdb.lua +msgid "Downloading..." +msgstr "" + +#: builtin/mainmenu/content/dlg_contentdb.lua +msgid "Featured" +msgstr "" + +#: builtin/mainmenu/content/dlg_contentdb.lua +msgid "Games" +msgstr "" + +#: builtin/mainmenu/content/dlg_contentdb.lua +#: builtin/mainmenu/content/dlg_install.lua +#: builtin/mainmenu/content/dlg_package.lua builtin/mainmenu/serverlistmgr.lua +#: src/client/game.cpp +msgid "Loading..." +msgstr "" + +#: builtin/mainmenu/content/dlg_contentdb.lua +msgid "Mods" +msgstr "" + +#: builtin/mainmenu/content/dlg_contentdb.lua +msgid "No packages could be retrieved" +msgstr "" + +#: builtin/mainmenu/content/dlg_contentdb.lua +msgid "No updates" +msgstr "" + +#: builtin/mainmenu/content/dlg_contentdb.lua +msgid "Queued" +msgstr "" + +#: builtin/mainmenu/content/dlg_contentdb.lua +msgid "Texture Packs" +msgstr "" + +#: builtin/mainmenu/content/dlg_contentdb.lua +msgid "The package $1 was not found." +msgstr "" + +#: builtin/mainmenu/content/dlg_contentdb.lua +msgid "Update All [$1]" +msgstr "" + +#: builtin/mainmenu/content/dlg_install.lua +msgid "$1 and $2 dependencies will be installed." +msgstr "" + +#: builtin/mainmenu/content/dlg_install.lua +msgid "$1 by $2" +msgstr "" + +#: builtin/mainmenu/content/dlg_install.lua +msgid "$1 required dependencies could not be found." +msgstr "" + +#: builtin/mainmenu/content/dlg_install.lua +msgid "$1 will be installed, and $2 dependencies will be skipped." +msgstr "" + +#: builtin/mainmenu/content/dlg_install.lua +msgid "Already installed" +msgstr "" + +#: builtin/mainmenu/content/dlg_install.lua +msgid "Base Game:" +msgstr "" + +#: builtin/mainmenu/content/dlg_install.lua +#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/tab_content.lua +msgid "Dependencies:" +msgstr "" + +#: builtin/mainmenu/content/dlg_install.lua +msgid "Error getting dependencies for package $1" +msgstr "" + +#: builtin/mainmenu/content/dlg_install.lua +#: builtin/mainmenu/content/dlg_package.lua +msgid "Install" +msgstr "" + +#: builtin/mainmenu/content/dlg_install.lua +msgid "Install $1" +msgstr "" + +#: builtin/mainmenu/content/dlg_install.lua +msgid "Install missing dependencies" +msgstr "" + +#: builtin/mainmenu/content/dlg_install.lua +msgid "Not found" +msgstr "" + +#: builtin/mainmenu/content/dlg_install.lua +msgid "Please check that the base game is correct." +msgstr "" + +#: builtin/mainmenu/content/dlg_install.lua +msgid "You need to install a game before you can install a mod" +msgstr "" + +#: builtin/mainmenu/content/dlg_overwrite.lua +msgid "\"$1\" already exists. Would you like to overwrite it?" +msgstr "" + +#: builtin/mainmenu/content/dlg_overwrite.lua +msgid "Overwrite" +msgstr "" + +#: builtin/mainmenu/content/dlg_package.lua +msgid "ContentDB page" +msgstr "" + +#: builtin/mainmenu/content/dlg_package.lua +msgid "Description" +msgstr "" + +#: builtin/mainmenu/content/dlg_package.lua +msgid "Donate" +msgstr "" + +#: builtin/mainmenu/content/dlg_package.lua +msgid "Error loading package information" +msgstr "" + +#: builtin/mainmenu/content/dlg_package.lua +msgid "Error loading reviews" +msgstr "" + +#: builtin/mainmenu/content/dlg_package.lua +msgid "Forum Topic" +msgstr "" + +#: builtin/mainmenu/content/dlg_package.lua +msgid "Information" +msgstr "" + +#: builtin/mainmenu/content/dlg_package.lua +msgid "Install [$1]" +msgstr "" + +#: builtin/mainmenu/content/dlg_package.lua +msgid "Issue Tracker" +msgstr "" + +#: builtin/mainmenu/content/dlg_package.lua +msgid "Reviews" +msgstr "" + +#: builtin/mainmenu/content/dlg_package.lua +msgid "Source" +msgstr "" + +#: builtin/mainmenu/content/dlg_package.lua +msgid "Translate" +msgstr "" + +#: builtin/mainmenu/content/dlg_package.lua builtin/mainmenu/tab_content.lua +msgid "Uninstall" +msgstr "" + +#: builtin/mainmenu/content/dlg_package.lua builtin/mainmenu/tab_content.lua +msgid "Update" +msgstr "" + +#: builtin/mainmenu/content/dlg_package.lua +msgid "Website" +msgstr "" + +#: builtin/mainmenu/content/dlg_package.lua +msgid "by $1" +msgstr "" + +#: builtin/mainmenu/content/dlg_package.lua +msgid "by $1 — $2 downloads — +$3 / $4 / -$5" +msgstr "" + +#: builtin/mainmenu/content/pkgmgr.lua +msgid "$1 (Enabled)" +msgstr "" + +#: builtin/mainmenu/content/pkgmgr.lua +msgid "$1 mods" +msgstr "" + +#: builtin/mainmenu/content/pkgmgr.lua +msgid "Failed to install $1 to $2" +msgstr "" + +#: builtin/mainmenu/content/pkgmgr.lua +msgid "Install: Unable to find suitable folder name for $1" +msgstr "" + +#: builtin/mainmenu/content/pkgmgr.lua +msgid "Unable to find a valid mod, modpack, or game" +msgstr "" + +#: builtin/mainmenu/content/pkgmgr.lua +msgid "Unable to install a $1 as a $2" +msgstr "" + +#: builtin/mainmenu/content/pkgmgr.lua +msgid "Unable to install a $1 as a texture pack" +msgstr "" + +#: builtin/mainmenu/dlg_clients_list.lua +msgid "" +"Players connected to\n" +"$1" +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 +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 +msgid "World:" +msgstr "" + +#: builtin/mainmenu/dlg_config_world.lua +msgid "enabled" +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 "Desert temples" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Development Test is meant for developers." +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "" +"Different dungeon variant generated in desert biomes (only if dungeons " +"enabled)" +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 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 +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_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 +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_rebind_keys.lua +msgid "As a result, your keybindings may have been changed." +msgstr "" + +#: builtin/mainmenu/dlg_rebind_keys.lua +msgid "Check out the key settings or refer to the documentation:" +msgstr "" + +#: builtin/mainmenu/dlg_rebind_keys.lua +msgid "Close" +msgstr "" + +#: builtin/mainmenu/dlg_rebind_keys.lua +msgid "Keybindings changed" +msgstr "" + +#: builtin/mainmenu/dlg_rebind_keys.lua +msgid "Open settings" +msgstr "" + +#: builtin/mainmenu/dlg_rebind_keys.lua +msgid "The input handling system was reworked in Luanti 5.12.0." +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_reinstall_mtg.lua +msgid "Dismiss" +msgstr "" + +#: builtin/mainmenu/dlg_reinstall_mtg.lua +msgid "" +"For a long time, Luanti shipped with a default game called \"Minetest " +"Game\". Since version 5.8.0, Luanti ships without a default game." +msgstr "" + +#: builtin/mainmenu/dlg_reinstall_mtg.lua +msgid "" +"If you want to continue playing in your Minetest Game worlds, you need to " +"reinstall Minetest Game." +msgstr "" + +#: builtin/mainmenu/dlg_reinstall_mtg.lua +msgid "Minetest Game is no longer installed by default" +msgstr "" + +#: builtin/mainmenu/dlg_reinstall_mtg.lua +msgid "Reinstall Minetest Game" +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_server_list_mods.lua +msgid "Expand all" +msgstr "" + +#: builtin/mainmenu/dlg_server_list_mods.lua +msgid "Group by prefix" +msgstr "" + +#: builtin/mainmenu/dlg_server_list_mods.lua +msgid "The $1 server uses a game called $2 and the following mods:" +msgstr "" + +#: builtin/mainmenu/dlg_server_list_mods.lua +msgid "The $1 server uses the following mods:" +msgstr "" + +#: builtin/mainmenu/dlg_version_info.lua +msgid "A new $1 version is available" +msgstr "" + +#: builtin/mainmenu/dlg_version_info.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/dlg_version_info.lua +msgid "Later" +msgstr "" + +#: builtin/mainmenu/dlg_version_info.lua +msgid "Never" +msgstr "" + +#: builtin/mainmenu/dlg_version_info.lua +msgid "Visit website" +msgstr "" + +#: builtin/mainmenu/init.lua src/client/game_formspec.cpp +msgid "Settings" +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 "Core Team" +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 "Browse online content [$1]" +msgstr "" + +#: builtin/mainmenu/tab_content.lua +msgid "Content" +msgstr "" + +#: builtin/mainmenu/tab_content.lua +msgid "Content [$1]" +msgstr "" + +#: builtin/mainmenu/tab_content.lua +msgid "Disable Texture Pack" +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 "Update available?" +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 a game" +msgstr "" + +#: builtin/mainmenu/tab_local.lua +msgid "Install games from ContentDB" +msgstr "" + +#: builtin/mainmenu/tab_local.lua +msgid "Luanti doesn't come with a game by default." +msgstr "" + +#: builtin/mainmenu/tab_local.lua +msgid "" +"Luanti is a game-creation platform that allows you to play many different " +"games." +msgstr "" + +#: builtin/mainmenu/tab_local.lua +msgid "New" +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_local.lua +msgid "You need to install a game before you can create a world." +msgstr "" + +#: builtin/mainmenu/tab_online.lua +msgid "Add favorite" +msgstr "" + +#: builtin/mainmenu/tab_online.lua +msgid "Address" +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 "Game: $1" +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 "Number of mods: $1" +msgstr "" + +#: builtin/mainmenu/tab_online.lua +msgid "Open server website" +msgstr "" + +#: builtin/mainmenu/tab_online.lua +msgid "Ping" +msgstr "" + +#: builtin/mainmenu/tab_online.lua +msgid "" +"Players:\n" +"$1" +msgstr "" + +#: builtin/mainmenu/tab_online.lua +msgid "" +"Possible filters\n" +"game:\n" +"mod:\n" +"player:" +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 "" + +#: 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 +#, c-format +msgid "Failed to save screenshot to \"%s\"" +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/client.cpp +#, c-format +msgid "Saved screenshot to \"%s\"" +msgstr "" + +#: src/client/clientlauncher.cpp +msgid "Could not find or load game: " +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/clientmedia.cpp src/client/game.cpp +msgid "Media..." +msgstr "" + +#: src/client/game.cpp src/client/shader.cpp src/server.cpp +msgid "" +"\n" +"Check debug.txt for details." +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 "All debug info hidden" +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 current block" +msgstr "" + +#: src/client/game.cpp +msgid "Block bounds shown for nearby blocks" +msgstr "" + +#: src/client/game.cpp +msgid "Bounding boxes shown" +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 game or mod)" +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 error (timed out?)" +msgstr "" + +#: src/client/game.cpp +msgid "Connection failed for unknown reason" +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 shown" +msgstr "" + +#: src/client/game.cpp +#, c-format +msgid "Error creating client: %s" +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 "Fog enabled by game or mod" +msgstr "" + +#: src/client/game.cpp +msgid "Item definitions..." +msgstr "" + +#: src/client/game.cpp +msgid "KiB/s" +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 "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 "Resolving address..." +msgstr "" + +#: src/client/game.cpp +msgid "Shutting down..." +msgstr "" + +#: src/client/game.cpp src/client/game_formspec.cpp +msgid "Singleplayer" +msgstr "" + +#: src/client/game.cpp +msgid "Sound muted" +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 +msgid "Unlimited viewing range disabled" +msgstr "" + +#: src/client/game.cpp +msgid "Unlimited viewing range enabled" +msgstr "" + +#: src/client/game.cpp +msgid "Unlimited viewing range enabled, but forbidden by game or mod" +msgstr "" + +#: src/client/game.cpp +#, c-format +msgid "Viewing changed to %d (the minimum)" +msgstr "" + +#: src/client/game.cpp +#, c-format +msgid "Viewing changed to %d (the minimum), but limited to %d by game or mod" +msgstr "" + +#: src/client/game.cpp +#, c-format +msgid "Viewing range changed to %d" +msgstr "" + +#: src/client/game.cpp +#, c-format +msgid "Viewing range changed to %d (the maximum)" +msgstr "" + +#: src/client/game.cpp +#, c-format +msgid "" +"Viewing range changed to %d (the maximum), but limited to %d by game or mod" +msgstr "" + +#: src/client/game.cpp +#, c-format +msgid "Viewing range changed to %d, but limited to %d by game or mod" +msgstr "" + +#: src/client/game.cpp +#, c-format +msgid "Volume changed to %d%%" +msgstr "" + +#: src/client/game.cpp +msgid "Wireframe not supported by video driver" +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_formspec.cpp +msgid "- Mode: " +msgstr "" + +#: src/client/game_formspec.cpp +msgid "- Public: " +msgstr "" + +#. ~ PvP = Player versus Player +#: src/client/game_formspec.cpp +msgid "- PvP: " +msgstr "" + +#: src/client/game_formspec.cpp +msgid "- Server Name: " +msgstr "" + +#: src/client/game_formspec.cpp +msgid "Change Password" +msgstr "" + +#: src/client/game_formspec.cpp +msgid "Continue" +msgstr "" + +#: src/client/game_formspec.cpp +msgid "" +"Controls:\n" +"No menu open:\n" +"- slide finger: look around\n" +"- tap: place/punch/use (default)\n" +"- long tap: dig/use (default)\n" +"Menu/inventory open:\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_formspec.cpp +msgid "Exit to Menu" +msgstr "" + +#: src/client/game_formspec.cpp +msgid "Exit to OS" +msgstr "" + +#: src/client/game_formspec.cpp +msgid "Game info:" +msgstr "" + +#: src/client/game_formspec.cpp +msgid "Game paused" +msgstr "" + +#: src/client/game_formspec.cpp +msgid "Hosting server" +msgstr "" + +#: src/client/game_formspec.cpp +msgid "Off" +msgstr "" + +#: src/client/game_formspec.cpp +msgid "On" +msgstr "" + +#: src/client/game_formspec.cpp +msgid "Remote server" +msgstr "" + +#: src/client/game_formspec.cpp +msgid "Respawn" +msgstr "" + +#: src/client/game_formspec.cpp +msgid "Sound Volume" +msgstr "" + +#: src/client/game_formspec.cpp +msgid "You died" +msgstr "" + +#: src/client/gameui.cpp +msgid "Chat currently disabled by game or mod" +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 "Backspace" +msgstr "" + +#. ~ Usually paired with the Pause key +#: src/client/keycode.cpp +msgid "Break Key" +msgstr "" + +#: src/client/keycode.cpp +msgid "Caps Lock" +msgstr "" + +#: src/client/keycode.cpp +msgid "Clear Key" +msgstr "" + +#: src/client/keycode.cpp +msgid "Control Key" +msgstr "" + +#: src/client/keycode.cpp +msgid "Delete Key" +msgstr "" + +#: src/client/keycode.cpp +msgid "Down Arrow" +msgstr "" + +#: src/client/keycode.cpp +msgid "End Key" +msgstr "" + +#: src/client/keycode.cpp +msgid "Help Key" +msgstr "" + +#: src/client/keycode.cpp +msgid "Home Key" +msgstr "" + +#: src/client/keycode.cpp +msgid "Insert" +msgstr "" + +#: src/client/keycode.cpp +msgid "Left Arrow" +msgstr "" + +#: src/client/keycode.cpp +msgid "Left Click" +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 "" + +#. ~ Name of key +#: src/client/keycode.cpp +msgid "Left Windows" +msgstr "" + +#: src/client/keycode.cpp +msgid "Menu Key" +msgstr "" + +#: src/client/keycode.cpp +msgid "Middle Click" +msgstr "" + +#: src/client/keycode.cpp +msgid "Mouse X1" +msgstr "" + +#: src/client/keycode.cpp +msgid "Mouse X2" +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 "Page Down" +msgstr "" + +#: src/client/keycode.cpp +msgid "Page Up" +msgstr "" + +#. ~ Usually paired with the Break key +#: src/client/keycode.cpp +msgid "Pause Key" +msgstr "" + +#: src/client/keycode.cpp +msgid "Play" +msgstr "" + +#. ~ "Print screen" key +#: src/client/keycode.cpp +msgid "Print" +msgstr "" + +#: src/client/keycode.cpp +msgid "Return Key" +msgstr "" + +#: src/client/keycode.cpp +msgid "Right Arrow" +msgstr "" + +#: src/client/keycode.cpp +msgid "Right Click" +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 "" + +#. ~ Name of key +#: src/client/keycode.cpp +msgid "Right Windows" +msgstr "" + +#: src/client/keycode.cpp +msgid "Scroll Lock" +msgstr "" + +#: src/client/keycode.cpp +msgid "Select Key" +msgstr "" + +#: src/client/keycode.cpp +msgid "Shift Key" +msgstr "" + +#: src/client/keycode.cpp +msgid "Space" +msgstr "" + +#: src/client/keycode.cpp +msgid "Tab Key" +msgstr "" + +#: src/client/keycode.cpp +msgid "Up Arrow" +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/client/shader.cpp +#, c-format +msgid "Failed to compile the \"%s\" shader." +msgstr "" + +#: src/client/shader.cpp +msgid "GLSL is not supported by the driver" +msgstr "" + +#. ~ Error when a mod is missing dependencies. Ex: "Mod Title is missing: mod1, mod2, mod3" +#: src/content/mod_configuration.cpp +#, c-format +msgid "%s is missing:" +msgstr "" + +#: src/content/mod_configuration.cpp +msgid "" +"Install and enable the required mods, or disable the mods causing errors." +msgstr "" + +#: src/content/mod_configuration.cpp +msgid "" +"Note: this may be caused by a dependency cycle, in which case try updating " +"the mods." +msgstr "" + +#: src/content/mod_configuration.cpp +msgid "Some mods have unsatisfied dependencies:" +msgstr "" + +#: src/gui/guiButtonKey.h +msgid "Press Button" +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/guiOpenURL.cpp +msgid "Open" +msgstr "" + +#: src/gui/guiOpenURL.cpp +msgid "Open URL?" +msgstr "" + +#: src/gui/guiOpenURL.cpp +msgid "Unable to open URL" +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 "Muted" +msgstr "" + +#: src/gui/guiVolumeChange.cpp +#, c-format +msgid "Sound Volume: %d%%" +msgstr "" + +#: src/gui/touchscreeneditor.cpp +msgid "Add button" +msgstr "" + +#: src/gui/touchscreeneditor.cpp +msgid "Done" +msgstr "" + +#: src/gui/touchscreeneditor.cpp +msgid "Remove" +msgstr "" + +#: src/gui/touchscreeneditor.cpp +msgid "Reset" +msgstr "" + +#: src/gui/touchscreeneditor.cpp +msgid "Start dragging a button to add. Tap outside to cancel." +msgstr "" + +#: src/gui/touchscreeneditor.cpp +msgid "Tap a button to select it. Drag a button to move it." +msgstr "" + +#: src/gui/touchscreeneditor.cpp +msgid "Tap outside to deselect." +msgstr "" + +#: src/gui/touchscreenlayout.cpp src/settings_translation_file.cpp +msgid "Aux1" +msgstr "" + +#: src/gui/touchscreenlayout.cpp +msgid "Change camera" +msgstr "" + +#: src/gui/touchscreenlayout.cpp src/settings_translation_file.cpp +msgid "Dig/punch/use" +msgstr "" + +#: src/gui/touchscreenlayout.cpp +msgid "Drop" +msgstr "" + +#: src/gui/touchscreenlayout.cpp +msgid "Exit" +msgstr "" + +#: src/gui/touchscreenlayout.cpp +msgid "Inventory" +msgstr "" + +#: src/gui/touchscreenlayout.cpp +msgid "Joystick" +msgstr "" + +#: src/gui/touchscreenlayout.cpp src/settings_translation_file.cpp +msgid "Jump" +msgstr "" + +#: src/gui/touchscreenlayout.cpp +msgid "Overflow menu" +msgstr "" + +#: src/gui/touchscreenlayout.cpp src/settings_translation_file.cpp +msgid "Place/use" +msgstr "" + +#: src/gui/touchscreenlayout.cpp +msgid "Range select" +msgstr "" + +#: src/gui/touchscreenlayout.cpp src/settings_translation_file.cpp +msgid "Sneak" +msgstr "" + +#: src/gui/touchscreenlayout.cpp src/settings_translation_file.cpp +msgid "Toggle chat log" +msgstr "" + +#: src/gui/touchscreenlayout.cpp +msgid "Toggle debug" +msgstr "" + +#: src/gui/touchscreenlayout.cpp src/settings_translation_file.cpp +msgid "Toggle fast" +msgstr "" + +#: src/gui/touchscreenlayout.cpp src/settings_translation_file.cpp +msgid "Toggle fly" +msgstr "" + +#: src/gui/touchscreenlayout.cpp src/settings_translation_file.cpp +msgid "Toggle minimap" +msgstr "" + +#: src/gui/touchscreenlayout.cpp src/settings_translation_file.cpp +msgid "Toggle noclip" +msgstr "" + +#: src/gui/touchscreenlayout.cpp src/settings_translation_file.cpp +msgid "Zoom" +msgstr "" + +#: src/network/clientpackethandler.cpp +msgid "" +"Another client is connected with this name. If your client closed " +"unexpectedly, try again in a minute." +msgstr "" + +#: src/network/clientpackethandler.cpp +msgid "Empty passwords are disallowed. Set a password and try again." +msgstr "" + +#: src/network/clientpackethandler.cpp +msgid "Internal server error" +msgstr "" + +#: src/network/clientpackethandler.cpp +msgid "Invalid password" +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 +#: src/script/lua_api/l_mainmenu.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/network/clientpackethandler.cpp +msgid "Player name contains disallowed characters" +msgstr "" + +#: src/network/clientpackethandler.cpp +msgid "Player name not allowed" +msgstr "" + +#: src/network/clientpackethandler.cpp +msgid "Server shutting down" +msgstr "" + +#: src/network/clientpackethandler.cpp +msgid "" +"The server has experienced an internal error. You will now be disconnected." +msgstr "" + +#: src/network/clientpackethandler.cpp +msgid "The server is running in singleplayer mode. You cannot connect." +msgstr "" + +#: src/network/clientpackethandler.cpp +msgid "Too many users" +msgstr "" + +#: src/network/clientpackethandler.cpp +msgid "Unknown disconnect reason." +msgstr "" + +#: src/network/clientpackethandler.cpp +msgid "" +"Your client sent something the server didn't expect. Try reconnecting or " +"updating your client." +msgstr "" + +#: src/network/clientpackethandler.cpp +msgid "" +"Your client's version is not supported.\n" +"Please contact the server administrator." +msgstr "" + +#: src/server.cpp +#, c-format +msgid "%s while shutting down: " +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" +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" +"- topbottom: split screen top/bottom\n" +"- sidebyside: split screen side-by-side\n" +"- crossview: cross-eyed 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 "Adjust the detected display density, used for scaling UI elements." +msgstr "" + +#: src/settings_translation_file.cpp +#, no-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 "" +"All mesh buffers with less than this number of vertices will be merged\n" +"during map rendering. This improves rendering performance." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Allow clouds to look 3D instead of flat." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Allows liquids to be translucent." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Also used for climbing down and descending in water if aux1_descends is " +"disabled." +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 "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 "Anti-aliasing scale" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Antialiasing method" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Anticheat flags" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Anticheat movement tolerance" +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 "" +"Apply dithering to reduce color banding artifacts.\n" +"Dithering significantly increases the size of losslessly-compressed\n" +"screenshots and it works incorrectly if the display or operating system\n" +"performs additional dithering or if the color channels are not quantized\n" +"to 8 bits.\n" +"With OpenGL ES, dithering only works if the shader supports high\n" +"floating-point precision and it may have a higher performance impact." +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 might not be rendered correctly in caves).\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 "" +"At this distance the server will perform a simpler and cheaper occlusion " +"check.\n" +"Smaller values potentially improve performance, at the expense of " +"temporarily visible\n" +"rendering glitches (missing blocks).\n" +"This is especially useful for very large viewing range (upwards of 500).\n" +"Stated in MapBlocks (16 nodes)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Audio" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Automatic jumping" +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 "Autoscaling mode" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Aux1 key for climbing/descending" +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 "Base texture size" +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" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Biome noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Block bounds HUD radius" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Block cull optimize distance" +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 smoothing" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Camera smoothing in cinematic mode" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Capture Tracy zones" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Capture Tracy zones with the profiler's instrumentation.\n" +"You need to build with Tracy to use this, see doc/developing/profiling.md\n" +"for details." +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 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 weblinks" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Chunk size" +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 Debugging" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Client Mesh Chunksize" +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 Modding" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Client-side node lookup range restriction" +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 in menu" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Color depth for post-processing texture" +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 AL and ALC extensions that should not be used.\n" +"Useful for testing. See al_extensions.[h,cpp] for details." +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 Luanti versions,\n" +"so see a full list at https://content.luanti.org/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" +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 "" +"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 "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 "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 "" +"Decide the color depth of the texture used for the post-processing " +"pipeline.\n" +"Reducing this can improve performance, but some effects (e.g. debanding)\n" +"require more than 8 bits to work." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Decrease view range" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Decrease volume" +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 maximum number of forceloaded mapblocks.\n" +"Set this to -1 to disable the limit." +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 "" +"Define the oldest clients allowed to connect.\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.\n" +"This allows for more fine-grained control than " +"strict_protocol_version_checking.\n" +"Luanti still enforces its own internal minimum, and enabling\n" +"strict_protocol_version_checking will effectively override this." +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 size of the sampling grid for FSAA and SSAA antialiasing " +"methods.\n" +"Value of 2 means taking 2x2 = 4 samples." +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, which can help reduce jitter." +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 "Developer Options" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Disable if you only want to instrument with Tracy." +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.\n" +"Set to 0 to disable it entirely." +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 "" +"Draw transparency sorted triangles grouped by their mesh buffers.\n" +"This breaks transparency sorting between mesh buffers, but avoids " +"situations\n" +"where transparency sorting would be very slow otherwise." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Drop item" +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 "Effects" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Enable Automatic Exposure" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Enable Bloom" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Enable Bloom Debug" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Enable Debanding" +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 IPv6 support for server.\n" +"Note that clients will be able to connect with both IPv4 and IPv6.\n" +"Ignored if bind_address is set." +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 Post Processing" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Enable Raytraced Culling" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Enable automatic exposure correction\n" +"When enabled, the post-processing engine will\n" +"automatically adjust to the brightness of the scene,\n" +"simulating the behavior of human eye." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Enable colored shadows for transculent nodes.\n" +"This is expensive." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Enable console window" +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 mouse wheel (scroll) for item selection in hotbar." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Enable random mod loading (mainly used for testing)." +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." +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 updates available indicator on content tab" +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 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 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 debug and error-checking in the OpenGL driver." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Enables smooth scrolling." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Enables the post processing pipeline." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Enables the touchscreen controls, allowing you to play the game with a " +"touchscreen.\n" +"\"auto\" means that the touchscreen controls will be enabled and disabled\n" +"automatically depending on the last used input method." +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 behavior.\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 "Exposure compensation" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "FPS" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "FPS when unfocused" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Factor noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fallback font path" +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 "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 "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 "" +"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 "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 "Fog" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fog start" +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 Full-Screen Background Color" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Formspec Full-Screen Background Opacity" +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 "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" +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 "Gamepads" +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 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 "" +"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." +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 slot 1" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 10" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 11" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 12" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 13" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 14" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 15" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 16" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 17" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 18" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 19" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 2" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 20" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 21" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 22" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 23" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 24" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 25" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 26" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 27" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 28" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 29" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 30" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 31" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 32" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 4" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 5" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 6" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 7" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 8" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 9" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar: Enable mouse wheel for selection" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar: Invert mouse wheel direction" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar: select next item" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar: select previous item" +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." +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 and you have ContentDB packages installed, Luanti may contact " +"ContentDB to\n" +"check for package updates when opening the mainmenu." +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, actions are recorded for rollback.\n" +"This option is only read when server starts." +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, players cannot join without a password or change theirs to an " +"empty password." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"If enabled, server account registration is separate from login in the UI.\n" +"If disabled, connecting to a server will automatically register a new " +"account." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "If enabled, the \"Aux1\" key will toggle when pressed." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"If enabled, the \"Sneak\" key will toggle when pressed.\n" +"This functionality is ignored when fly is enabled." +msgstr "" + +#: src/settings_translation_file.cpp +#, no-c-format +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 by 50-80%. Clients will no longer receive most\n" +"invisible blocks, so that the utility of noclip mode is reduced." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"If enabled, you can place nodes 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 +#, no-c-format +msgid "In-game chat console height, between 0.1 (10%) and 1.0 (100%)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Increase view range" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Increase volume" +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 core.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 "Interaction style" +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 "Inventory items animations" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Invert mouse" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Invert mouse wheel (scroll) direction for item selection in hotbar." +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 "Jumping speed" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Key for decrementing the selected value in Quicktune." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for digging, punching or using something.\n" +"(Note: The actual meaning might vary on a per-game basis.)" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Key for incrementing the selected value in Quicktune." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Key for moving fast in fast mode." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Key for opening the chat window to type commands." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Key for opening the chat window to type local commands." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for placing an item/block or for using something.\n" +"(Note: The actual meaning might vary on a per-game basis.)" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Key for switching to the next entry in Quicktune." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Key for switching to the previous entry in Quicktune." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Key for toggling the camera update. Only usable with 'debug' privilege." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Key for toggling the display of mapblock boundaries." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Key for toggling the display of the profiler. Used for development." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Keybindings" +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 "Leaves style" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Leaves style:\n" +"- Fancy: all faces visible\n" +"- Simple: only outer faces\n" +"- Opaque: disable transparency" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Length of a server tick (the interval at which everything is generally " +"updated),\n" +"stated in seconds.\n" +"Does not apply to sessions hosted from the client menu.\n" +"This is a lower bound, i.e. server steps may not be shorter than this, but\n" +"they are often longer." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Length of liquid waves." +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" +"- (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 reflections" +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 "Local command" +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 "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.\n" +"The 'temples' flag disables generation of desert temples. Normal dungeons " +"will appear instead." +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 generation threads" +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." +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 mapblocks for client to be kept in memory.\n" +"Note that there is an internal dynamic minimum number of blocks that\n" +"won't be deleted, depending on the current view range.\n" +"Set to -1 for no limit." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Maximum number of packets sent per send step in the low-level networking " +"code.\n" +"You generally don't need to change this, however busy servers may benefit " +"from a higher 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 client's outgoing chat queue" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Maximum size of the client's outgoing 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 "Measure time samples" +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 scan height" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Minimum dig repetition interval" +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 vertex count for mesh buffers" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mipmapping" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Miscellaneous" +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 "" +"Modifier key bind for closing your world.\n" +"Requires ESC + the selected key to work." +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 "Move backward" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Move forward" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Move left" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Move right" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Movement threshold" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mud noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mute" +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, a client connecting with this name is admin.\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 "" +"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 "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 "Number of messages a player may send per 10 seconds." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Number of threads to use for mesh generation.\n" +"Value of 0 (default) will let Luanti automatically choose the number of " +"threads." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Occlusion Culler" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Occlusion Culling" +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 chat" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Open inventory" +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 "OpenGL debug" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Optimize GUI for touchscreens" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Optional override for chat weblink color." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Other Effects" +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 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 "Place repetition interval" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Player transfer distance" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Poisson filtering" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Post Processing" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Prevent digging and placing from repeating when holding the respective " +"buttons.\n" +"Enable this when you dig or place too often by accident.\n" +"On touchscreens, this only affects digging." +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 "Prometheus listener address" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Prometheus listener address.\n" +"If Luanti is compiled with Prometheus support, this setting\n" +"enables the metrics listener for Prometheus on that address.\n" +"By default you can fetch metrics from http://127.0.0.1:30000/metrics.\n" +"An empty value disables the metrics listener." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Proportion of large caves that contain liquid." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Protocol version minimum" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Punch gesture" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Quicktune: decrement value" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Quicktune: increment value" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Quicktune: select next entry" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Quicktune: select previous entry" +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 "Radius to use when the block bounds HUD feature is set to near blocks." +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 "Random mod load order" +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 "Remember screen size" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Remote media" +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 "Return to Main Menu" +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 "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 "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.\n" +"If true, screen size is saved in screen_w and screen_h, and whether the " +"window\n" +"is maximized is stored in window_maximized.\n" +"(Autosaving window_maximized only works if compiled with SDL.)" +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" +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 "" +"Select the antialiasing method to apply.\n" +"\n" +"* None - No antialiasing (default)\n" +"\n" +"* FSAA - Hardware-provided full-screen antialiasing\n" +"A.K.A multi-sample antialiasing (MSAA)\n" +"Smoothens out block edges but does not affect the insides of textures.\n" +"\n" +"If Post Processing is disabled, changing FSAA requires a restart.\n" +"Also, if Post Processing is disabled, FSAA will not work together with\n" +"undersampling or a non-default \"3d_mode\" setting.\n" +"\n" +"* FXAA - Fast approximate antialiasing\n" +"Applies a post-processing filter to detect and smoothen high-contrast " +"edges.\n" +"Provides balance between speed and image quality.\n" +"\n" +"* SSAA - Super-sampling antialiasing\n" +"Renders higher-resolution image of the scene, then scales down to reduce\n" +"the aliasing effects. This is the slowest and the most accurate method." +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 "" +"Send names of online players to the serverlist. If disabled only the player " +"count is revealed." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Send player names to the server list" +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 anticheat configuration.\n" +"Flags are positive. Uncheck the flag to disable corresponding anticheat " +"module." +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 default tilt of Sun/Moon orbit in degrees.\n" +"Games may change orbit tilt via API.\n" +"Value of 0 means no tilt / vertical orbit." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Set the exposure compensation in EV units.\n" +"Value of 0.0 (default) means no exposure compensation.\n" +"Range: from -1 to 1.0" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Set the language. By default, the system language is used.\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 to true to enable Shadow Mapping." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Set to true to enable bloom effect.\n" +"Bright colors will bleed over the neighboring objects." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Set to true to enable volumetric lighting effect (a.k.a. \"Godrays\")." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Set to true to enable waving leaves." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Set to true to enable waving liquids (like water)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Set to true to enable waving plants." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Set to true to render debugging breakdown of the bloom effect.\n" +"In debug mode, the screen is split into 4 quadrants:\n" +"top-left - processed base image, top-right - final image\n" +"bottom-left - raw base image, bottom-right - bloom texture." +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 "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 "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 "" +"Side length of a cube of map blocks that the client will consider together\n" +"when generating meshes.\n" +"Larger values increase the utilization of the GPU by reducing the number of\n" +"draw calls, benefiting especially high-end GPUs.\n" +"Systems with a low-end GPU (or no GPU) would benefit from smaller values." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Simulate translucency when looking at foliage in the sunlight." +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 "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 "Smooth scrolling" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Smooths rotation of camera when in cinematic mode, 0 to disable. Enter " +"cinematic mode by using the key set in Controls." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Smooths rotation of camera, also called look or mouse smoothing. 0 to " +"disable." +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 clouds" +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 "Sound Extensions Blacklist" +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 the shadow map over a given number of frames.\n" +"Higher values might make shadows laggy, lower values\n" +"will consume more resources." +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 spawn point" +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, 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 "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 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 delay in milliseconds after which a touch interaction is considered a " +"long tap." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"The file path relative to your world path in which profiles will be saved to." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"The gesture for punching players/entities.\n" +"This can be overridden by games and mods.\n" +"\n" +"* Short tap\n" +"Easy to use and well-known from other games that shall not be named.\n" +"\n" +"* Long tap\n" +"Known from the classic Luanti mobile controls.\n" +"Combat is more or less impossible." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "The identifier of the joystick to use" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"The kind of digging/placing controls used.\n" +"\n" +"* Tap\n" +"Long/short tap anywhere on the screen to interact.\n" +"Interaction happens at finger position.\n" +"\n" +"* Tap with crosshair\n" +"Long/short tap anywhere on the screen to interact.\n" +"Interaction happens at crosshair position.\n" +"\n" +"* Buttons with crosshair\n" +"Use dedicated dig/place buttons to interact.\n" +"Interaction happens at crosshair position." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"The length in pixels after which a touch interaction is considered movement." +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)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"The minimum time in seconds it takes between digging nodes when holding\n" +"the dig button." +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" +"Note: A restart is required after changing this!\n" +"OpenGL is the default for desktop, and OGLES2 for Android." +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 "Threshold for long taps" +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 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 Aux1 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Toggle HUD" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Toggle Sneak key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Toggle automatic forward" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Toggle block bounds" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Toggle camera mode" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Toggle camera update" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Toggle cinematic mode" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Toggle debug info" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Toggle fog" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Toggle fullscreen" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Toggle large chat console" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Toggle pitchmove" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Toggle profiler" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Toggle unlimited view range" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Tolerance of movement cheat detector.\n" +"Increase the value if players experience stuttery movement." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Tooltip delay" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Touchscreen" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Touchscreen controls" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Touchscreen sensitivity" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Touchscreen sensitivity multiplier." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Tradeoffs for performance" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Translucent foliage" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Translucent liquids" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Transparency Sorting Distance" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Transparency Sorting Group by Buffers" +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 "" +"Type of occlusion_culler\n" +"\n" +"\"loops\" is the legacy algorithm with nested loops and O(n³) complexity\n" +"\"bfs\" is the new algorithm based on breadth-first-search and side culling\n" +"\n" +"This setting should only be changed if you have performance problems." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"URL to JSON file which provides information about the newest Luanti " +"release.\n" +"If this is empty the engine will never check for updates." +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.\n" +"Note: Undersampling is currently not supported if the \"3d_mode\" setting is " +"set\n" +"to a non-default value." +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 "Update information URL" +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 a cloud animation for the main menu background." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Use anisotropic filtering when looking at textures from an angle.\n" +"This provides a significant improvement when used together with mipmapping." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Use bilinear filtering when scaling textures." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Use mipmaps when scaling 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 raytraced occlusion culling in the new culler.\n" +"This flag enables use of raytraced occlusion culling test for\n" +"client mesh sizes smaller than 4x4x4 map blocks." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Use smooth cloud shading." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Use trilinear filtering when scaling textures.\n" +"If both bilinear and trilinear filtering are enabled, trilinear filtering\n" +"is applied." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"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 "User Interfaces" +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. Your system may still force VSync on even " +"if this is disabled." +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 "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 multiplier when the window is unfocused." +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 "Volume when unfocused" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Volumetric lighting" +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 enabled, liquid reflections are simulated." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"When enabled, the GUI is optimized to be more usable on touchscreens.\n" +"Whether this is enabled by default depends on your hardware form-factor." +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 using bilinear/trilinear filtering, low-resolution textures\n" +"can be blurred, so this option automatically upscales them to preserve\n" +"crisp pixels. This defines the minimum texture size for the upscaled " +"textures;\n" +"higher values look sharper, but require more memory.\n" +"This setting is ONLY applied if any of the mentioned filters are 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 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 the window is maximized." +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.\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)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Width component of the initial window size." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Width of the selection box lines around nodes." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Will also disable autoforward, when active." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Window maximized" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Windows systems only: Start Luanti 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 based 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/id/luanti.po b/po/id/luanti.po index be9c88370..08b4eda87 100644 --- a/po/id/luanti.po +++ b/po/id/luanti.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Indonesian (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-07-11 19:59+0200\n" +"POT-Creation-Date: 2025-09-23 19:19+0200\n" "PO-Revision-Date: 2025-05-15 23:01+0000\n" "Last-Translator: Linerly \n" "Language-Team: Indonesian \n" "Language-Team: Italian \n" "Language-Team: Japanese \n" @@ -12,7 +12,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Weblate 5.12-dev\n" +"X-Generator: Weblate 5.13-dev\n" #: builtin/client/chatcommands.lua msgid "Clear the out chat queue" @@ -607,9 +607,8 @@ msgid "Website" msgstr "ウェブサイト" #: builtin/mainmenu/content/dlg_package.lua -#, fuzzy msgid "by $1" -msgstr "$1 by $2" +msgstr "$1 によって" #: builtin/mainmenu/content/dlg_package.lua msgid "by $1 — $2 downloads — +$3 / $4 / -$5" @@ -1224,10 +1223,6 @@ msgstr "" msgid "New" msgstr "新規作成" -#: builtin/mainmenu/tab_local.lua -msgid "No world created or selected!" -msgstr "ワールドが作成または選択されていません!" - #: builtin/mainmenu/tab_local.lua msgid "Play Game" msgstr "ゲームプレイ" @@ -1356,7 +1351,7 @@ msgstr "完了!" #: src/client/client.cpp #, c-format msgid "Failed to save screenshot to \"%s\"" -msgstr "" +msgstr "スクリーンショットを%sに保存失敗" #: src/client/client.cpp msgid "Initializing nodes" @@ -1375,9 +1370,9 @@ msgid "Rebuilding shaders..." msgstr "シェーダーを再構築中..." #: src/client/client.cpp -#, fuzzy, c-format +#, c-format msgid "Saved screenshot to \"%s\"" -msgstr "スクリーンショット" +msgstr "スクリーンショットを「%s」に保存" #: src/client/clientlauncher.cpp msgid "Could not find or load game: " @@ -1834,10 +1829,6 @@ msgstr "観測記録 非表示" msgid "Profiler shown (page %d of %d)" msgstr "観測記録 表示 (ページ %d / %d)" -#: src/client/keycode.cpp -msgid "Apps" -msgstr "アプリケーション" - #: src/client/keycode.cpp msgid "Backspace" msgstr "Back Space" @@ -1868,44 +1859,19 @@ msgid "Down Arrow" msgstr "下矢印" #: src/client/keycode.cpp -msgid "End" -msgstr "End" +#, fuzzy +msgid "End Key" +msgstr "Menuキー" #: src/client/keycode.cpp -msgid "Erase EOF" -msgstr "EOFを消去する" +#, fuzzy +msgid "Help Key" +msgstr "Deleteキー" #: src/client/keycode.cpp -msgid "Execute" -msgstr "Execute" - -#: src/client/keycode.cpp -msgid "Help" -msgstr "ヘルプ" - -#: 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変換" - -#: src/client/keycode.cpp -msgid "IME Escape" -msgstr "Esc" - -#: src/client/keycode.cpp -msgid "IME Mode Change" -msgstr "IMEモード変更" - -#: src/client/keycode.cpp -msgid "IME Nonconvert" -msgstr "無変換" +#, fuzzy +msgid "Home Key" +msgstr "ズームキー" #: src/client/keycode.cpp msgid "Insert" @@ -1916,8 +1882,9 @@ msgid "Left Arrow" msgstr "左矢印" #: src/client/keycode.cpp -msgid "Left Button" -msgstr "左ボタン" +#, fuzzy +msgid "Left Click" +msgstr "左Ctrl" #: src/client/keycode.cpp msgid "Left Control" @@ -1931,18 +1898,26 @@ msgstr "左Alt" msgid "Left Shift" msgstr "左Shift" +#. ~ Name of key #: src/client/keycode.cpp msgid "Left Windows" msgstr "左Windows" -#. ~ Key name, common on Windows keyboards #: src/client/keycode.cpp msgid "Menu Key" msgstr "Menuキー" #: src/client/keycode.cpp -msgid "Middle Button" -msgstr "中ボタン" +msgid "Middle Click" +msgstr "" + +#: src/client/keycode.cpp +msgid "Mouse X1" +msgstr "" + +#: src/client/keycode.cpp +msgid "Mouse X2" +msgstr "" #: src/client/keycode.cpp msgid "Num Lock" @@ -2008,10 +1983,6 @@ msgstr "数値キーパッド 8" msgid "Numpad 9" msgstr "数値キーパッド 9" -#: src/client/keycode.cpp -msgid "OEM Clear" -msgstr "OEM Clear" - #: src/client/keycode.cpp msgid "Page Down" msgstr "Page Down" @@ -2043,8 +2014,9 @@ msgid "Right Arrow" msgstr "右矢印" #: src/client/keycode.cpp -msgid "Right Button" -msgstr "右ボタン" +#, fuzzy +msgid "Right Click" +msgstr "右Ctrl" #: src/client/keycode.cpp msgid "Right Control" @@ -2058,6 +2030,7 @@ msgstr "右メニュー" msgid "Right Shift" msgstr "右Shift" +#. ~ Name of key #: src/client/keycode.cpp msgid "Right Windows" msgstr "右Windows" @@ -2066,47 +2039,28 @@ msgstr "右Windows" msgid "Scroll Lock" msgstr "Scroll Lock" -#. ~ Key name #: src/client/keycode.cpp -msgid "Select" -msgstr "Select" +#, fuzzy +msgid "Select Key" +msgstr "Deleteキー" #: src/client/keycode.cpp msgid "Shift Key" msgstr "Shiftキー" -#: src/client/keycode.cpp -msgid "Sleep" -msgstr "スリープ" - -#: src/client/keycode.cpp -msgid "Snapshot" -msgstr "Snapshot" - #: src/client/keycode.cpp msgid "Space" msgstr "Space" #: src/client/keycode.cpp -msgid "Tab" -msgstr "Tab" +#, fuzzy +msgid "Tab Key" +msgstr "Breakキー" #: src/client/keycode.cpp msgid "Up Arrow" msgstr "上矢印" -#: src/client/keycode.cpp -msgid "X Button 1" -msgstr "Xボタン1" - -#: src/client/keycode.cpp -msgid "X Button 2" -msgstr "Xボタン2" - -#: src/client/keycode.cpp -msgid "Zoom Key" -msgstr "ズームキー" - #: src/client/minimap.cpp msgid "Minimap hidden" msgstr "ミニマップ 非表示" @@ -2528,15 +2482,15 @@ msgid "3D noise that determines number of dungeons per mapchunk." msgstr "マップチャンクごとのダンジョンの数を決定する3Dノイズ。" #: src/settings_translation_file.cpp +#, fuzzy msgid "" "3D support.\n" "Currently supported:\n" -"- none: no 3d output.\n" -"- anaglyph: cyan/magenta color 3d.\n" -"- interlaced: odd/even line based polarization screen support.\n" -"- topbottom: split screen top/bottom.\n" -"- sidebyside: split screen side by side.\n" -"- crossview: Cross-eyed 3d" +"- none: no 3D output\n" +"- anaglyph: cyan/magenta color 3D\n" +"- topbottom: split screen top/bottom\n" +"- sidebyside: split screen side-by-side\n" +"- crossview: cross-eyed 3D" msgstr "" "3Dサポート。\n" "現在のサポート:\n" @@ -2644,13 +2598,12 @@ msgid "Allows liquids to be translucent." msgstr "液体が半透明になることを可能にします。" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Also used for climbing down and descending in water if aux1_descends is " "disabled." msgstr "" -"スニークするためのキーです。\n" -"aux1_descends が無効中は、降りるときや水中で潜るときにも使用されます。" +"aux1_descends が無効になっている場合は、水中を下降したりするためにも使用され" +"ます。" #: src/settings_translation_file.cpp msgid "" @@ -2909,6 +2862,17 @@ msgstr "カメラの滑らかさ" msgid "Camera smoothing in cinematic mode" msgstr "シネマティックモードでのカメラの滑らかさ" +#: src/settings_translation_file.cpp +msgid "Capture Tracy zones" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Capture Tracy zones with the profiler's instrumentation.\n" +"You need to build with Tracy to use this, see doc/developing/profiling.md\n" +"for details." +msgstr "" + #: src/settings_translation_file.cpp msgid "Cave noise" msgstr "洞窟ノイズ" @@ -3403,13 +3367,12 @@ msgid "Defines tree areas and tree density." msgstr "木の地域と木の密度を定義します。" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Delay between mesh updates on the client in ms. Increasing this will slow\n" "down the rate of mesh updates, which can help reduce jitter." msgstr "" -"クライアント上のメッシュ更新間の遅延 (ミリ秒)。これを大きくすると\n" -"メッシュの更新速度が遅くなり、低速のクライアントのジッタが減少します。" +"クライアント上のメッシュ更新間の遅延(ミリ秒)。この値を増やすと\n" +"メッシュ更新の速度が遅くなり、ジッターの軽減に役立ちます。" #: src/settings_translation_file.cpp msgid "Delay in sending blocks after building" @@ -3453,6 +3416,10 @@ msgstr "" msgid "Developer Options" msgstr "開発者向けオプション" +#: src/settings_translation_file.cpp +msgid "Disable if you only want to instrument with Tracy." +msgstr "" + #: src/settings_translation_file.cpp msgid "Disallow empty passwords" msgstr "空のパスワードを許可しない" @@ -4194,131 +4161,131 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Hotbar slot 1" -msgstr "ホットバーのスロット1" +msgstr "ホットバー スロット1" #: src/settings_translation_file.cpp msgid "Hotbar slot 10" -msgstr "ホットバーのスロット10" +msgstr "ホットバー スロット10" #: src/settings_translation_file.cpp msgid "Hotbar slot 11" -msgstr "ホットバーのスロット11" +msgstr "ホットバー スロット11" #: src/settings_translation_file.cpp msgid "Hotbar slot 12" -msgstr "ホットバーのスロット12" +msgstr "ホットバー スロット12" #: src/settings_translation_file.cpp msgid "Hotbar slot 13" -msgstr "ホットバーのスロット13" +msgstr "ホットバー スロット13" #: src/settings_translation_file.cpp msgid "Hotbar slot 14" -msgstr "ホットバーのスロット14" +msgstr "ホットバー スロット14" #: src/settings_translation_file.cpp msgid "Hotbar slot 15" -msgstr "ホットバーのスロット15" +msgstr "ホットバー スロット15" #: src/settings_translation_file.cpp msgid "Hotbar slot 16" -msgstr "ホットバーのスロット16" +msgstr "ホットバー スロット16" #: src/settings_translation_file.cpp msgid "Hotbar slot 17" -msgstr "ホットバーのスロット17" +msgstr "ホットバー スロット17" #: src/settings_translation_file.cpp msgid "Hotbar slot 18" -msgstr "ホットバーのスロット18" +msgstr "ホットバー スロット18" #: src/settings_translation_file.cpp msgid "Hotbar slot 19" -msgstr "ホットバーのスロット19" +msgstr "ホットバー スロット19" #: src/settings_translation_file.cpp msgid "Hotbar slot 2" -msgstr "ホットバーのスロット2" +msgstr "ホットバー スロット2" #: src/settings_translation_file.cpp msgid "Hotbar slot 20" -msgstr "ホットバーのスロット20" +msgstr "ホットバー スロット20" #: src/settings_translation_file.cpp msgid "Hotbar slot 21" -msgstr "ホットバーのスロット21" +msgstr "ホットバー スロット21" #: src/settings_translation_file.cpp msgid "Hotbar slot 22" -msgstr "ホットバーのスロット22" +msgstr "ホットバー スロット22" #: src/settings_translation_file.cpp msgid "Hotbar slot 23" -msgstr "ホットバーのスロット23" +msgstr "ホットバー スロット23" #: src/settings_translation_file.cpp msgid "Hotbar slot 24" -msgstr "ホットバーのスロット24" +msgstr "ホットバー スロット24" #: src/settings_translation_file.cpp msgid "Hotbar slot 25" -msgstr "ホットバーのスロット25" +msgstr "ホットバー スロット25" #: src/settings_translation_file.cpp msgid "Hotbar slot 26" -msgstr "ホットバーのスロット26" +msgstr "ホットバー スロット26" #: src/settings_translation_file.cpp msgid "Hotbar slot 27" -msgstr "ホットバーのスロット27" +msgstr "ホットバー スロット27" #: src/settings_translation_file.cpp msgid "Hotbar slot 28" -msgstr "ホットバーのスロット28" +msgstr "ホットバー スロット28" #: src/settings_translation_file.cpp msgid "Hotbar slot 29" -msgstr "ホットバーのスロット29" +msgstr "ホットバー スロット29" #: src/settings_translation_file.cpp msgid "Hotbar slot 3" -msgstr "ホットバーのスロット3" +msgstr "ホットバー スロット3" #: src/settings_translation_file.cpp msgid "Hotbar slot 30" -msgstr "ホットバーのスロット30" +msgstr "ホットバー スロット30" #: src/settings_translation_file.cpp msgid "Hotbar slot 31" -msgstr "ホットバーのスロット31" +msgstr "ホットバー スロット31" #: src/settings_translation_file.cpp msgid "Hotbar slot 32" -msgstr "ホットバーのスロット32" +msgstr "ホットバー スロット32" #: src/settings_translation_file.cpp msgid "Hotbar slot 4" -msgstr "ホットバーのスロット4" +msgstr "ホットバー スロット4" #: src/settings_translation_file.cpp msgid "Hotbar slot 5" -msgstr "ホットバーのスロット5" +msgstr "ホットバー スロット5" #: src/settings_translation_file.cpp msgid "Hotbar slot 6" -msgstr "ホットバーのスロット6" +msgstr "ホットバー スロット6" #: src/settings_translation_file.cpp msgid "Hotbar slot 7" -msgstr "ホットバーのスロット7" +msgstr "ホットバー スロット7" #: src/settings_translation_file.cpp msgid "Hotbar slot 8" -msgstr "ホットバーのスロット8" +msgstr "ホットバー スロット8" #: src/settings_translation_file.cpp msgid "Hotbar slot 9" -msgstr "ホットバーのスロット9" +msgstr "ホットバー スロット9" #: src/settings_translation_file.cpp msgid "Hotbar: Enable mouse wheel for selection" @@ -5383,6 +5350,11 @@ msgstr "" msgid "Maximum users" msgstr "最大ユーザー数" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Measure time samples" +msgstr "砂漠の寺院" + #: src/settings_translation_file.cpp msgid "Message of the day" msgstr "その日のメッセージ" @@ -5444,6 +5416,8 @@ msgid "" "Modifier key bind for closing your world.\n" "Requires ESC + the selected key to work." msgstr "" +"ワールドを閉じるためのキー割り当てです。\n" +"動作させるには ESC + 選択したキーが必要です。" #: src/settings_translation_file.cpp msgid "Modifies the size of the HUD elements." @@ -5619,14 +5593,13 @@ msgid "Number of messages a player may send per 10 seconds." msgstr "プレイヤーが10秒間に送信できるメッセージの数です。" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Number of threads to use for mesh generation.\n" "Value of 0 (default) will let Luanti automatically choose the number of " "threads." msgstr "" "メッシュ生成に使用するスレッドの数です。\n" -"値 0 (既定値) を指定すると、Luantiは使用可能なスレッドの数を自動検出します。" +"値 0 (既定値) を指定すると、Luantiは使用可能なスレッドの数を自動選択します。" #: src/settings_translation_file.cpp msgid "Occlusion Culler" @@ -5688,7 +5661,7 @@ 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" +"スクリーンショットを保存するパスです。絶対または相対パスを指定できます。\n" "フォルダーが存在しない場合は作成されます。" #: src/settings_translation_file.cpp @@ -5910,7 +5883,6 @@ msgstr "" "READ_PLAYERINFO: 32 (クライアント側での get_player_names 呼び出しを無効)" #: src/settings_translation_file.cpp -#, fuzzy msgid "Return to Main Menu" msgstr "メインメニューに戻る" @@ -6990,9 +6962,8 @@ msgid "Toggle fullscreen" msgstr "全画面表示モード切替" #: src/settings_translation_file.cpp -#, fuzzy msgid "Toggle large chat console" -msgstr "大型チャットコンソール" +msgstr "大型チャットコンソール切替" #: src/settings_translation_file.cpp msgid "Toggle pitchmove" @@ -7003,9 +6974,8 @@ msgid "Toggle profiler" msgstr "観測記録表示切替" #: src/settings_translation_file.cpp -#, fuzzy msgid "Toggle unlimited view range" -msgstr "無制限な視野を切り替えるためのキーです。" +msgstr "無制限な視野切替" #: src/settings_translation_file.cpp msgid "" @@ -7498,11 +7468,8 @@ msgid "Width of the selection box lines around nodes." msgstr "ノードを囲む選択ボックスの枠線の幅。" #: src/settings_translation_file.cpp -#, fuzzy msgid "Will also disable autoforward, when active." -msgstr "" -"プレイヤーを後方へ移動するキーです。\n" -"自動前進中に押すと自動前進を停止します。" +msgstr "使用中は自動前進も無効になります。" #: src/settings_translation_file.cpp msgid "Window maximized" @@ -7618,194 +7585,68 @@ msgstr "cURL インタラクティブタイムアウト" msgid "cURL parallel limit" msgstr "cURL並行処理制限" -#~ msgid "Apply specular shading to nodes." -#~ msgstr "ノードにスペキュラーシェーディングを適用します。" +#~ msgid "Apps" +#~ msgstr "アプリケーション" -#~ msgid "Key for decreasing the viewing range." -#~ msgstr "視野を縮小させるためのキーです。" +#~ msgid "End" +#~ msgstr "End" -#~ msgid "Key for decreasing the volume." -#~ msgstr "音量を下げるためのキーです。" +#~ msgid "Erase EOF" +#~ msgstr "EOFを消去する" -#~ msgid "Key for dropping the currently selected item." -#~ msgstr "選択中のアイテムを落とすためのキーです。" +#~ msgid "Execute" +#~ msgstr "Execute" -#~ msgid "Key for increasing the viewing range." -#~ msgstr "視野を拡大させるためのキーです。" +#~ msgid "Help" +#~ msgstr "ヘルプ" -#~ msgid "Key for increasing the volume." -#~ msgstr "音量を上げるためのキーです。" +#~ msgid "Home" +#~ msgstr "Home" -#~ msgid "Key for jumping." -#~ msgstr "ジャンプするのためのキーです。" +#~ msgid "IME Accept" +#~ msgstr "IME Accept" -#~ msgid "Key for moving the player forward." -#~ msgstr "プレイヤーを前方へ移動させるためのキーです。" +#~ msgid "IME Convert" +#~ msgstr "IME変換" -#~ msgid "Key for moving the player left." -#~ msgstr "プレイヤーを左へ移動させるためのキーです。" +#~ msgid "IME Escape" +#~ msgstr "Esc" -#~ msgid "Key for moving the player right." -#~ msgstr "プレイヤーを右へ移動させるためのキーです。" +#~ msgid "IME Mode Change" +#~ msgstr "IMEモード変更" -#~ msgid "Key for muting the game." -#~ msgstr "ゲームを無音にするためのキーです。" +#~ msgid "IME Nonconvert" +#~ msgstr "無変換" -#~ msgid "Key for opening the chat window." -#~ msgstr "チャットウィンドウを開くためのキーです。" +#~ msgid "Left Button" +#~ msgstr "左ボタン" -#~ msgid "Key for opening the inventory." -#~ msgstr "インベントリを開けるためのキーです。" +#~ msgid "Middle Button" +#~ msgstr "中ボタン" -#~ msgid "Key for selecting the 11th hotbar slot." -#~ msgstr "ホットバーの11番スロットを選択するためのキーです。" +#~ msgid "No world created or selected!" +#~ msgstr "ワールドが作成または選択されていません!" -#~ msgid "Key for selecting the 12th hotbar slot." -#~ msgstr "ホットバーの12番スロットを選択するためのキーです。" +#~ msgid "OEM Clear" +#~ msgstr "OEM Clear" -#~ msgid "Key for selecting the 13th hotbar slot." -#~ msgstr "ホットバーの13番スロットを選択するためのキーです。" +#~ msgid "Right Button" +#~ msgstr "右ボタン" -#~ msgid "Key for selecting the 14th hotbar slot." -#~ msgstr "ホットバーの14番スロットを選択するためのキーです。" +#~ msgid "Select" +#~ msgstr "Select" -#~ msgid "Key for selecting the 15th hotbar slot." -#~ msgstr "ホットバーの15番スロットを選択するためのキーです。" +#~ msgid "Sleep" +#~ msgstr "スリープ" -#~ msgid "Key for selecting the 16th hotbar slot." -#~ msgstr "ホットバーの16番スロットを選択するためのキーです。" +#~ msgid "Snapshot" +#~ msgstr "Snapshot" -#~ msgid "Key for selecting the 17th hotbar slot." -#~ msgstr "ホットバーの17番スロットを選択するためのキーです。" +#~ msgid "Tab" +#~ msgstr "Tab" -#~ msgid "Key for selecting the 18th hotbar slot." -#~ msgstr "ホットバーの18番スロットを選択するためのキーです。" +#~ msgid "X Button 1" +#~ msgstr "Xボタン1" -#~ msgid "Key for selecting the 19th hotbar slot." -#~ msgstr "ホットバーの19番スロットを選択するためのキーです。" - -#~ msgid "Key for selecting the 20th hotbar slot." -#~ msgstr "ホットバーの20番スロットを選択するためのキーです。" - -#~ msgid "Key for selecting the 21st hotbar slot." -#~ msgstr "ホットバーの21番スロットを選択するためのキーです。" - -#~ msgid "Key for selecting the 22nd hotbar slot." -#~ msgstr "ホットバーの22番スロットを選択するためのキーです。" - -#~ msgid "Key for selecting the 23rd hotbar slot." -#~ msgstr "ホットバーの23番スロットを選択するためのキーです。" - -#~ msgid "Key for selecting the 24th hotbar slot." -#~ msgstr "ホットバーの24番スロットを選択するためのキーです。" - -#~ msgid "Key for selecting the 25th hotbar slot." -#~ msgstr "ホットバーの25番スロットを選択するためのキーです。" - -#~ msgid "Key for selecting the 26th hotbar slot." -#~ msgstr "ホットバーの26番スロットを選択するためのキーです。" - -#~ msgid "Key for selecting the 27th hotbar slot." -#~ msgstr "ホットバーの27番スロットを選択するためのキーです。" - -#~ msgid "Key for selecting the 28th hotbar slot." -#~ msgstr "ホットバーの28番スロットを選択するためのキーです。" - -#~ msgid "Key for selecting the 29th hotbar slot." -#~ msgstr "ホットバーの29番スロットを選択するためのキーです。" - -#~ msgid "Key for selecting the 30th hotbar slot." -#~ msgstr "ホットバーの30番スロットを選択するためのキーです。" - -#~ msgid "Key for selecting the 31st hotbar slot." -#~ msgstr "ホットバーの31番スロットを選択するためのキーです。" - -#~ msgid "Key for selecting the 32nd hotbar slot." -#~ msgstr "ホットバーの32番スロットを選択するためのキーです。" - -#~ msgid "Key for selecting the eighth hotbar slot." -#~ msgstr "ホットバーの8番スロットを選択するためのキーです。" - -#~ msgid "Key for selecting the fifth hotbar slot." -#~ msgstr "ホットバーの5番スロットを選択するためのキーです。" - -#~ msgid "Key for selecting the first hotbar slot." -#~ msgstr "ホットバーの1番スロットを選択するためのキーです。" - -#~ msgid "Key for selecting the fourth hotbar slot." -#~ msgstr "ホットバーの4番スロットを選択するためのキーです。" - -#~ msgid "Key for selecting the next item in the hotbar." -#~ msgstr "ホットバーの次のアイテムを選択するためのキーです。" - -#~ msgid "Key for selecting the ninth hotbar slot." -#~ msgstr "ホットバーの9番スロットを選択するためのキーです。" - -#~ msgid "Key for selecting the previous item in the hotbar." -#~ msgstr "ホットバーの前のアイテムを選択するためのキーです。" - -#~ msgid "Key for selecting the second hotbar slot." -#~ msgstr "ホットバーの2番スロットを選択するためのキーです。" - -#~ msgid "Key for selecting the seventh hotbar slot." -#~ msgstr "ホットバーの7番スロットを選択するためのキーです。" - -#~ msgid "Key for selecting the sixth hotbar slot." -#~ msgstr "ホットバーの6番スロットを選択するためのキーです。" - -#~ msgid "Key for selecting the tenth hotbar slot." -#~ msgstr "ホットバーの10番スロットを選択するためのキーです。" - -#~ msgid "Key for selecting the third hotbar slot." -#~ msgstr "ホットバーの3番スロットを選択するためのキーです。" - -#~ msgid "Key for switching between first- and third-person camera." -#~ msgstr "一人称視点カメラと第3者視点カメラを切り替えるためのキーです。" - -#~ msgid "Key for taking screenshots." -#~ msgstr "スクリーンショットを撮るためのキーです。" - -#~ msgid "Key for toggling autoforward." -#~ msgstr "自動前進を切り替えるためのキーです。" - -#~ msgid "Key for toggling cinematic mode." -#~ msgstr "シネマティックモードを切り替えるためのキーです。" - -#~ msgid "Key for toggling display of minimap." -#~ msgstr "ミニマップの表示を切り替えるためのキーです。" - -#~ msgid "Key for toggling fast mode." -#~ msgstr "高速移動モードを切り替えるためのキーです。" - -#~ msgid "Key for toggling flying." -#~ msgstr "飛行モードを切り替えるためのキーです。" - -#~ msgid "Key for toggling fullscreen mode." -#~ msgstr "全画面表示モードを切り替えるためのキーです。" - -#~ msgid "Key for toggling noclip mode." -#~ msgstr "すり抜けモードを切り替えるためのキーです。" - -#~ msgid "Key for toggling pitch move mode." -#~ msgstr "ピッチ移動モードを切り替えるためのキーです。" - -#~ msgid "Key for toggling the display of chat." -#~ msgstr "チャット表示を切り替えるためのキーです。" - -#~ msgid "Key for toggling the display of debug info." -#~ msgstr "デバッグ情報の表示を切り替えるためのキーです。" - -#~ msgid "Key for toggling the display of fog." -#~ msgstr "霧の表示を切り替えるためのキーです。" - -#~ msgid "Key for toggling the display of the HUD." -#~ msgstr "HUD表示を切り替えるためのキーです。" - -#~ msgid "Key for toggling the display of the large chat console." -#~ msgstr "大型チャットコンソールの表示を切り替えるためのキーです。" - -#~ msgid "Key to use view zoom when possible." -#~ msgstr "可能な限りズームするためのキーです。" - -#~ msgid "Node specular" -#~ msgstr "ノード スペキュラー" +#~ msgid "X Button 2" +#~ msgstr "Xボタン2" diff --git a/po/jbo/luanti.po b/po/jbo/luanti.po index 2c1f3a338..4af1836dd 100644 --- a/po/jbo/luanti.po +++ b/po/jbo/luanti.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Lojban (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-07-11 19:59+0200\n" +"POT-Creation-Date: 2025-09-23 19:19+0200\n" "PO-Revision-Date: 2024-07-10 01:09+0000\n" "Last-Translator: Qimar \n" "Language-Team: Lojban \n" @@ -1213,10 +1213,6 @@ msgstr "" msgid "New" msgstr "Enggal" -#: builtin/mainmenu/tab_local.lua -msgid "No world created or selected!" -msgstr "" - #: builtin/mainmenu/tab_local.lua msgid "Play Game" msgstr "Main Dolanan" @@ -1800,10 +1796,6 @@ msgstr "" msgid "Profiler shown (page %d of %d)" msgstr "" -#: src/client/keycode.cpp -msgid "Apps" -msgstr "" - #: src/client/keycode.cpp msgid "Backspace" msgstr "" @@ -1834,43 +1826,16 @@ msgid "Down Arrow" msgstr "" #: src/client/keycode.cpp -msgid "End" +msgid "End Key" msgstr "" #: src/client/keycode.cpp -msgid "Erase EOF" -msgstr "" +#, fuzzy +msgid "Help Key" +msgstr "Delete" #: src/client/keycode.cpp -msgid "Execute" -msgstr "" - -#: src/client/keycode.cpp -msgid "Help" -msgstr "Pitulungan" - -#: 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" +msgid "Home Key" msgstr "" #: src/client/keycode.cpp @@ -1882,7 +1847,7 @@ msgid "Left Arrow" msgstr "" #: src/client/keycode.cpp -msgid "Left Button" +msgid "Left Click" msgstr "" #: src/client/keycode.cpp @@ -1897,17 +1862,25 @@ msgstr "" msgid "Left Shift" msgstr "" +#. ~ Name of key #: src/client/keycode.cpp msgid "Left Windows" msgstr "" -#. ~ Key name, common on Windows keyboards #: src/client/keycode.cpp msgid "Menu Key" msgstr "" #: src/client/keycode.cpp -msgid "Middle Button" +msgid "Middle Click" +msgstr "" + +#: src/client/keycode.cpp +msgid "Mouse X1" +msgstr "" + +#: src/client/keycode.cpp +msgid "Mouse X2" msgstr "" #: src/client/keycode.cpp @@ -1974,10 +1947,6 @@ msgstr "" msgid "Numpad 9" msgstr "" -#: src/client/keycode.cpp -msgid "OEM Clear" -msgstr "" - #: src/client/keycode.cpp msgid "Page Down" msgstr "" @@ -2009,7 +1978,7 @@ msgid "Right Arrow" msgstr "" #: src/client/keycode.cpp -msgid "Right Button" +msgid "Right Click" msgstr "" #: src/client/keycode.cpp @@ -2024,6 +1993,7 @@ msgstr "" msgid "Right Shift" msgstr "" +#. ~ Name of key #: src/client/keycode.cpp msgid "Right Windows" msgstr "" @@ -2032,47 +2002,27 @@ msgstr "" msgid "Scroll Lock" msgstr "" -#. ~ Key name #: src/client/keycode.cpp -msgid "Select" -msgstr "" +#, fuzzy +msgid "Select Key" +msgstr "Delete" #: src/client/keycode.cpp msgid "Shift Key" 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" +msgid "Tab Key" msgstr "" #: src/client/keycode.cpp msgid "Up Arrow" msgstr "" -#: src/client/keycode.cpp -msgid "X Button 1" -msgstr "" - -#: src/client/keycode.cpp -msgid "X Button 2" -msgstr "" - -#: src/client/keycode.cpp -msgid "Zoom Key" -msgstr "" - #: src/client/minimap.cpp msgid "Minimap hidden" msgstr "" @@ -2470,12 +2420,11 @@ msgstr "" msgid "" "3D support.\n" "Currently supported:\n" -"- none: no 3d output.\n" -"- anaglyph: cyan/magenta color 3d.\n" -"- interlaced: odd/even line based polarization screen support.\n" -"- topbottom: split screen top/bottom.\n" -"- sidebyside: split screen side by side.\n" -"- crossview: Cross-eyed 3d" +"- none: no 3D output\n" +"- anaglyph: cyan/magenta color 3D\n" +"- topbottom: split screen top/bottom\n" +"- sidebyside: split screen side-by-side\n" +"- crossview: cross-eyed 3D" msgstr "" #: src/settings_translation_file.cpp @@ -2796,6 +2745,17 @@ msgstr "" msgid "Camera smoothing in cinematic mode" msgstr "" +#: src/settings_translation_file.cpp +msgid "Capture Tracy zones" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Capture Tracy zones with the profiler's instrumentation.\n" +"You need to build with Tracy to use this, see doc/developing/profiling.md\n" +"for details." +msgstr "" + #: src/settings_translation_file.cpp msgid "Cave noise" msgstr "" @@ -3276,6 +3236,10 @@ msgstr "" msgid "Developer Options" msgstr "" +#: src/settings_translation_file.cpp +msgid "Disable if you only want to instrument with Tracy." +msgstr "" + #: src/settings_translation_file.cpp msgid "Disallow empty passwords" msgstr "" @@ -4954,6 +4918,10 @@ msgstr "" msgid "Maximum users" msgstr "" +#: src/settings_translation_file.cpp +msgid "Measure time samples" +msgstr "" + #: src/settings_translation_file.cpp msgid "Message of the day" msgstr "" @@ -6820,3 +6788,6 @@ msgstr "" #: src/settings_translation_file.cpp msgid "cURL parallel limit" msgstr "" + +#~ msgid "Help" +#~ msgstr "Pitulungan" diff --git a/po/kab/luanti.po b/po/kab/luanti.po index 4a71329cd..9c5570e76 100644 --- a/po/kab/luanti.po +++ b/po/kab/luanti.po @@ -7,9 +7,9 @@ msgid "" msgstr "" "Project-Id-Version: luanti\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-07-11 19:59+0200\n" -"PO-Revision-Date: 2025-06-17 07:01+0000\n" -"Last-Translator: ButterflyOfFire \n" +"POT-Creation-Date: 2025-09-23 19:19+0200\n" +"PO-Revision-Date: 2025-08-02 09:02+0000\n" +"Last-Translator: Krock \n" "Language-Team: Kabyle \n" "Language: kab\n" @@ -17,7 +17,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" -"X-Generator: Weblate 5.12.1\n" +"X-Generator: Weblate 5.13-dev\n" #: builtin/client/chatcommands.lua msgid "Clear the out chat queue" @@ -1202,10 +1202,6 @@ msgstr "" msgid "New" msgstr "" -#: builtin/mainmenu/tab_local.lua -msgid "No world created or selected!" -msgstr "" - #: builtin/mainmenu/tab_local.lua msgid "Play Game" msgstr "" @@ -1785,10 +1781,6 @@ msgstr "" msgid "Profiler shown (page %d of %d)" msgstr "" -#: src/client/keycode.cpp -msgid "Apps" -msgstr "" - #: src/client/keycode.cpp msgid "Backspace" msgstr "" @@ -1819,43 +1811,15 @@ msgid "Down Arrow" msgstr "" #: src/client/keycode.cpp -msgid "End" +msgid "End Key" msgstr "" #: src/client/keycode.cpp -msgid "Erase EOF" +msgid "Help Key" 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" +msgid "Home Key" msgstr "" #: src/client/keycode.cpp @@ -1867,7 +1831,7 @@ msgid "Left Arrow" msgstr "" #: src/client/keycode.cpp -msgid "Left Button" +msgid "Left Click" msgstr "" #: src/client/keycode.cpp @@ -1882,17 +1846,25 @@ msgstr "" msgid "Left Shift" msgstr "" +#. ~ Name of key #: src/client/keycode.cpp msgid "Left Windows" msgstr "" -#. ~ Key name, common on Windows keyboards #: src/client/keycode.cpp msgid "Menu Key" msgstr "" #: src/client/keycode.cpp -msgid "Middle Button" +msgid "Middle Click" +msgstr "" + +#: src/client/keycode.cpp +msgid "Mouse X1" +msgstr "" + +#: src/client/keycode.cpp +msgid "Mouse X2" msgstr "" #: src/client/keycode.cpp @@ -1959,10 +1931,6 @@ msgstr "" msgid "Numpad 9" msgstr "" -#: src/client/keycode.cpp -msgid "OEM Clear" -msgstr "" - #: src/client/keycode.cpp msgid "Page Down" msgstr "" @@ -1994,7 +1962,7 @@ msgid "Right Arrow" msgstr "" #: src/client/keycode.cpp -msgid "Right Button" +msgid "Right Click" msgstr "" #: src/client/keycode.cpp @@ -2009,6 +1977,7 @@ msgstr "" msgid "Right Shift" msgstr "" +#. ~ Name of key #: src/client/keycode.cpp msgid "Right Windows" msgstr "" @@ -2017,47 +1986,26 @@ msgstr "" msgid "Scroll Lock" msgstr "" -#. ~ Key name #: src/client/keycode.cpp -msgid "Select" +msgid "Select Key" msgstr "" #: src/client/keycode.cpp msgid "Shift Key" 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" +msgid "Tab Key" msgstr "" #: src/client/keycode.cpp msgid "Up Arrow" msgstr "" -#: src/client/keycode.cpp -msgid "X Button 1" -msgstr "" - -#: src/client/keycode.cpp -msgid "X Button 2" -msgstr "" - -#: src/client/keycode.cpp -msgid "Zoom Key" -msgstr "" - #: src/client/minimap.cpp msgid "Minimap hidden" msgstr "" @@ -2287,7 +2235,7 @@ msgstr "" #: src/network/clientpackethandler.cpp src/script/lua_api/l_client.cpp #: src/script/lua_api/l_mainmenu.cpp msgid "LANG_CODE" -msgstr "" +msgstr "kab" #: src/network/clientpackethandler.cpp msgid "" @@ -2449,12 +2397,11 @@ msgstr "" msgid "" "3D support.\n" "Currently supported:\n" -"- none: no 3d output.\n" -"- anaglyph: cyan/magenta color 3d.\n" -"- interlaced: odd/even line based polarization screen support.\n" -"- topbottom: split screen top/bottom.\n" -"- sidebyside: split screen side by side.\n" -"- crossview: Cross-eyed 3d" +"- none: no 3D output\n" +"- anaglyph: cyan/magenta color 3D\n" +"- topbottom: split screen top/bottom\n" +"- sidebyside: split screen side-by-side\n" +"- crossview: cross-eyed 3D" msgstr "" #: src/settings_translation_file.cpp @@ -2775,6 +2722,17 @@ msgstr "" msgid "Camera smoothing in cinematic mode" msgstr "" +#: src/settings_translation_file.cpp +msgid "Capture Tracy zones" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Capture Tracy zones with the profiler's instrumentation.\n" +"You need to build with Tracy to use this, see doc/developing/profiling.md\n" +"for details." +msgstr "" + #: src/settings_translation_file.cpp msgid "Cave noise" msgstr "" @@ -3255,6 +3213,10 @@ msgstr "" msgid "Developer Options" msgstr "" +#: src/settings_translation_file.cpp +msgid "Disable if you only want to instrument with Tracy." +msgstr "" + #: src/settings_translation_file.cpp msgid "Disallow empty passwords" msgstr "" @@ -4932,6 +4894,10 @@ msgstr "" msgid "Maximum users" msgstr "" +#: src/settings_translation_file.cpp +msgid "Measure time samples" +msgstr "" + #: src/settings_translation_file.cpp msgid "Message of the day" msgstr "" diff --git a/po/kk/luanti.po b/po/kk/luanti.po index 64d1148b2..bd791de10 100644 --- a/po/kk/luanti.po +++ b/po/kk/luanti.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Kazakh (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-07-11 19:59+0200\n" +"POT-Creation-Date: 2025-09-23 19:19+0200\n" "PO-Revision-Date: 2025-07-07 21:02+0000\n" "Last-Translator: \"Hezem \\\"Human\\\"\" \n" "Language-Team: Kazakh , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: luanti\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-09-23 19:19+0200\n" +"PO-Revision-Date: 2025-09-11 08:02+0000\n" +"Last-Translator: Killercat103 \n" +"Language-Team: Kurdish (Northern) \n" +"Language: kmr\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 5.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/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 (-t: output in chat)" +msgstr "" + +#: builtin/common/chatcommands.lua +msgid "" +"Use '.help ' to get more information, or '.help all' to list everything." +msgstr "" + +#: builtin/common/chatcommands.lua +msgid "[all | ] [-t]" +msgstr "" + +#: builtin/common/settings/components.lua +msgid "Browse" +msgstr "" + +#: builtin/common/settings/components.lua +msgid "Conflicts with \"$1\"" +msgstr "" + +#: builtin/common/settings/components.lua +msgid "Edit" +msgstr "" + +#: builtin/common/settings/components.lua +msgid "Remove keybinding" +msgstr "" + +#: builtin/common/settings/components.lua +msgid "Select directory" +msgstr "" + +#: builtin/common/settings/components.lua +msgid "Select file" +msgstr "" + +#: builtin/common/settings/components.lua +msgid "Set" +msgstr "" + +#: builtin/common/settings/dlg_change_mapgen_flags.lua +msgid "(No description of setting given)" +msgstr "" + +#: builtin/common/settings/dlg_change_mapgen_flags.lua +msgid "2D Noise" +msgstr "" + +#: builtin/common/settings/dlg_change_mapgen_flags.lua +#: builtin/mainmenu/content/dlg_install.lua +#: builtin/mainmenu/content/dlg_overwrite.lua +#: builtin/mainmenu/dlg_config_world.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 src/gui/guiOpenURL.cpp +#: src/gui/guiPasswordChange.cpp +msgid "Cancel" +msgstr "Betal" + +#: builtin/common/settings/dlg_change_mapgen_flags.lua +msgid "Lacunarity" +msgstr "" + +#: builtin/common/settings/dlg_change_mapgen_flags.lua +msgid "Octaves" +msgstr "" + +#: builtin/common/settings/dlg_change_mapgen_flags.lua +#: src/settings_translation_file.cpp +msgid "Offset" +msgstr "" + +#: builtin/common/settings/dlg_change_mapgen_flags.lua +msgid "Persistence" +msgstr "" + +#: builtin/common/settings/dlg_change_mapgen_flags.lua +#: builtin/mainmenu/dlg_config_world.lua +msgid "Save" +msgstr "Tomar bike" + +#: builtin/common/settings/dlg_change_mapgen_flags.lua +#: src/settings_translation_file.cpp +msgid "Scale" +msgstr "" + +#: builtin/common/settings/dlg_change_mapgen_flags.lua +#: builtin/mainmenu/dlg_create_world.lua +msgid "Seed" +msgstr "" + +#: builtin/common/settings/dlg_change_mapgen_flags.lua +msgid "X spread" +msgstr "" + +#: builtin/common/settings/dlg_change_mapgen_flags.lua +msgid "Y spread" +msgstr "" + +#: builtin/common/settings/dlg_change_mapgen_flags.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 +#. the settings menu. +#: builtin/common/settings/dlg_change_mapgen_flags.lua +msgid "absvalue" +msgstr "" + +#. ~ "defaults" is a noise parameter flag. +#. It describes the default processing options +#. for noise settings in the settings menu. +#: builtin/common/settings/dlg_change_mapgen_flags.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 +#. the settings menu. +#: builtin/common/settings/dlg_change_mapgen_flags.lua +msgid "eased" +msgstr "" + +#: builtin/common/settings/dlg_settings.lua +msgid "(The game will need to enable automatic exposure as well)" +msgstr "" + +#: builtin/common/settings/dlg_settings.lua +msgid "(The game will need to enable bloom as well)" +msgstr "" + +#: builtin/common/settings/dlg_settings.lua +msgid "(The game will need to enable volumetric lighting as well)" +msgstr "" + +#: builtin/common/settings/dlg_settings.lua +msgid "(Use system language)" +msgstr "" + +#: builtin/common/settings/dlg_settings.lua +msgid "Accessibility" +msgstr "" + +#: builtin/common/settings/dlg_settings.lua +msgid "Auto" +msgstr "Otomatîk" + +#: builtin/common/settings/dlg_settings.lua +#: builtin/mainmenu/content/dlg_contentdb.lua +#: builtin/mainmenu/content/dlg_package.lua src/gui/guiVolumeChange.cpp +msgid "Back" +msgstr "" + +#: builtin/common/settings/dlg_settings.lua +msgid "Buttons with crosshair" +msgstr "" + +#: builtin/common/settings/dlg_settings.lua src/gui/touchscreenlayout.cpp +#: src/settings_translation_file.cpp +msgid "Chat" +msgstr "Çet" + +#: builtin/common/settings/dlg_settings.lua builtin/mainmenu/tab_online.lua +msgid "Clear" +msgstr "" + +#: builtin/common/settings/dlg_settings.lua src/settings_translation_file.cpp +msgid "Controls" +msgstr "" + +#: builtin/common/settings/dlg_settings.lua +#: builtin/common/settings/shadows_component.lua +msgid "Disabled" +msgstr "Neçalak" + +#: builtin/common/settings/dlg_settings.lua +msgid "Enabled" +msgstr "Çalak" + +#: builtin/common/settings/dlg_settings.lua src/settings_translation_file.cpp +msgid "General" +msgstr "" + +#: builtin/common/settings/dlg_settings.lua +msgid "Long tap" +msgstr "" + +#: builtin/common/settings/dlg_settings.lua +msgid "Movement" +msgstr "" + +#: builtin/common/settings/dlg_settings.lua +#: builtin/mainmenu/content/dlg_contentdb.lua +msgid "No results" +msgstr "" + +#: builtin/common/settings/dlg_settings.lua +msgid "Reset setting to default" +msgstr "" + +#: builtin/common/settings/dlg_settings.lua +msgid "Reset setting to default ($1)" +msgstr "" + +#: builtin/common/settings/dlg_settings.lua builtin/mainmenu/tab_online.lua +msgid "Search" +msgstr "Bigere" + +#: builtin/common/settings/dlg_settings.lua +msgid "Short tap" +msgstr "" + +#: builtin/common/settings/dlg_settings.lua +msgid "Show advanced settings" +msgstr "" + +#: builtin/common/settings/dlg_settings.lua +msgid "Show technical names" +msgstr "" + +#: builtin/common/settings/dlg_settings.lua +msgid "Tap" +msgstr "" + +#: builtin/common/settings/dlg_settings.lua +msgid "Tap with crosshair" +msgstr "" + +#: builtin/common/settings/dlg_settings.lua +msgid "Touchscreen layout" +msgstr "" + +#: builtin/common/settings/settingtypes.lua +msgid "Client Mods" +msgstr "" + +#: builtin/common/settings/settingtypes.lua +msgid "Content: Games" +msgstr "" + +#: builtin/common/settings/settingtypes.lua +msgid "Content: Mods" +msgstr "" + +#: builtin/common/settings/shadows_component.lua +msgid "(The game will need to enable shadows as well)" +msgstr "" + +#: builtin/common/settings/shadows_component.lua +msgid "Custom" +msgstr "" + +#: builtin/common/settings/shadows_component.lua +#: src/settings_translation_file.cpp +msgid "Dynamic shadows" +msgstr "" + +#: builtin/common/settings/shadows_component.lua +msgid "High" +msgstr "" + +#: builtin/common/settings/shadows_component.lua +msgid "Low" +msgstr "" + +#: builtin/common/settings/shadows_component.lua +msgid "Medium" +msgstr "" + +#: builtin/common/settings/shadows_component.lua +msgid "Very High" +msgstr "" + +#: builtin/common/settings/shadows_component.lua +msgid "Very Low" +msgstr "" + +#: builtin/fstk/ui.lua +msgid "" +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 "OK" +msgstr "Temam" + +#: builtin/fstk/ui.lua +msgid "Reconnect" +msgstr "" + +#: builtin/fstk/ui.lua +msgid "The server has requested a reconnect:" +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 "We only support protocol version $1." +msgstr "" + +#: builtin/mainmenu/common.lua +msgid "We support protocol versions between version $1 and $2." +msgstr "" + +#: builtin/mainmenu/content/contentdb.lua +msgid "Error installing \"$1\": $2" +msgstr "" + +#: builtin/mainmenu/content/contentdb.lua +msgid "Failed to download \"$1\"" +msgstr "" + +#: builtin/mainmenu/content/contentdb.lua +msgid "Failed to download $1" +msgstr "" + +#: builtin/mainmenu/content/contentdb.lua +msgid "" +"Failed to extract \"$1\" (insufficient disk space, unsupported file type or " +"broken archive)" +msgstr "" + +#: builtin/mainmenu/content/dlg_contentdb.lua +msgid "" +"$1 downloading,\n" +"$2 queued" +msgstr "" + +#: builtin/mainmenu/content/dlg_contentdb.lua +msgid "$1 downloading..." +msgstr "" + +#: builtin/mainmenu/content/dlg_contentdb.lua +msgid "All" +msgstr "" + +#: builtin/mainmenu/content/dlg_contentdb.lua +msgid "ContentDB is not available when Luanti was compiled without cURL" +msgstr "" + +#: builtin/mainmenu/content/dlg_contentdb.lua +msgid "Downloading..." +msgstr "Tê daxistin..." + +#: builtin/mainmenu/content/dlg_contentdb.lua +msgid "Featured" +msgstr "" + +#: builtin/mainmenu/content/dlg_contentdb.lua +msgid "Games" +msgstr "Yariyin" + +#: builtin/mainmenu/content/dlg_contentdb.lua +#: builtin/mainmenu/content/dlg_install.lua +#: builtin/mainmenu/content/dlg_package.lua builtin/mainmenu/serverlistmgr.lua +#: src/client/game.cpp +msgid "Loading..." +msgstr "Tê barkirin..." + +#: builtin/mainmenu/content/dlg_contentdb.lua +msgid "Mods" +msgstr "" + +#: builtin/mainmenu/content/dlg_contentdb.lua +msgid "No packages could be retrieved" +msgstr "" + +#: builtin/mainmenu/content/dlg_contentdb.lua +msgid "No updates" +msgstr "" + +#: builtin/mainmenu/content/dlg_contentdb.lua +msgid "Queued" +msgstr "" + +#: builtin/mainmenu/content/dlg_contentdb.lua +msgid "Texture Packs" +msgstr "" + +#: builtin/mainmenu/content/dlg_contentdb.lua +msgid "The package $1 was not found." +msgstr "" + +#: builtin/mainmenu/content/dlg_contentdb.lua +msgid "Update All [$1]" +msgstr "" + +#: builtin/mainmenu/content/dlg_install.lua +msgid "$1 and $2 dependencies will be installed." +msgstr "" + +#: builtin/mainmenu/content/dlg_install.lua +msgid "$1 by $2" +msgstr "" + +#: builtin/mainmenu/content/dlg_install.lua +msgid "$1 required dependencies could not be found." +msgstr "" + +#: builtin/mainmenu/content/dlg_install.lua +msgid "$1 will be installed, and $2 dependencies will be skipped." +msgstr "" + +#: builtin/mainmenu/content/dlg_install.lua +msgid "Already installed" +msgstr "" + +#: builtin/mainmenu/content/dlg_install.lua +msgid "Base Game:" +msgstr "" + +#: builtin/mainmenu/content/dlg_install.lua +#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/tab_content.lua +msgid "Dependencies:" +msgstr "" + +#: builtin/mainmenu/content/dlg_install.lua +msgid "Error getting dependencies for package $1" +msgstr "" + +#: builtin/mainmenu/content/dlg_install.lua +#: builtin/mainmenu/content/dlg_package.lua +msgid "Install" +msgstr "Saz Bike" + +#: builtin/mainmenu/content/dlg_install.lua +msgid "Install $1" +msgstr "" + +#: builtin/mainmenu/content/dlg_install.lua +msgid "Install missing dependencies" +msgstr "" + +#: builtin/mainmenu/content/dlg_install.lua +msgid "Not found" +msgstr "" + +#: builtin/mainmenu/content/dlg_install.lua +msgid "Please check that the base game is correct." +msgstr "" + +#: builtin/mainmenu/content/dlg_install.lua +msgid "You need to install a game before you can install a mod" +msgstr "" + +#: builtin/mainmenu/content/dlg_overwrite.lua +msgid "\"$1\" already exists. Would you like to overwrite it?" +msgstr "" + +#: builtin/mainmenu/content/dlg_overwrite.lua +msgid "Overwrite" +msgstr "" + +#: builtin/mainmenu/content/dlg_package.lua +msgid "ContentDB page" +msgstr "" + +#: builtin/mainmenu/content/dlg_package.lua +msgid "Description" +msgstr "Şayes" + +#: builtin/mainmenu/content/dlg_package.lua +msgid "Donate" +msgstr "Xêr kirin" + +#: builtin/mainmenu/content/dlg_package.lua +msgid "Error loading package information" +msgstr "" + +#: builtin/mainmenu/content/dlg_package.lua +msgid "Error loading reviews" +msgstr "" + +#: builtin/mainmenu/content/dlg_package.lua +msgid "Forum Topic" +msgstr "" + +#: builtin/mainmenu/content/dlg_package.lua +msgid "Information" +msgstr "Agahî" + +#: builtin/mainmenu/content/dlg_package.lua +msgid "Install [$1]" +msgstr "" + +#: builtin/mainmenu/content/dlg_package.lua +msgid "Issue Tracker" +msgstr "" + +#: builtin/mainmenu/content/dlg_package.lua +msgid "Reviews" +msgstr "Şirove" + +#: builtin/mainmenu/content/dlg_package.lua +msgid "Source" +msgstr "" + +#: builtin/mainmenu/content/dlg_package.lua +msgid "Translate" +msgstr "Tercime kirin" + +#: builtin/mainmenu/content/dlg_package.lua builtin/mainmenu/tab_content.lua +msgid "Uninstall" +msgstr "" + +#: builtin/mainmenu/content/dlg_package.lua builtin/mainmenu/tab_content.lua +msgid "Update" +msgstr "Rojanekirin" + +#: builtin/mainmenu/content/dlg_package.lua +msgid "Website" +msgstr "Malper" + +#: builtin/mainmenu/content/dlg_package.lua +msgid "by $1" +msgstr "" + +#: builtin/mainmenu/content/dlg_package.lua +msgid "by $1 — $2 downloads — +$3 / $4 / -$5" +msgstr "" + +#: builtin/mainmenu/content/pkgmgr.lua +msgid "$1 (Enabled)" +msgstr "" + +#: builtin/mainmenu/content/pkgmgr.lua +msgid "$1 mods" +msgstr "" + +#: builtin/mainmenu/content/pkgmgr.lua +msgid "Failed to install $1 to $2" +msgstr "" + +#: builtin/mainmenu/content/pkgmgr.lua +msgid "Install: Unable to find suitable folder name for $1" +msgstr "" + +#: builtin/mainmenu/content/pkgmgr.lua +msgid "Unable to find a valid mod, modpack, or game" +msgstr "" + +#: builtin/mainmenu/content/pkgmgr.lua +msgid "Unable to install a $1 as a $2" +msgstr "" + +#: builtin/mainmenu/content/pkgmgr.lua +msgid "Unable to install a $1 as a texture pack" +msgstr "" + +#: builtin/mainmenu/dlg_clients_list.lua +msgid "" +"Players connected to\n" +"$1" +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 +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 +msgid "World:" +msgstr "" + +#: builtin/mainmenu/dlg_config_world.lua +msgid "enabled" +msgstr "çalak" + +#: 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 "Afirandin" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Decorations" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Desert temples" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Development Test is meant for developers." +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "" +"Different dungeon variant generated in desert biomes (only if dungeons " +"enabled)" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Dungeons" +msgstr "Zindanin" + +#: 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 another game" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Lakes" +msgstr "Golin" + +#: 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 "Çiyayin" + +#: 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 "Çemin" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Sea level rivers" +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_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 +msgid "Delete" +msgstr "Jê bibe" + +#: 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_rebind_keys.lua +msgid "As a result, your keybindings may have been changed." +msgstr "" + +#: builtin/mainmenu/dlg_rebind_keys.lua +msgid "Check out the key settings or refer to the documentation:" +msgstr "" + +#: builtin/mainmenu/dlg_rebind_keys.lua +msgid "Close" +msgstr "Bigire" + +#: builtin/mainmenu/dlg_rebind_keys.lua +msgid "Keybindings changed" +msgstr "" + +#: builtin/mainmenu/dlg_rebind_keys.lua +msgid "Open settings" +msgstr "" + +#: builtin/mainmenu/dlg_rebind_keys.lua +msgid "The input handling system was reworked in Luanti 5.12.0." +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 "Nav" + +#: builtin/mainmenu/dlg_register.lua builtin/mainmenu/tab_local.lua +#: builtin/mainmenu/tab_online.lua +msgid "Password" +msgstr "Şîfre" + +#: 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_reinstall_mtg.lua +msgid "Dismiss" +msgstr "" + +#: builtin/mainmenu/dlg_reinstall_mtg.lua +msgid "" +"For a long time, Luanti shipped with a default game called \"Minetest " +"Game\". Since version 5.8.0, Luanti ships without a default game." +msgstr "" + +#: builtin/mainmenu/dlg_reinstall_mtg.lua +msgid "" +"If you want to continue playing in your Minetest Game worlds, you need to " +"reinstall Minetest Game." +msgstr "" + +#: builtin/mainmenu/dlg_reinstall_mtg.lua +msgid "Minetest Game is no longer installed by default" +msgstr "" + +#: builtin/mainmenu/dlg_reinstall_mtg.lua +msgid "Reinstall Minetest Game" +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_server_list_mods.lua +msgid "Expand all" +msgstr "" + +#: builtin/mainmenu/dlg_server_list_mods.lua +msgid "Group by prefix" +msgstr "" + +#: builtin/mainmenu/dlg_server_list_mods.lua +msgid "The $1 server uses a game called $2 and the following mods:" +msgstr "" + +#: builtin/mainmenu/dlg_server_list_mods.lua +msgid "The $1 server uses the following mods:" +msgstr "" + +#: builtin/mainmenu/dlg_version_info.lua +msgid "A new $1 version is available" +msgstr "" + +#: builtin/mainmenu/dlg_version_info.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/dlg_version_info.lua +msgid "Later" +msgstr "Piştre" + +#: builtin/mainmenu/dlg_version_info.lua +msgid "Never" +msgstr "Qet" + +#: builtin/mainmenu/dlg_version_info.lua +msgid "Visit website" +msgstr "" + +#: builtin/mainmenu/init.lua src/client/game_formspec.cpp +msgid "Settings" +msgstr "Mîheng" + +#: 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 "Derbare" + +#: 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 "Core Team" +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 "Browse online content [$1]" +msgstr "" + +#: builtin/mainmenu/tab_content.lua +msgid "Content" +msgstr "" + +#: builtin/mainmenu/tab_content.lua +msgid "Content [$1]" +msgstr "" + +#: builtin/mainmenu/tab_content.lua +msgid "Disable Texture Pack" +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 "Update available?" +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 a game" +msgstr "" + +#: builtin/mainmenu/tab_local.lua +msgid "Install games from ContentDB" +msgstr "" + +#: builtin/mainmenu/tab_local.lua +msgid "Luanti doesn't come with a game by default." +msgstr "" + +#: builtin/mainmenu/tab_local.lua +msgid "" +"Luanti is a game-creation platform that allows you to play many different " +"games." +msgstr "" + +#: builtin/mainmenu/tab_local.lua +msgid "New" +msgstr "Nû" + +#: 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_local.lua +msgid "You need to install a game before you can create a world." +msgstr "" + +#: builtin/mainmenu/tab_online.lua +msgid "Add favorite" +msgstr "" + +#: builtin/mainmenu/tab_online.lua +msgid "Address" +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 "Game: $1" +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 "Number of mods: $1" +msgstr "" + +#: builtin/mainmenu/tab_online.lua +msgid "Open server website" +msgstr "" + +#: builtin/mainmenu/tab_online.lua +msgid "Ping" +msgstr "" + +#: builtin/mainmenu/tab_online.lua +msgid "" +"Players:\n" +"$1" +msgstr "" + +#: builtin/mainmenu/tab_online.lua +msgid "" +"Possible filters\n" +"game:\n" +"mod:\n" +"player:" +msgstr "" + +#: builtin/mainmenu/tab_online.lua +msgid "Public Servers" +msgstr "" + +#: builtin/mainmenu/tab_online.lua +msgid "Refresh" +msgstr "Nû bike" + +#: builtin/mainmenu/tab_online.lua +msgid "Remove favorite" +msgstr "" + +#: builtin/mainmenu/tab_online.lua +msgid "Server Description" +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 +#, c-format +msgid "Failed to save screenshot to \"%s\"" +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/client.cpp +#, c-format +msgid "Saved screenshot to \"%s\"" +msgstr "" + +#: src/client/clientlauncher.cpp +msgid "Could not find or load game: " +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/clientmedia.cpp src/client/game.cpp +msgid "Media..." +msgstr "" + +#: src/client/game.cpp src/client/shader.cpp src/server.cpp +msgid "" +"\n" +"Check debug.txt for details." +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 "All debug info hidden" +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 current block" +msgstr "" + +#: src/client/game.cpp +msgid "Block bounds shown for nearby blocks" +msgstr "" + +#: src/client/game.cpp +msgid "Bounding boxes shown" +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 game or mod)" +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 error (timed out?)" +msgstr "" + +#: src/client/game.cpp +msgid "Connection failed for unknown reason" +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 shown" +msgstr "" + +#: src/client/game.cpp +#, c-format +msgid "Error creating client: %s" +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 "Fog enabled by game or mod" +msgstr "" + +#: src/client/game.cpp +msgid "Item definitions..." +msgstr "" + +#: src/client/game.cpp +msgid "KiB/s" +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 "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 "Resolving address..." +msgstr "" + +#: src/client/game.cpp +msgid "Shutting down..." +msgstr "" + +#: src/client/game.cpp src/client/game_formspec.cpp +msgid "Singleplayer" +msgstr "" + +#: src/client/game.cpp +msgid "Sound muted" +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 +msgid "Unlimited viewing range disabled" +msgstr "" + +#: src/client/game.cpp +msgid "Unlimited viewing range enabled" +msgstr "" + +#: src/client/game.cpp +msgid "Unlimited viewing range enabled, but forbidden by game or mod" +msgstr "" + +#: src/client/game.cpp +#, c-format +msgid "Viewing changed to %d (the minimum)" +msgstr "" + +#: src/client/game.cpp +#, c-format +msgid "Viewing changed to %d (the minimum), but limited to %d by game or mod" +msgstr "" + +#: src/client/game.cpp +#, c-format +msgid "Viewing range changed to %d" +msgstr "" + +#: src/client/game.cpp +#, c-format +msgid "Viewing range changed to %d (the maximum)" +msgstr "" + +#: src/client/game.cpp +#, c-format +msgid "" +"Viewing range changed to %d (the maximum), but limited to %d by game or mod" +msgstr "" + +#: src/client/game.cpp +#, c-format +msgid "Viewing range changed to %d, but limited to %d by game or mod" +msgstr "" + +#: src/client/game.cpp +#, c-format +msgid "Volume changed to %d%%" +msgstr "" + +#: src/client/game.cpp +msgid "Wireframe not supported by video driver" +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_formspec.cpp +msgid "- Mode: " +msgstr "" + +#: src/client/game_formspec.cpp +msgid "- Public: " +msgstr "" + +#. ~ PvP = Player versus Player +#: src/client/game_formspec.cpp +msgid "- PvP: " +msgstr "" + +#: src/client/game_formspec.cpp +msgid "- Server Name: " +msgstr "" + +#: src/client/game_formspec.cpp +msgid "Change Password" +msgstr "" + +#: src/client/game_formspec.cpp +msgid "Continue" +msgstr "" + +#: src/client/game_formspec.cpp +msgid "" +"Controls:\n" +"No menu open:\n" +"- slide finger: look around\n" +"- tap: place/punch/use (default)\n" +"- long tap: dig/use (default)\n" +"Menu/inventory open:\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_formspec.cpp +msgid "Exit to Menu" +msgstr "" + +#: src/client/game_formspec.cpp +msgid "Exit to OS" +msgstr "" + +#: src/client/game_formspec.cpp +msgid "Game info:" +msgstr "" + +#: src/client/game_formspec.cpp +msgid "Game paused" +msgstr "" + +#: src/client/game_formspec.cpp +msgid "Hosting server" +msgstr "" + +#: src/client/game_formspec.cpp +msgid "Off" +msgstr "Girtî" + +#: src/client/game_formspec.cpp +msgid "On" +msgstr "Vekirî" + +#: src/client/game_formspec.cpp +msgid "Remote server" +msgstr "" + +#: src/client/game_formspec.cpp +msgid "Respawn" +msgstr "" + +#: src/client/game_formspec.cpp +msgid "Sound Volume" +msgstr "" + +#: src/client/game_formspec.cpp +msgid "You died" +msgstr "" + +#: src/client/gameui.cpp +msgid "Chat currently disabled by game or mod" +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 "Backspace" +msgstr "" + +#. ~ Usually paired with the Pause key +#: src/client/keycode.cpp +msgid "Break Key" +msgstr "" + +#: src/client/keycode.cpp +msgid "Caps Lock" +msgstr "" + +#: src/client/keycode.cpp +msgid "Clear Key" +msgstr "" + +#: src/client/keycode.cpp +msgid "Control Key" +msgstr "" + +#: src/client/keycode.cpp +msgid "Delete Key" +msgstr "" + +#: src/client/keycode.cpp +msgid "Down Arrow" +msgstr "" + +#: src/client/keycode.cpp +msgid "End Key" +msgstr "" + +#: src/client/keycode.cpp +msgid "Help Key" +msgstr "" + +#: src/client/keycode.cpp +msgid "Home Key" +msgstr "" + +#: src/client/keycode.cpp +msgid "Insert" +msgstr "" + +#: src/client/keycode.cpp +msgid "Left Arrow" +msgstr "" + +#: src/client/keycode.cpp +msgid "Left Click" +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 "" + +#. ~ Name of key +#: src/client/keycode.cpp +msgid "Left Windows" +msgstr "" + +#: src/client/keycode.cpp +msgid "Menu Key" +msgstr "" + +#: src/client/keycode.cpp +msgid "Middle Click" +msgstr "" + +#: src/client/keycode.cpp +msgid "Mouse X1" +msgstr "" + +#: src/client/keycode.cpp +msgid "Mouse X2" +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 "Page Down" +msgstr "" + +#: src/client/keycode.cpp +msgid "Page Up" +msgstr "" + +#. ~ Usually paired with the Break key +#: src/client/keycode.cpp +msgid "Pause Key" +msgstr "" + +#: src/client/keycode.cpp +msgid "Play" +msgstr "" + +#. ~ "Print screen" key +#: src/client/keycode.cpp +msgid "Print" +msgstr "" + +#: src/client/keycode.cpp +msgid "Return Key" +msgstr "" + +#: src/client/keycode.cpp +msgid "Right Arrow" +msgstr "" + +#: src/client/keycode.cpp +msgid "Right Click" +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 "" + +#. ~ Name of key +#: src/client/keycode.cpp +msgid "Right Windows" +msgstr "" + +#: src/client/keycode.cpp +msgid "Scroll Lock" +msgstr "" + +#: src/client/keycode.cpp +msgid "Select Key" +msgstr "" + +#: src/client/keycode.cpp +msgid "Shift Key" +msgstr "" + +#: src/client/keycode.cpp +msgid "Space" +msgstr "" + +#: src/client/keycode.cpp +msgid "Tab Key" +msgstr "" + +#: src/client/keycode.cpp +msgid "Up Arrow" +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/client/shader.cpp +#, c-format +msgid "Failed to compile the \"%s\" shader." +msgstr "" + +#: src/client/shader.cpp +msgid "GLSL is not supported by the driver" +msgstr "" + +#. ~ Error when a mod is missing dependencies. Ex: "Mod Title is missing: mod1, mod2, mod3" +#: src/content/mod_configuration.cpp +#, c-format +msgid "%s is missing:" +msgstr "" + +#: src/content/mod_configuration.cpp +msgid "" +"Install and enable the required mods, or disable the mods causing errors." +msgstr "" + +#: src/content/mod_configuration.cpp +msgid "" +"Note: this may be caused by a dependency cycle, in which case try updating " +"the mods." +msgstr "" + +#: src/content/mod_configuration.cpp +msgid "Some mods have unsatisfied dependencies:" +msgstr "" + +#: src/gui/guiButtonKey.h +msgid "Press Button" +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/guiOpenURL.cpp +msgid "Open" +msgstr "Vekirin" + +#: src/gui/guiOpenURL.cpp +msgid "Open URL?" +msgstr "" + +#: src/gui/guiOpenURL.cpp +msgid "Unable to open URL" +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 "Muted" +msgstr "" + +#: src/gui/guiVolumeChange.cpp +#, c-format +msgid "Sound Volume: %d%%" +msgstr "" + +#: src/gui/touchscreeneditor.cpp +msgid "Add button" +msgstr "" + +#: src/gui/touchscreeneditor.cpp +msgid "Done" +msgstr "" + +#: src/gui/touchscreeneditor.cpp +msgid "Remove" +msgstr "" + +#: src/gui/touchscreeneditor.cpp +msgid "Reset" +msgstr "" + +#: src/gui/touchscreeneditor.cpp +msgid "Start dragging a button to add. Tap outside to cancel." +msgstr "" + +#: src/gui/touchscreeneditor.cpp +msgid "Tap a button to select it. Drag a button to move it." +msgstr "" + +#: src/gui/touchscreeneditor.cpp +msgid "Tap outside to deselect." +msgstr "" + +#: src/gui/touchscreenlayout.cpp src/settings_translation_file.cpp +msgid "Aux1" +msgstr "" + +#: src/gui/touchscreenlayout.cpp +msgid "Change camera" +msgstr "" + +#: src/gui/touchscreenlayout.cpp src/settings_translation_file.cpp +msgid "Dig/punch/use" +msgstr "" + +#: src/gui/touchscreenlayout.cpp +msgid "Drop" +msgstr "Bixe" + +#: src/gui/touchscreenlayout.cpp +msgid "Exit" +msgstr "Derkeve" + +#: src/gui/touchscreenlayout.cpp +msgid "Inventory" +msgstr "" + +#: src/gui/touchscreenlayout.cpp +msgid "Joystick" +msgstr "" + +#: src/gui/touchscreenlayout.cpp src/settings_translation_file.cpp +msgid "Jump" +msgstr "Xwe hilavêtin" + +#: src/gui/touchscreenlayout.cpp +msgid "Overflow menu" +msgstr "" + +#: src/gui/touchscreenlayout.cpp src/settings_translation_file.cpp +msgid "Place/use" +msgstr "" + +#: src/gui/touchscreenlayout.cpp +msgid "Range select" +msgstr "" + +#: src/gui/touchscreenlayout.cpp src/settings_translation_file.cpp +msgid "Sneak" +msgstr "" + +#: src/gui/touchscreenlayout.cpp src/settings_translation_file.cpp +msgid "Toggle chat log" +msgstr "" + +#: src/gui/touchscreenlayout.cpp +msgid "Toggle debug" +msgstr "" + +#: src/gui/touchscreenlayout.cpp src/settings_translation_file.cpp +msgid "Toggle fast" +msgstr "" + +#: src/gui/touchscreenlayout.cpp src/settings_translation_file.cpp +msgid "Toggle fly" +msgstr "" + +#: src/gui/touchscreenlayout.cpp src/settings_translation_file.cpp +msgid "Toggle minimap" +msgstr "" + +#: src/gui/touchscreenlayout.cpp src/settings_translation_file.cpp +msgid "Toggle noclip" +msgstr "" + +#: src/gui/touchscreenlayout.cpp src/settings_translation_file.cpp +msgid "Zoom" +msgstr "Zûm" + +#: src/network/clientpackethandler.cpp +msgid "" +"Another client is connected with this name. If your client closed " +"unexpectedly, try again in a minute." +msgstr "" + +#: src/network/clientpackethandler.cpp +msgid "Empty passwords are disallowed. Set a password and try again." +msgstr "" + +#: src/network/clientpackethandler.cpp +msgid "Internal server error" +msgstr "" + +#: src/network/clientpackethandler.cpp +msgid "Invalid password" +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 +#: src/script/lua_api/l_mainmenu.cpp +msgid "LANG_CODE" +msgstr "kmr" + +#: 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/network/clientpackethandler.cpp +msgid "Player name contains disallowed characters" +msgstr "" + +#: src/network/clientpackethandler.cpp +msgid "Player name not allowed" +msgstr "" + +#: src/network/clientpackethandler.cpp +msgid "Server shutting down" +msgstr "" + +#: src/network/clientpackethandler.cpp +msgid "" +"The server has experienced an internal error. You will now be disconnected." +msgstr "" + +#: src/network/clientpackethandler.cpp +msgid "The server is running in singleplayer mode. You cannot connect." +msgstr "" + +#: src/network/clientpackethandler.cpp +msgid "Too many users" +msgstr "" + +#: src/network/clientpackethandler.cpp +msgid "Unknown disconnect reason." +msgstr "" + +#: src/network/clientpackethandler.cpp +msgid "" +"Your client sent something the server didn't expect. Try reconnecting or " +"updating your client." +msgstr "" + +#: src/network/clientpackethandler.cpp +msgid "" +"Your client's version is not supported.\n" +"Please contact the server administrator." +msgstr "" + +#: src/server.cpp +#, c-format +msgid "%s while shutting down: " +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" +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" +"- topbottom: split screen top/bottom\n" +"- sidebyside: split screen side-by-side\n" +"- crossview: cross-eyed 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 "Adjust the detected display density, used for scaling UI elements." +msgstr "" + +#: src/settings_translation_file.cpp +#, no-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 "" +"All mesh buffers with less than this number of vertices will be merged\n" +"during map rendering. This improves rendering performance." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Allow clouds to look 3D instead of flat." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Allows liquids to be translucent." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Also used for climbing down and descending in water if aux1_descends is " +"disabled." +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 "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 "Anti-aliasing scale" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Antialiasing method" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Anticheat flags" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Anticheat movement tolerance" +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 "" +"Apply dithering to reduce color banding artifacts.\n" +"Dithering significantly increases the size of losslessly-compressed\n" +"screenshots and it works incorrectly if the display or operating system\n" +"performs additional dithering or if the color channels are not quantized\n" +"to 8 bits.\n" +"With OpenGL ES, dithering only works if the shader supports high\n" +"floating-point precision and it may have a higher performance impact." +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 might not be rendered correctly in caves).\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 "" +"At this distance the server will perform a simpler and cheaper occlusion " +"check.\n" +"Smaller values potentially improve performance, at the expense of " +"temporarily visible\n" +"rendering glitches (missing blocks).\n" +"This is especially useful for very large viewing range (upwards of 500).\n" +"Stated in MapBlocks (16 nodes)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Audio" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Automatic jumping" +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 "Autoscaling mode" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Aux1 key for climbing/descending" +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 "Base texture size" +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" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Biome noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Block bounds HUD radius" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Block cull optimize distance" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Block send optimize distance" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Bobbing" +msgstr "Bihejîne" + +#: 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 smoothing" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Camera smoothing in cinematic mode" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Capture Tracy zones" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Capture Tracy zones with the profiler's instrumentation.\n" +"You need to build with Tracy to use this, see doc/developing/profiling.md\n" +"for details." +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 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 weblinks" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Chunk size" +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 Debugging" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Client Mesh Chunksize" +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 Modding" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Client-side node lookup range restriction" +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 "Ewrin" + +#: src/settings_translation_file.cpp +msgid "Clouds in menu" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Color depth for post-processing texture" +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 AL and ALC extensions that should not be used.\n" +"Useful for testing. See al_extensions.[h,cpp] for details." +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 Luanti versions,\n" +"so see a full list at https://content.luanti.org/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" +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 "" +"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 "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 "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 "" +"Decide the color depth of the texture used for the post-processing " +"pipeline.\n" +"Reducing this can improve performance, but some effects (e.g. debanding)\n" +"require more than 8 bits to work." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Decrease view range" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Decrease volume" +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 maximum number of forceloaded mapblocks.\n" +"Set this to -1 to disable the limit." +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 "" +"Define the oldest clients allowed to connect.\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.\n" +"This allows for more fine-grained control than " +"strict_protocol_version_checking.\n" +"Luanti still enforces its own internal minimum, and enabling\n" +"strict_protocol_version_checking will effectively override this." +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 size of the sampling grid for FSAA and SSAA antialiasing " +"methods.\n" +"Value of 2 means taking 2x2 = 4 samples." +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, which can help reduce jitter." +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 "Developer Options" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Disable if you only want to instrument with Tracy." +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.\n" +"Set to 0 to disable it entirely." +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 "" +"Draw transparency sorted triangles grouped by their mesh buffers.\n" +"This breaks transparency sorting between mesh buffers, but avoids " +"situations\n" +"where transparency sorting would be very slow otherwise." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Drop item" +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 "Effects" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Enable Automatic Exposure" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Enable Bloom" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Enable Bloom Debug" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Enable Debanding" +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 IPv6 support for server.\n" +"Note that clients will be able to connect with both IPv4 and IPv6.\n" +"Ignored if bind_address is set." +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 Post Processing" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Enable Raytraced Culling" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Enable automatic exposure correction\n" +"When enabled, the post-processing engine will\n" +"automatically adjust to the brightness of the scene,\n" +"simulating the behavior of human eye." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Enable colored shadows for transculent nodes.\n" +"This is expensive." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Enable console window" +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 mouse wheel (scroll) for item selection in hotbar." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Enable random mod loading (mainly used for testing)." +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." +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 updates available indicator on content tab" +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 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 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 debug and error-checking in the OpenGL driver." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Enables smooth scrolling." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Enables the post processing pipeline." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Enables the touchscreen controls, allowing you to play the game with a " +"touchscreen.\n" +"\"auto\" means that the touchscreen controls will be enabled and disabled\n" +"automatically depending on the last used input method." +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 behavior.\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 "Exposure compensation" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "FPS" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "FPS when unfocused" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Factor noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fallback font path" +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 "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 "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 "" +"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 "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 "Fog" +msgstr "Mij" + +#: src/settings_translation_file.cpp +msgid "Fog start" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Font" +msgstr "Font" + +#: 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 Full-Screen Background Color" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Formspec Full-Screen Background Opacity" +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 "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" +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 "Gamepads" +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 "Grafîk" + +#: src/settings_translation_file.cpp +msgid "Graphics and Audio" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Gravity" +msgstr "Rakêş" + +#: 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 "" +"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." +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 slot 1" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 10" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 11" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 12" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 13" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 14" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 15" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 16" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 17" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 18" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 19" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 2" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 20" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 21" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 22" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 23" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 24" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 25" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 26" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 27" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 28" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 29" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 30" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 31" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 32" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 4" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 5" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 6" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 7" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 8" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 9" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar: Enable mouse wheel for selection" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar: Invert mouse wheel direction" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar: select next item" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar: select previous item" +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." +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 and you have ContentDB packages installed, Luanti may contact " +"ContentDB to\n" +"check for package updates when opening the mainmenu." +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, actions are recorded for rollback.\n" +"This option is only read when server starts." +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, players cannot join without a password or change theirs to an " +"empty password." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"If enabled, server account registration is separate from login in the UI.\n" +"If disabled, connecting to a server will automatically register a new " +"account." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "If enabled, the \"Aux1\" key will toggle when pressed." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"If enabled, the \"Sneak\" key will toggle when pressed.\n" +"This functionality is ignored when fly is enabled." +msgstr "" + +#: src/settings_translation_file.cpp +#, no-c-format +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 by 50-80%. Clients will no longer receive most\n" +"invisible blocks, so that the utility of noclip mode is reduced." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"If enabled, you can place nodes 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 +#, no-c-format +msgid "In-game chat console height, between 0.1 (10%) and 1.0 (100%)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Increase view range" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Increase volume" +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 core.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 "Interaction style" +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 "Inventory items animations" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Invert mouse" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Invert mouse wheel (scroll) direction for item selection in hotbar." +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 "Jumping speed" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Key for decrementing the selected value in Quicktune." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for digging, punching or using something.\n" +"(Note: The actual meaning might vary on a per-game basis.)" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Key for incrementing the selected value in Quicktune." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Key for moving fast in fast mode." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Key for opening the chat window to type commands." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Key for opening the chat window to type local commands." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for placing an item/block or for using something.\n" +"(Note: The actual meaning might vary on a per-game basis.)" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Key for switching to the next entry in Quicktune." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Key for switching to the previous entry in Quicktune." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Key for toggling the camera update. Only usable with 'debug' privilege." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Key for toggling the display of mapblock boundaries." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Key for toggling the display of the profiler. Used for development." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Keybindings" +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 "Ziman" + +#: 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 "Leaves style" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Leaves style:\n" +"- Fancy: all faces visible\n" +"- Simple: only outer faces\n" +"- Opaque: disable transparency" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Length of a server tick (the interval at which everything is generally " +"updated),\n" +"stated in seconds.\n" +"Does not apply to sessions hosted from the client menu.\n" +"This is a lower bound, i.e. server steps may not be shorter than this, but\n" +"they are often longer." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Length of liquid waves." +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" +"- (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 reflections" +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 "Local command" +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 "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.\n" +"The 'temples' flag disables generation of desert temples. Normal dungeons " +"will appear instead." +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 generation threads" +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." +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 mapblocks for client to be kept in memory.\n" +"Note that there is an internal dynamic minimum number of blocks that\n" +"won't be deleted, depending on the current view range.\n" +"Set to -1 for no limit." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Maximum number of packets sent per send step in the low-level networking " +"code.\n" +"You generally don't need to change this, however busy servers may benefit " +"from a higher 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 client's outgoing chat queue" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Maximum size of the client's outgoing 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 "Measure time samples" +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 scan height" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Minimum dig repetition interval" +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 vertex count for mesh buffers" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mipmapping" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Miscellaneous" +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 "" +"Modifier key bind for closing your world.\n" +"Requires ESC + the selected key to work." +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 "Move backward" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Move forward" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Move left" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Move right" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Movement threshold" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mud noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mute" +msgstr "Mit kirin" + +#: 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, a client connecting with this name is admin.\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 "" +"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 "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 "Number of messages a player may send per 10 seconds." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Number of threads to use for mesh generation.\n" +"Value of 0 (default) will let Luanti automatically choose the number of " +"threads." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Occlusion Culler" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Occlusion Culling" +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 chat" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Open inventory" +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 "OpenGL debug" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Optimize GUI for touchscreens" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Optional override for chat weblink color." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Other Effects" +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 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 "Fizîk" + +#: src/settings_translation_file.cpp +msgid "Place repetition interval" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Player transfer distance" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Poisson filtering" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Post Processing" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Prevent digging and placing from repeating when holding the respective " +"buttons.\n" +"Enable this when you dig or place too often by accident.\n" +"On touchscreens, this only affects digging." +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 "Prometheus listener address" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Prometheus listener address.\n" +"If Luanti is compiled with Prometheus support, this setting\n" +"enables the metrics listener for Prometheus on that address.\n" +"By default you can fetch metrics from http://127.0.0.1:30000/metrics.\n" +"An empty value disables the metrics listener." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Proportion of large caves that contain liquid." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Protocol version minimum" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Punch gesture" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Quicktune: decrement value" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Quicktune: increment value" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Quicktune: select next entry" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Quicktune: select previous entry" +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 "Radius to use when the block bounds HUD feature is set to near blocks." +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 "Random mod load order" +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 "Remember screen size" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Remote media" +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 "Return to Main Menu" +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 "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 "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.\n" +"If true, screen size is saved in screen_w and screen_h, and whether the " +"window\n" +"is maximized is stored in window_maximized.\n" +"(Autosaving window_maximized only works if compiled with SDL.)" +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 "Dîmender" + +#: 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" +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 "" +"Select the antialiasing method to apply.\n" +"\n" +"* None - No antialiasing (default)\n" +"\n" +"* FSAA - Hardware-provided full-screen antialiasing\n" +"A.K.A multi-sample antialiasing (MSAA)\n" +"Smoothens out block edges but does not affect the insides of textures.\n" +"\n" +"If Post Processing is disabled, changing FSAA requires a restart.\n" +"Also, if Post Processing is disabled, FSAA will not work together with\n" +"undersampling or a non-default \"3d_mode\" setting.\n" +"\n" +"* FXAA - Fast approximate antialiasing\n" +"Applies a post-processing filter to detect and smoothen high-contrast " +"edges.\n" +"Provides balance between speed and image quality.\n" +"\n" +"* SSAA - Super-sampling antialiasing\n" +"Renders higher-resolution image of the scene, then scales down to reduce\n" +"the aliasing effects. This is the slowest and the most accurate method." +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 "" +"Send names of online players to the serverlist. If disabled only the player " +"count is revealed." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Send player names to the server list" +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 anticheat configuration.\n" +"Flags are positive. Uncheck the flag to disable corresponding anticheat " +"module." +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 default tilt of Sun/Moon orbit in degrees.\n" +"Games may change orbit tilt via API.\n" +"Value of 0 means no tilt / vertical orbit." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Set the exposure compensation in EV units.\n" +"Value of 0.0 (default) means no exposure compensation.\n" +"Range: from -1 to 1.0" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Set the language. By default, the system language is used.\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 to true to enable Shadow Mapping." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Set to true to enable bloom effect.\n" +"Bright colors will bleed over the neighboring objects." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Set to true to enable volumetric lighting effect (a.k.a. \"Godrays\")." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Set to true to enable waving leaves." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Set to true to enable waving liquids (like water)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Set to true to enable waving plants." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Set to true to render debugging breakdown of the bloom effect.\n" +"In debug mode, the screen is split into 4 quadrants:\n" +"top-left - processed base image, top-right - final image\n" +"bottom-left - raw base image, bottom-right - bloom texture." +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 "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 "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 "" +"Side length of a cube of map blocks that the client will consider together\n" +"when generating meshes.\n" +"Larger values increase the utilization of the GPU by reducing the number of\n" +"draw calls, benefiting especially high-end GPUs.\n" +"Systems with a low-end GPU (or no GPU) would benefit from smaller values." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Simulate translucency when looking at foliage in the sunlight." +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 "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 "Smooth scrolling" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Smooths rotation of camera when in cinematic mode, 0 to disable. Enter " +"cinematic mode by using the key set in Controls." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Smooths rotation of camera, also called look or mouse smoothing. 0 to " +"disable." +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 clouds" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Soft shadow radius" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Sound" +msgstr "Deng" + +#: src/settings_translation_file.cpp +msgid "Sound Extensions Blacklist" +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 the shadow map over a given number of frames.\n" +"Higher values might make shadows laggy, lower values\n" +"will consume more resources." +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 spawn point" +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, 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 "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 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 delay in milliseconds after which a touch interaction is considered a " +"long tap." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"The file path relative to your world path in which profiles will be saved to." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"The gesture for punching players/entities.\n" +"This can be overridden by games and mods.\n" +"\n" +"* Short tap\n" +"Easy to use and well-known from other games that shall not be named.\n" +"\n" +"* Long tap\n" +"Known from the classic Luanti mobile controls.\n" +"Combat is more or less impossible." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "The identifier of the joystick to use" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"The kind of digging/placing controls used.\n" +"\n" +"* Tap\n" +"Long/short tap anywhere on the screen to interact.\n" +"Interaction happens at finger position.\n" +"\n" +"* Tap with crosshair\n" +"Long/short tap anywhere on the screen to interact.\n" +"Interaction happens at crosshair position.\n" +"\n" +"* Buttons with crosshair\n" +"Use dedicated dig/place buttons to interact.\n" +"Interaction happens at crosshair position." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"The length in pixels after which a touch interaction is considered movement." +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)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"The minimum time in seconds it takes between digging nodes when holding\n" +"the dig button." +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" +"Note: A restart is required after changing this!\n" +"OpenGL is the default for desktop, and OGLES2 for Android." +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 "Threshold for long taps" +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 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 Aux1 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Toggle HUD" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Toggle Sneak key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Toggle automatic forward" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Toggle block bounds" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Toggle camera mode" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Toggle camera update" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Toggle cinematic mode" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Toggle debug info" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Toggle fog" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Toggle fullscreen" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Toggle large chat console" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Toggle pitchmove" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Toggle profiler" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Toggle unlimited view range" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Tolerance of movement cheat detector.\n" +"Increase the value if players experience stuttery movement." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Tooltip delay" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Touchscreen" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Touchscreen controls" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Touchscreen sensitivity" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Touchscreen sensitivity multiplier." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Tradeoffs for performance" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Translucent foliage" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Translucent liquids" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Transparency Sorting Distance" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Transparency Sorting Group by Buffers" +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 "" +"Type of occlusion_culler\n" +"\n" +"\"loops\" is the legacy algorithm with nested loops and O(n³) complexity\n" +"\"bfs\" is the new algorithm based on breadth-first-search and side culling\n" +"\n" +"This setting should only be changed if you have performance problems." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"URL to JSON file which provides information about the newest Luanti " +"release.\n" +"If this is empty the engine will never check for updates." +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.\n" +"Note: Undersampling is currently not supported if the \"3d_mode\" setting is " +"set\n" +"to a non-default value." +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 "Update information URL" +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 a cloud animation for the main menu background." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Use anisotropic filtering when looking at textures from an angle.\n" +"This provides a significant improvement when used together with mipmapping." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Use bilinear filtering when scaling textures." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Use mipmaps when scaling 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 raytraced occlusion culling in the new culler.\n" +"This flag enables use of raytraced occlusion culling test for\n" +"client mesh sizes smaller than 4x4x4 map blocks." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Use smooth cloud shading." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Use trilinear filtering when scaling textures.\n" +"If both bilinear and trilinear filtering are enabled, trilinear filtering\n" +"is applied." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"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 "User Interfaces" +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. Your system may still force VSync on even " +"if this is disabled." +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 "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 multiplier when the window is unfocused." +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 "Volume when unfocused" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Volumetric lighting" +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 enabled, liquid reflections are simulated." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"When enabled, the GUI is optimized to be more usable on touchscreens.\n" +"Whether this is enabled by default depends on your hardware form-factor." +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 using bilinear/trilinear filtering, low-resolution textures\n" +"can be blurred, so this option automatically upscales them to preserve\n" +"crisp pixels. This defines the minimum texture size for the upscaled " +"textures;\n" +"higher values look sharper, but require more memory.\n" +"This setting is ONLY applied if any of the mentioned filters are 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 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 the window is maximized." +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.\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)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Width component of the initial window size." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Width of the selection box lines around nodes." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Will also disable autoforward, when active." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Window maximized" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Windows systems only: Start Luanti 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 based 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/kn/luanti.po b/po/kn/luanti.po index c8f5c12fa..5266a3e89 100644 --- a/po/kn/luanti.po +++ b/po/kn/luanti.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Kannada (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-07-11 19:59+0200\n" +"POT-Creation-Date: 2025-09-23 19:19+0200\n" "PO-Revision-Date: 2021-01-02 07:29+0000\n" "Last-Translator: Tejaswi Hegde \n" "Language-Team: Kannada \n" +"POT-Creation-Date: 2025-09-23 19:19+0200\n" +"PO-Revision-Date: 2025-08-04 03:02+0000\n" +"Last-Translator: Zipo <03-leghorn.chervil@icloud.com>\n" "Language-Team: Korean \n" "Language: ko\n" @@ -12,11 +12,11 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Weblate 5.10-dev\n" +"X-Generator: Weblate 5.13-dev\n" #: builtin/client/chatcommands.lua msgid "Clear the out chat queue" -msgstr "" +msgstr "채팅 대기열 지우기" #: builtin/client/chatcommands.lua #, fuzzy @@ -33,7 +33,7 @@ msgstr "유효하지 않은 명령어: " #: builtin/client/chatcommands.lua msgid "Issued command: " -msgstr "" +msgstr "명령어 발행됨: " #: builtin/client/chatcommands.lua msgid "List online players" @@ -45,7 +45,7 @@ msgstr "온라인 플레이어: " #: builtin/client/chatcommands.lua msgid "The out chat queue is now empty." -msgstr "" +msgstr "외부 채팅 대기열이 비어있습니다." #: builtin/client/chatcommands.lua msgid "This command is disabled by server." @@ -79,7 +79,7 @@ msgstr "" #: builtin/common/chatcommands.lua msgid "[all | ] [-t]" -msgstr "" +msgstr "[all | ] [-t]" #: builtin/common/settings/components.lua msgid "Browse" @@ -200,27 +200,27 @@ msgstr "맵 부드러움" #: builtin/common/settings/dlg_settings.lua msgid "(The game will need to enable automatic exposure as well)" -msgstr "" +msgstr "(게임은 가능하면 자동 노출을 가능하다면 활성화해야 합니다)" #: builtin/common/settings/dlg_settings.lua msgid "(The game will need to enable bloom as well)" -msgstr "" +msgstr "(게임은 가능하다면 블룸을 활성화해야 합니다)" #: builtin/common/settings/dlg_settings.lua msgid "(The game will need to enable volumetric lighting as well)" -msgstr "" +msgstr "(게임은 가능하다면 볼류매트릭 라이팅을 활성화해야 합니다)" #: builtin/common/settings/dlg_settings.lua msgid "(Use system language)" -msgstr "" +msgstr "(시스템 언어 사용)" #: builtin/common/settings/dlg_settings.lua msgid "Accessibility" -msgstr "" +msgstr "접근성" #: builtin/common/settings/dlg_settings.lua msgid "Auto" -msgstr "" +msgstr "자동" #: builtin/common/settings/dlg_settings.lua #: builtin/mainmenu/content/dlg_contentdb.lua @@ -256,7 +256,7 @@ msgstr "활성화됨" #: builtin/common/settings/dlg_settings.lua src/settings_translation_file.cpp msgid "General" -msgstr "" +msgstr "일반" #: builtin/common/settings/dlg_settings.lua msgid "Long tap" @@ -278,7 +278,7 @@ msgstr "기본값 복원" #: builtin/common/settings/dlg_settings.lua msgid "Reset setting to default ($1)" -msgstr "" +msgstr "기본 설정으로 재설정하기 ($1)" #: builtin/common/settings/dlg_settings.lua builtin/mainmenu/tab_online.lua msgid "Search" @@ -290,7 +290,7 @@ msgstr "" #: builtin/common/settings/dlg_settings.lua msgid "Show advanced settings" -msgstr "" +msgstr "고급 설정 표시" #: builtin/common/settings/dlg_settings.lua msgid "Show technical names" @@ -327,11 +327,11 @@ msgstr "컨텐츠" #: builtin/common/settings/shadows_component.lua msgid "(The game will need to enable shadows as well)" -msgstr "" +msgstr "(게임은 가능하면 그림자를 활성화해야 합니다)" #: builtin/common/settings/shadows_component.lua msgid "Custom" -msgstr "" +msgstr "커스텀" #: builtin/common/settings/shadows_component.lua #: src/settings_translation_file.cpp @@ -341,27 +341,27 @@ msgstr "글꼴 그림자" #: builtin/common/settings/shadows_component.lua msgid "High" -msgstr "" +msgstr "높은" #: builtin/common/settings/shadows_component.lua msgid "Low" -msgstr "" +msgstr "낮은" #: builtin/common/settings/shadows_component.lua msgid "Medium" -msgstr "" +msgstr "중간" #: builtin/common/settings/shadows_component.lua msgid "Very High" -msgstr "" +msgstr "매우 높은" #: builtin/common/settings/shadows_component.lua msgid "Very Low" -msgstr "" +msgstr "매우 낮은" #: builtin/fstk/ui.lua msgid "" -msgstr "" +msgstr "<사용 불가능>" #: builtin/fstk/ui.lua msgid "An error occurred in a Lua script:" @@ -409,7 +409,7 @@ msgstr "프로토콜 버전 $1와(과) $2 사이의 버전을 제공합니다." #: builtin/mainmenu/content/contentdb.lua msgid "Error installing \"$1\": $2" -msgstr "" +msgstr "설치 오류 “$1”: $2" #: builtin/mainmenu/content/contentdb.lua #, fuzzy @@ -444,7 +444,7 @@ msgstr "다운 받는 중..." #: builtin/mainmenu/content/dlg_contentdb.lua msgid "All" -msgstr "" +msgstr "모두" #: builtin/mainmenu/content/dlg_contentdb.lua #, fuzzy @@ -457,7 +457,7 @@ msgstr "다운 받는 중..." #: builtin/mainmenu/content/dlg_contentdb.lua msgid "Featured" -msgstr "" +msgstr "기능" #: builtin/mainmenu/content/dlg_contentdb.lua msgid "Games" @@ -484,7 +484,7 @@ msgstr "업데이트 없음" #: builtin/mainmenu/content/dlg_contentdb.lua msgid "Queued" -msgstr "" +msgstr "대기 중" #: builtin/mainmenu/content/dlg_contentdb.lua #, fuzzy @@ -493,11 +493,11 @@ msgstr "텍스처 팩" #: builtin/mainmenu/content/dlg_contentdb.lua msgid "The package $1 was not found." -msgstr "" +msgstr "$1 패키지가 발견되지 않음." #: builtin/mainmenu/content/dlg_contentdb.lua msgid "Update All [$1]" -msgstr "" +msgstr "모두 업데이트 [$1]" #: builtin/mainmenu/content/dlg_install.lua msgid "$1 and $2 dependencies will be installed." @@ -505,15 +505,15 @@ msgstr "$1 과 $2 종속품이 설치됩니다." #: builtin/mainmenu/content/dlg_install.lua msgid "$1 by $2" -msgstr "" +msgstr "$2에 의한 $1" #: builtin/mainmenu/content/dlg_install.lua msgid "$1 required dependencies could not be found." -msgstr "" +msgstr "$1가 요구하는 종속성들이 발견되지 않았습니다." #: builtin/mainmenu/content/dlg_install.lua msgid "$1 will be installed, and $2 dependencies will be skipped." -msgstr "" +msgstr "$1은 설치될 것입니다, 그리고 $2 종속성들은 건너뛸 것입니다." #: builtin/mainmenu/content/dlg_install.lua msgid "Already installed" @@ -531,7 +531,7 @@ msgstr "의존:" #: builtin/mainmenu/content/dlg_install.lua msgid "Error getting dependencies for package $1" -msgstr "" +msgstr "$1 패키지를 위한 종속성 가져오기 오류" #: builtin/mainmenu/content/dlg_install.lua #: builtin/mainmenu/content/dlg_package.lua @@ -554,11 +554,11 @@ msgstr "찾을 수 없음" #: builtin/mainmenu/content/dlg_install.lua msgid "Please check that the base game is correct." -msgstr "" +msgstr "베이스 게임이 맞는지 확인해 주십시오." #: builtin/mainmenu/content/dlg_install.lua msgid "You need to install a game before you can install a mod" -msgstr "" +msgstr "당신은 모드를 설치하기 전에 게임을 설치해야 합니다" #: builtin/mainmenu/content/dlg_overwrite.lua msgid "\"$1\" already exists. Would you like to overwrite it?" @@ -566,7 +566,7 @@ msgstr "\"$1\"은 이미 존재합니다. 덮어쓰기 하시겠습니까?" #: builtin/mainmenu/content/dlg_overwrite.lua msgid "Overwrite" -msgstr "" +msgstr "덮어씌우기" #: builtin/mainmenu/content/dlg_package.lua #, fuzzy @@ -580,7 +580,7 @@ msgstr "서버 설명" #: builtin/mainmenu/content/dlg_package.lua msgid "Donate" -msgstr "" +msgstr "기부하기" #: builtin/mainmenu/content/dlg_package.lua msgid "Error loading package information" @@ -593,7 +593,7 @@ msgstr "클라이언트 만드는 중..." #: builtin/mainmenu/content/dlg_package.lua msgid "Forum Topic" -msgstr "" +msgstr "포럼 화제" #: builtin/mainmenu/content/dlg_package.lua #, fuzzy @@ -607,7 +607,7 @@ msgstr "설치" #: builtin/mainmenu/content/dlg_package.lua msgid "Issue Tracker" -msgstr "" +msgstr "이슈 트래커" #: builtin/mainmenu/content/dlg_package.lua msgid "Reviews" @@ -615,11 +615,11 @@ msgstr "" #: builtin/mainmenu/content/dlg_package.lua msgid "Source" -msgstr "" +msgstr "소스" #: builtin/mainmenu/content/dlg_package.lua msgid "Translate" -msgstr "" +msgstr "번역하기" #: builtin/mainmenu/content/dlg_package.lua builtin/mainmenu/tab_content.lua msgid "Uninstall" @@ -631,7 +631,7 @@ msgstr "업데이트" #: builtin/mainmenu/content/dlg_package.lua msgid "Website" -msgstr "" +msgstr "웹사이트" #: builtin/mainmenu/content/dlg_package.lua msgid "by $1" @@ -639,7 +639,7 @@ msgstr "" #: builtin/mainmenu/content/dlg_package.lua msgid "by $1 — $2 downloads — +$3 / $4 / -$5" -msgstr "" +msgstr "$1에 의한 — $2 다운로드 — +$3 / $4 / -$5" #: builtin/mainmenu/content/pkgmgr.lua msgid "$1 (Enabled)" @@ -680,11 +680,11 @@ msgstr "" #: builtin/mainmenu/dlg_config_world.lua msgid "(Enabled, has error)" -msgstr "" +msgstr "(활성화되었습니다, 오류가 있습니다)" #: builtin/mainmenu/dlg_config_world.lua msgid "(Unsatisfied)" -msgstr "" +msgstr "(충족되지 않았습니다)" #: builtin/mainmenu/dlg_config_world.lua msgid "Disable all" @@ -792,7 +792,7 @@ msgstr "장식" #: builtin/mainmenu/dlg_create_world.lua msgid "Desert temples" -msgstr "" +msgstr "사막 사원" #: builtin/mainmenu/dlg_create_world.lua #, fuzzy @@ -804,6 +804,7 @@ msgid "" "Different dungeon variant generated in desert biomes (only if dungeons " "enabled)" msgstr "" +"다른 던전 변수는 사막 기후에서 생성됩니다 (오직 던전들이 활성화되었을 때만)" #: builtin/mainmenu/dlg_create_world.lua msgid "Dungeons" @@ -839,7 +840,7 @@ msgstr "강 주변의 습도 증가" #: builtin/mainmenu/dlg_create_world.lua msgid "Install another game" -msgstr "" +msgstr "다른 게임 설치하기" #: builtin/mainmenu/dlg_create_world.lua msgid "Lakes" @@ -992,7 +993,7 @@ msgstr "비밀번호 확인" #: builtin/mainmenu/dlg_register.lua msgid "Joining $1" -msgstr "" +msgstr "$1에 가입하기" #: builtin/mainmenu/dlg_register.lua #, fuzzy @@ -1002,7 +1003,7 @@ msgstr "Mapgen 이름" #: builtin/mainmenu/dlg_register.lua builtin/mainmenu/tab_local.lua #: builtin/mainmenu/tab_online.lua msgid "Name" -msgstr "" +msgstr "이름" #: builtin/mainmenu/dlg_register.lua builtin/mainmenu/tab_local.lua #: builtin/mainmenu/tab_online.lua @@ -1022,27 +1023,31 @@ msgstr "등록하고 참여" #: builtin/mainmenu/dlg_reinstall_mtg.lua msgid "Dismiss" -msgstr "" +msgstr "끄기" #: builtin/mainmenu/dlg_reinstall_mtg.lua msgid "" "For a long time, Luanti shipped with a default game called \"Minetest " "Game\". Since version 5.8.0, Luanti ships without a default game." msgstr "" +"오랜 시간동안, Luanti는 “Minetest Game”이라 불리우는 기본 게임을 제공해 왔습" +"니다. 버전 5.8.0부터, Luanti는 기본 게임을 제공하지 않습니다." #: builtin/mainmenu/dlg_reinstall_mtg.lua msgid "" "If you want to continue playing in your Minetest Game worlds, you need to " "reinstall Minetest Game." msgstr "" +"만약 당신이 Minetest Game 월드를 지속적으로 플레이하길 원한다면, 당신은 " +"Minetest Game을 재설치 해야 합니다." #: builtin/mainmenu/dlg_reinstall_mtg.lua msgid "Minetest Game is no longer installed by default" -msgstr "" +msgstr "Minetest Game은 더이상 기본적으로 설치되지 않습니다" #: builtin/mainmenu/dlg_reinstall_mtg.lua msgid "Reinstall Minetest Game" -msgstr "" +msgstr "Minetest Game 재설치" #: builtin/mainmenu/dlg_rename_modpack.lua msgid "Accept" @@ -1079,7 +1084,7 @@ msgstr "" #: builtin/mainmenu/dlg_version_info.lua msgid "A new $1 version is available" -msgstr "" +msgstr "새로운 $1 버전은 사용가능합니다" #: builtin/mainmenu/dlg_version_info.lua msgid "" @@ -1088,18 +1093,21 @@ msgid "" "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/dlg_version_info.lua msgid "Later" -msgstr "" +msgstr "다음에" #: builtin/mainmenu/dlg_version_info.lua msgid "Never" -msgstr "" +msgstr "절대" #: builtin/mainmenu/dlg_version_info.lua msgid "Visit website" -msgstr "" +msgstr "웹사이트 방문" #: builtin/mainmenu/init.lua src/client/game_formspec.cpp msgid "Settings" @@ -1116,7 +1124,7 @@ msgstr "인터넷 연결을 확인한 후 서버 목록을 새로 고쳐보세 #: builtin/mainmenu/tab_about.lua msgid "About" -msgstr "" +msgstr "에 관해" #: builtin/mainmenu/tab_about.lua msgid "Active Contributors" @@ -1133,7 +1141,7 @@ msgstr "코어 개발자" #: builtin/mainmenu/tab_about.lua msgid "Core Team" -msgstr "" +msgstr "핵심 팀" #: builtin/mainmenu/tab_about.lua #, fuzzy @@ -1145,6 +1153,8 @@ 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" @@ -1241,22 +1251,19 @@ msgstr "ContentDB에서 게임 설치" #: builtin/mainmenu/tab_local.lua msgid "Luanti doesn't come with a game by default." -msgstr "" +msgstr "Luanti는 기본적으로 게임과 같이 오지 않습니다." #: builtin/mainmenu/tab_local.lua msgid "" "Luanti is a game-creation platform that allows you to play many different " "games." msgstr "" +"Luanti는 매우 다양한 게임들을 플레이할 수 있게 해주는 게임 개발 플랫폼입니다." #: 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 "게임하기" @@ -1284,7 +1291,7 @@ msgstr "게임 시작" #: builtin/mainmenu/tab_local.lua msgid "You need to install a game before you can create a world." -msgstr "" +msgstr "당신은 월드를 생성하기 전에 게임을 설치해야 합니다." #: builtin/mainmenu/tab_online.lua #, fuzzy @@ -1318,7 +1325,7 @@ msgstr "게임" #: builtin/mainmenu/tab_online.lua msgid "Incompatible Servers" -msgstr "" +msgstr "호환되지 않는 서버들" #: builtin/mainmenu/tab_online.lua msgid "Join Game" @@ -1326,7 +1333,7 @@ msgstr "게임 참가" #: builtin/mainmenu/tab_online.lua msgid "Login" -msgstr "" +msgstr "로그인" #: builtin/mainmenu/tab_online.lua msgid "Number of mods: $1" @@ -1363,7 +1370,7 @@ msgstr "서버 알리기" #: builtin/mainmenu/tab_online.lua msgid "Refresh" -msgstr "" +msgstr "새로고침" #: builtin/mainmenu/tab_online.lua #, fuzzy @@ -1463,7 +1470,7 @@ msgstr "오류가 발생했습니다:" #: src/client/game.cpp #, c-format msgid "Access denied. Reason: %s" -msgstr "" +msgstr "액새스 거부됨. 이유: $s" #: src/client/game.cpp #, fuzzy @@ -1480,15 +1487,15 @@ msgstr "자동 전진 활성화" #: src/client/game.cpp msgid "Block bounds hidden" -msgstr "" +msgstr "숨겨진 범위 차단" #: src/client/game.cpp msgid "Block bounds shown for current block" -msgstr "" +msgstr "현재 차단을 보여주는 범위 차단" #: src/client/game.cpp msgid "Block bounds shown for nearby blocks" -msgstr "" +msgstr "근처 보이는 블록들 차단" #: src/client/game.cpp msgid "Bounding boxes shown" @@ -1534,12 +1541,12 @@ msgstr "연결 오류 (시간초과)" #: src/client/game.cpp msgid "Connection failed for unknown reason" -msgstr "" +msgstr "알 수 없는 이유로 연결에 실패함" #: src/client/game.cpp #, c-format msgid "Couldn't resolve address: %s" -msgstr "" +msgstr "주소를 처리할 수 없음: $s" #: src/client/game.cpp msgid "Creating client..." @@ -1671,17 +1678,17 @@ msgstr "음소거 해제" #: src/client/game.cpp #, c-format msgid "The server is probably running a different version of %s." -msgstr "" +msgstr "서버는 다른 버전의 $s를 적절히 실행중입니다." #: src/client/game.cpp #, c-format msgid "Unable to connect to %s because IPv6 is disabled" -msgstr "" +msgstr "IPv6가 비활성화 되어있기 때문에 $s에 연결할 수 없습니다" #: src/client/game.cpp #, c-format msgid "Unable to listen on %s because IPv6 is disabled" -msgstr "" +msgstr "IPv6가 비활성화 되었기 때문에 $s에서 들을 수 없습니다" #: src/client/game.cpp #, fuzzy @@ -1696,6 +1703,8 @@ msgstr "제한없는 시야 범위 활성화" #: src/client/game.cpp msgid "Unlimited viewing range enabled, but forbidden by game or mod" msgstr "" +"제한없는 보기 범위가 활성화되었습니다, 하지만 게임이나 모드에 의해 금지되었습" +"니다" #: src/client/game.cpp #, fuzzy, c-format @@ -1706,6 +1715,8 @@ msgstr "시야 범위 최소치 : %d" #, c-format msgid "Viewing changed to %d (the minimum), but limited to %d by game or mod" msgstr "" +"$d로 변하는 걸 보았습니다 (최소), 하지만 게임이나 모드에 의해 $d로 변하는데 " +"제한이 걸렸습니다" #: src/client/game.cpp #, c-format @@ -1722,6 +1733,8 @@ msgstr "시야 범위 %d로 바꿈" msgid "" "Viewing range changed to %d (the maximum), but limited to %d by game or mod" msgstr "" +"보기 범위가 $d로 변했습니다 (최소), 하지만 게임이나 모드에 의해 $d로 변하는" +"데 제한이 걸렸습니다" #: src/client/game.cpp #, fuzzy, c-format @@ -1873,10 +1886,6 @@ msgstr "프로파일러 숨기기" msgid "Profiler shown (page %d of %d)" msgstr "프로파일러 보이기 (%d중 %d 페이지)" -#: src/client/keycode.cpp -msgid "Apps" -msgstr "애플리케이션" - #: src/client/keycode.cpp msgid "Backspace" msgstr "뒤로" @@ -1908,47 +1917,22 @@ msgstr "삭제" #: src/client/keycode.cpp msgid "Down Arrow" -msgstr "" +msgstr "아래쪽 화살표" #: src/client/keycode.cpp -msgid "End" -msgstr "끝" +#, fuzzy +msgid "End Key" +msgstr "메뉴" #: src/client/keycode.cpp -msgid "Erase EOF" -msgstr "EOF 지우기" +#, fuzzy +msgid "Help Key" +msgstr "삭제" #: src/client/keycode.cpp -msgid "Execute" -msgstr "실행" - -#: src/client/keycode.cpp -msgid "Help" -msgstr "도움말" - -#: src/client/keycode.cpp -msgid "Home" -msgstr "Home" - -#: src/client/keycode.cpp -msgid "IME Accept" -msgstr "IME 확인" - -#: src/client/keycode.cpp -msgid "IME Convert" -msgstr "IME 변환" - -#: src/client/keycode.cpp -msgid "IME Escape" -msgstr "IME 종료" - -#: src/client/keycode.cpp -msgid "IME Mode Change" -msgstr "IME 모드 변경" - -#: src/client/keycode.cpp -msgid "IME Nonconvert" -msgstr "IME 변환 안함" +#, fuzzy +msgid "Home Key" +msgstr "확대/축소" #: src/client/keycode.cpp msgid "Insert" @@ -1960,8 +1944,9 @@ msgid "Left Arrow" msgstr "왼쪽 컨트롤" #: src/client/keycode.cpp -msgid "Left Button" -msgstr "왼쪽 버튼" +#, fuzzy +msgid "Left Click" +msgstr "왼쪽 컨트롤" #: src/client/keycode.cpp msgid "Left Control" @@ -1975,19 +1960,27 @@ msgstr "왼쪽 메뉴" msgid "Left Shift" msgstr "왼쪽 쉬프트" +#. ~ Name of key #: src/client/keycode.cpp msgid "Left Windows" msgstr "왼쪽 창" -#. ~ Key name, common on Windows keyboards #: src/client/keycode.cpp #, fuzzy msgid "Menu Key" msgstr "메뉴" #: src/client/keycode.cpp -msgid "Middle Button" -msgstr "가운데 버튼" +msgid "Middle Click" +msgstr "" + +#: src/client/keycode.cpp +msgid "Mouse X1" +msgstr "" + +#: src/client/keycode.cpp +msgid "Mouse X2" +msgstr "" #: src/client/keycode.cpp msgid "Num Lock" @@ -2053,10 +2046,6 @@ msgstr "숫자 키패드 8" msgid "Numpad 9" msgstr "숫자 키패드 9" -#: src/client/keycode.cpp -msgid "OEM Clear" -msgstr "OEM 초기화" - #: src/client/keycode.cpp #, fuzzy msgid "Page Down" @@ -2093,8 +2082,9 @@ msgid "Right Arrow" msgstr "오른쪽 컨트롤" #: src/client/keycode.cpp -msgid "Right Button" -msgstr "오른쪽 버튼" +#, fuzzy +msgid "Right Click" +msgstr "오른쪽 컨트롤" #: src/client/keycode.cpp msgid "Right Control" @@ -2108,6 +2098,7 @@ msgstr "오른쪽 메뉴" msgid "Right Shift" msgstr "오른쪽 쉬프트" +#. ~ Name of key #: src/client/keycode.cpp msgid "Right Windows" msgstr "오른쪽 창" @@ -2116,48 +2107,28 @@ msgstr "오른쪽 창" msgid "Scroll Lock" msgstr "스크롤 락" -#. ~ Key name #: src/client/keycode.cpp -msgid "Select" -msgstr "선택" +#, fuzzy +msgid "Select Key" +msgstr "삭제" #: src/client/keycode.cpp #, fuzzy msgid "Shift Key" 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 "탭" +#, fuzzy +msgid "Tab Key" +msgstr "살금살금걷기 키" #: src/client/keycode.cpp msgid "Up Arrow" -msgstr "" - -#: src/client/keycode.cpp -msgid "X Button 1" -msgstr "X 버튼 1" - -#: src/client/keycode.cpp -msgid "X Button 2" -msgstr "X 버튼 2" - -#: src/client/keycode.cpp -#, fuzzy -msgid "Zoom Key" -msgstr "확대/축소" +msgstr "위쪽 화살표" #: src/client/minimap.cpp msgid "Minimap hidden" @@ -2192,18 +2163,20 @@ msgstr "본 빌드에서 지원되지 않는 사운드 시스템" #: src/content/mod_configuration.cpp #, c-format msgid "%s is missing:" -msgstr "" +msgstr "$s는 없어졌습니다:" #: src/content/mod_configuration.cpp msgid "" "Install and enable the required mods, or disable the mods causing errors." -msgstr "" +msgstr "요구하는 모드, 또는 에러를 유발하여 비활성화된 모드를 설치하고 활성화" #: src/content/mod_configuration.cpp msgid "" "Note: this may be caused by a dependency cycle, in which case try updating " "the mods." msgstr "" +"노트: 이는 종속성 사이클에 의해 야기될 수 있습니다, 이 사례에서 모드를 업데이" +"트하려 노력합니다." #: src/content/mod_configuration.cpp #, fuzzy @@ -2222,7 +2195,7 @@ msgstr "$1을 다운로드하는 데에 실패했습니다" #: src/gui/guiChatConsole.cpp msgid "Opening webpage" -msgstr "" +msgstr "웹페이지 열기" #: src/gui/guiFormSpecMenu.cpp msgid "Proceed" @@ -2230,11 +2203,11 @@ msgstr "계속하기" #: src/gui/guiOpenURL.cpp msgid "Open" -msgstr "" +msgstr "열기" #: src/gui/guiOpenURL.cpp msgid "Open URL?" -msgstr "" +msgstr "URL을 열까요?" #: src/gui/guiOpenURL.cpp #, fuzzy @@ -2299,7 +2272,7 @@ msgstr "" #: src/gui/touchscreenlayout.cpp src/settings_translation_file.cpp msgid "Aux1" -msgstr "" +msgstr "Aux1" #: src/gui/touchscreenlayout.cpp msgid "Change camera" @@ -2323,7 +2296,7 @@ msgstr "인벤토리" #: src/gui/touchscreenlayout.cpp msgid "Joystick" -msgstr "" +msgstr "조이스틱" #: src/gui/touchscreenlayout.cpp src/settings_translation_file.cpp msgid "Jump" @@ -2331,7 +2304,7 @@ msgstr "점프" #: src/gui/touchscreenlayout.cpp msgid "Overflow menu" -msgstr "" +msgstr "오버플로우 메뉴" #: src/gui/touchscreenlayout.cpp src/settings_translation_file.cpp #, fuzzy @@ -2380,14 +2353,17 @@ msgid "" "Another client is connected with this name. If your client closed " "unexpectedly, try again in a minute." msgstr "" +"다른 클라이언트는 이 이름과 연결되었습니다. 만약 당신의 클라이언트가 예상치 " +"않게 닫혔다면, 몇분 뒤 다시 시도하세요." #: src/network/clientpackethandler.cpp msgid "Empty passwords are disallowed. Set a password and try again." msgstr "" +"빈 패스워드들은 허용되지 않습니다. 비밀번호를 설정하고 다시 시도하세요." #: src/network/clientpackethandler.cpp msgid "Internal server error" -msgstr "" +msgstr "내부 서버 오류" #: src/network/clientpackethandler.cpp #, fuzzy @@ -2406,6 +2382,8 @@ msgstr "ko" msgid "" "Name is not registered. To create an account on this server, click 'Register'" msgstr "" +"이름은 등록되지 않습니다. 이 서버에서 계정을 생성하기 위해, ‘등록’을 클릭하세" +"요" #: src/network/clientpackethandler.cpp #, fuzzy @@ -2414,7 +2392,7 @@ msgstr "이름을 선택하세요!" #: src/network/clientpackethandler.cpp msgid "Player name contains disallowed characters" -msgstr "" +msgstr "플레이어 이름은 허용되지 않는 문자를 포함합니다" #: src/network/clientpackethandler.cpp #, fuzzy @@ -2429,15 +2407,16 @@ msgstr "서버가 닫혔습니다..." #: src/network/clientpackethandler.cpp msgid "" "The server has experienced an internal error. You will now be disconnected." -msgstr "" +msgstr "서버는 내부 오류를 경험했습니다. 당신은 이제 연결해제 될 것입니다." #: src/network/clientpackethandler.cpp msgid "The server is running in singleplayer mode. You cannot connect." msgstr "" +"서버는 싱글플레이어 모드에서 실행되고 있습니다. 당신은 연결할 수 없습니다." #: src/network/clientpackethandler.cpp msgid "Too many users" -msgstr "" +msgstr "너무 많은 사용자들" #: src/network/clientpackethandler.cpp msgid "Unknown disconnect reason." @@ -2448,12 +2427,16 @@ msgid "" "Your client sent something the server didn't expect. Try reconnecting or " "updating your client." msgstr "" +"당신의 클라이언트는 서버가 예상하지 못한 걸 보냈습니다. 다시 연결하거나 당신" +"의 클라이언트를 업데이트 하세요." #: src/network/clientpackethandler.cpp msgid "" "Your client's version is not supported.\n" "Please contact the server administrator." msgstr "" +"당신의 서버의 버전은 지원되지 않습니다.\n" +"서버 관리자와 접촉하시길 바랍니다." #: src/server.cpp #, fuzzy, c-format @@ -2529,7 +2512,7 @@ msgstr "강 계곡과 채널에 위치한 2D 노이즈." #: src/settings_translation_file.cpp msgid "3D" -msgstr "" +msgstr "3D" #: src/settings_translation_file.cpp msgid "3D clouds" @@ -2590,12 +2573,11 @@ msgstr "맵 당 던전 수를 결정하는 3D 노이즈." msgid "" "3D support.\n" "Currently supported:\n" -"- none: no 3d output.\n" -"- anaglyph: cyan/magenta color 3d.\n" -"- interlaced: odd/even line based polarization screen support.\n" -"- topbottom: split screen top/bottom.\n" -"- sidebyside: split screen side by side.\n" -"- crossview: Cross-eyed 3d" +"- none: no 3D output\n" +"- anaglyph: cyan/magenta color 3D\n" +"- topbottom: split screen top/bottom\n" +"- sidebyside: split screen side-by-side\n" +"- crossview: cross-eyed 3D" msgstr "" "3D 지원.\n" "현재 지원되는 것:\n" @@ -2628,7 +2610,7 @@ msgstr "ABM 간격" #: src/settings_translation_file.cpp msgid "ABM time budget" -msgstr "" +msgstr "ABM 시간 아끼기" #: src/settings_translation_file.cpp msgid "Absolute limit of queued blocks to emerge" @@ -2660,7 +2642,7 @@ msgstr "객체 전달 범위 활성화" #: src/settings_translation_file.cpp msgid "Adjust the detected display density, used for scaling UI elements." -msgstr "" +msgstr "스케일링 UI 엘리먼트를 위해 디스플레이 밀도를 감지하여 조정합니다." #: src/settings_translation_file.cpp #, no-c-format @@ -2699,7 +2681,7 @@ msgstr "평평하게 보는 대신에 3D 구름 효과를 사용합니다." #: src/settings_translation_file.cpp msgid "Allows liquids to be translucent." -msgstr "" +msgstr "액체가 투명할 수 있도록 허용합니다." #: src/settings_translation_file.cpp #, fuzzy @@ -2710,8 +2692,8 @@ msgstr "" "살금살금걷기 키입니다.\n" "만약 aux1_descends를 사용할 수 없는 경우에 물에서 내려가거나 올라올 수 있습니" "다.\n" -"Http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3 참조" +"Http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3 참조" #: src/settings_translation_file.cpp msgid "" @@ -2764,11 +2746,11 @@ msgstr "매끄럽게 표현하기:" #: src/settings_translation_file.cpp msgid "Anticheat flags" -msgstr "" +msgstr "안티채팅 플래그" #: src/settings_translation_file.cpp msgid "Anticheat movement tolerance" -msgstr "" +msgstr "안티채팅 이동 관용" #: src/settings_translation_file.cpp msgid "Append item name" @@ -2973,6 +2955,17 @@ msgstr "카메라를 부드럽게" msgid "Camera smoothing in cinematic mode" msgstr "시네마틱 모드에서 카메라 부드럽게" +#: src/settings_translation_file.cpp +msgid "Capture Tracy zones" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Capture Tracy zones with the profiler's instrumentation.\n" +"You need to build with Tracy to use this, see doc/developing/profiling.md\n" +"for details." +msgstr "" + #: src/settings_translation_file.cpp msgid "Cave noise" msgstr "동굴 잡음" @@ -3490,6 +3483,10 @@ msgstr "" msgid "Developer Options" msgstr "장식" +#: src/settings_translation_file.cpp +msgid "Disable if you only want to instrument with Tracy." +msgstr "" + #: src/settings_translation_file.cpp msgid "Disallow empty passwords" msgstr "비밀번호 없으면 불가" @@ -5256,6 +5253,11 @@ msgstr "" msgid "Maximum users" msgstr "최대 사용자" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Measure time samples" +msgstr "사막 사원" + #: src/settings_translation_file.cpp msgid "Message of the day" msgstr "메시지" @@ -7174,8 +7176,8 @@ msgid "Will also disable autoforward, when active." msgstr "" "플레이어가 \n" "뒤쪽으로 움직이는 키입니다.\n" -"Http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3 참조" +"Http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3 참조" #: src/settings_translation_file.cpp msgid "Window maximized" @@ -7276,14 +7278,68 @@ msgstr "" msgid "cURL parallel limit" msgstr "" -#, fuzzy -#~ msgid "Key for taking screenshots." -#~ msgstr "Screenshots의 형식입니다." +#~ msgid "Apps" +#~ msgstr "애플리케이션" -#, fuzzy -#~ msgid "Key for toggling cinematic mode." -#~ msgstr "시네마틱 모드에서 카메라 부드럽게" +#~ msgid "End" +#~ msgstr "끝" -#, fuzzy -#~ msgid "Key for toggling fullscreen mode." -#~ msgstr "전체 화면 모드." +#~ msgid "Erase EOF" +#~ msgstr "EOF 지우기" + +#~ msgid "Execute" +#~ msgstr "실행" + +#~ msgid "Help" +#~ msgstr "도움말" + +#~ msgid "Home" +#~ msgstr "Home" + +#~ msgid "IME Accept" +#~ msgstr "IME 확인" + +#~ msgid "IME Convert" +#~ msgstr "IME 변환" + +#~ msgid "IME Escape" +#~ msgstr "IME 종료" + +#~ msgid "IME Mode Change" +#~ msgstr "IME 모드 변경" + +#~ msgid "IME Nonconvert" +#~ msgstr "IME 변환 안함" + +#~ msgid "Left Button" +#~ msgstr "왼쪽 버튼" + +#~ msgid "Middle Button" +#~ msgstr "가운데 버튼" + +#~ msgid "No world created or selected!" +#~ msgstr "월드를 만들거나 선택하지 않았습니다!" + +#~ msgid "OEM Clear" +#~ msgstr "OEM 초기화" + +#~ msgid "Right Button" +#~ msgstr "오른쪽 버튼" + +#~ msgid "Select" +#~ msgstr "선택" + +#~ msgid "Sleep" +#~ msgstr "잠자기" + +#~ msgid "Snapshot" +#~ msgstr "스냅샷" + +#~ msgid "Tab" +#~ msgstr "탭" + +#~ msgid "X Button 1" +#~ msgstr "X 버튼 1" + +#~ msgid "X Button 2" +#~ msgstr "X 버튼 2" diff --git a/po/kv/luanti.po b/po/kv/luanti.po index d7dec1e2b..8c7e2c8c2 100644 --- a/po/kv/luanti.po +++ b/po/kv/luanti.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: minetest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-07-11 19:59+0200\n" +"POT-Creation-Date: 2025-09-23 19:19+0200\n" "PO-Revision-Date: 2024-08-06 19:09+0000\n" "Last-Translator: Mićadźoridź \n" "Language-Team: Komi \n" "Language-Team: Kyrgyz \n" "Language-Team: Lithuanian \n" "Language-Team: LANGUAGE \n" @@ -1189,11 +1189,11 @@ msgid "Host Server" msgstr "" #: builtin/mainmenu/tab_local.lua -msgid "Select Mods" +msgid "New" msgstr "" #: builtin/mainmenu/tab_local.lua -msgid "New" +msgid "Select Mods" msgstr "" #: builtin/mainmenu/tab_local.lua @@ -1224,10 +1224,6 @@ msgstr "" msgid "Play Game" msgstr "" -#: builtin/mainmenu/tab_local.lua -msgid "No world created or selected!" -msgstr "" - #: builtin/mainmenu/tab_local.lua msgid "Start Game" msgstr "" @@ -1784,11 +1780,11 @@ msgid "Profiler hidden" msgstr "" #: src/client/keycode.cpp -msgid "Left Button" +msgid "Left Click" msgstr "" #: src/client/keycode.cpp -msgid "Right Button" +msgid "Right Click" msgstr "" #. ~ Usually paired with the Pause key @@ -1797,15 +1793,15 @@ msgid "Break Key" msgstr "" #: src/client/keycode.cpp -msgid "Middle Button" +msgid "Middle Click" msgstr "" #: src/client/keycode.cpp -msgid "X Button 1" +msgid "Mouse X1" msgstr "" #: src/client/keycode.cpp -msgid "X Button 2" +msgid "Mouse X2" msgstr "" #: src/client/keycode.cpp @@ -1813,7 +1809,7 @@ msgid "Backspace" msgstr "" #: src/client/keycode.cpp -msgid "Tab" +msgid "Tab Key" msgstr "" #: src/client/keycode.cpp @@ -1832,7 +1828,6 @@ msgstr "" msgid "Control Key" msgstr "" -#. ~ Key name, common on Windows keyboards #: src/client/keycode.cpp msgid "Menu Key" msgstr "" @@ -1859,11 +1854,11 @@ msgid "Page Down" msgstr "" #: src/client/keycode.cpp -msgid "End" +msgid "End Key" msgstr "" #: src/client/keycode.cpp -msgid "Home" +msgid "Home Key" msgstr "" #: src/client/keycode.cpp @@ -1882,9 +1877,8 @@ msgstr "" msgid "Down Arrow" msgstr "" -#. ~ Key name #: src/client/keycode.cpp -msgid "Select" +msgid "Select Key" msgstr "" #. ~ "Print screen" key @@ -1892,14 +1886,6 @@ msgstr "" msgid "Print" msgstr "" -#: src/client/keycode.cpp -msgid "Execute" -msgstr "" - -#: src/client/keycode.cpp -msgid "Snapshot" -msgstr "" - #: src/client/keycode.cpp msgid "Insert" msgstr "" @@ -1909,13 +1895,15 @@ msgid "Delete Key" msgstr "" #: src/client/keycode.cpp -msgid "Help" +msgid "Help Key" msgstr "" +#. ~ Name of key #: src/client/keycode.cpp msgid "Left Windows" msgstr "" +#. ~ Name of key #: src/client/keycode.cpp msgid "Right Windows" msgstr "" @@ -2012,50 +2000,10 @@ msgstr "" msgid "Right Menu" msgstr "" -#: src/client/keycode.cpp -msgid "IME Escape" -msgstr "" - -#: src/client/keycode.cpp -msgid "IME Convert" -msgstr "" - -#: src/client/keycode.cpp -msgid "IME Nonconvert" -msgstr "" - -#: src/client/keycode.cpp -msgid "IME Accept" -msgstr "" - -#: src/client/keycode.cpp -msgid "IME Mode Change" -msgstr "" - -#: src/client/keycode.cpp -msgid "Apps" -msgstr "" - -#: src/client/keycode.cpp -msgid "Sleep" -msgstr "" - -#: src/client/keycode.cpp -msgid "Erase EOF" -msgstr "" - #: src/client/keycode.cpp msgid "Play" msgstr "" -#: src/client/keycode.cpp -msgid "Zoom Key" -msgstr "" - -#: src/client/keycode.cpp -msgid "OEM Clear" -msgstr "" - #: src/client/minimap.cpp msgid "Minimap hidden" msgstr "" @@ -3034,12 +2982,11 @@ msgstr "" msgid "" "3D support.\n" "Currently supported:\n" -"- none: no 3d output.\n" -"- anaglyph: cyan/magenta color 3d.\n" -"- interlaced: odd/even line based polarization screen support.\n" -"- topbottom: split screen top/bottom.\n" -"- sidebyside: split screen side by side.\n" -"- crossview: Cross-eyed 3d" +"- none: no 3D output\n" +"- anaglyph: cyan/magenta color 3D\n" +"- topbottom: split screen top/bottom\n" +"- sidebyside: split screen side-by-side\n" +"- crossview: cross-eyed 3D" msgstr "" #: src/settings_translation_file.cpp @@ -5618,6 +5565,25 @@ msgid "" "Useful for mod developers and server operators." msgstr "" +#: src/settings_translation_file.cpp +msgid "Measure time samples" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Disable if you only want to instrument with Tracy." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Capture Tracy zones" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Capture Tracy zones with the profiler's instrumentation.\n" +"You need to build with Tracy to use this, see doc/developing/profiling.md\n" +"for details." +msgstr "" + #: src/settings_translation_file.cpp msgid "Default report format" msgstr "" diff --git a/po/lv/luanti.po b/po/lv/luanti.po index 5e1a07528..73bb7e0da 100644 --- a/po/lv/luanti.po +++ b/po/lv/luanti.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: minetest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-07-11 19:59+0200\n" +"POT-Creation-Date: 2025-09-23 19:19+0200\n" "PO-Revision-Date: 2024-01-22 21:01+0000\n" "Last-Translator: Uko Koknevics \n" "Language-Team: Latvian \n" "Language-Team: Chinese (Literary) \n" "Language-Team: Maori \n" "Language-Team: Mongolian \n" "Language-Team: Marathi \n" "Language-Team: Malay \n" "Language-Team: Malay (Jawi) \n" "Language-Team: Norwegian Bokmål \n" "Language-Team: Dutch \n" "Language-Team: Norwegian Nynorsk \n" "Language-Team: Occitan \n" "Language-Team: Polish \n" "Language-Team: Portuguese \n" +"POT-Creation-Date: 2025-09-23 19:19+0200\n" +"PO-Revision-Date: 2025-09-07 00:02+0000\n" +"Last-Translator: Neil Rizen \n" "Language-Team: Portuguese (Brazil) \n" "Language: pt_BR\n" @@ -12,11 +12,11 @@ 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 5.8-dev\n" +"X-Generator: Weblate 5.14-dev\n" #: builtin/client/chatcommands.lua msgid "Clear the out chat queue" -msgstr "Limpe a fila de espera do chat" +msgstr "Limpe a fila de espera do bate-papo" #: builtin/client/chatcommands.lua msgid "Empty command." @@ -63,9 +63,8 @@ msgid "Command not available: " msgstr "Comando não disponível: " #: builtin/common/chatcommands.lua -#, fuzzy msgid "Get help for commands (-t: output in chat)" -msgstr "Obtenha ajuda para comandos" +msgstr "Obter ajuda para comandos (-t: sai no bate-papo)" #: builtin/common/chatcommands.lua msgid "" @@ -75,9 +74,8 @@ msgstr "" "tudo." #: builtin/common/chatcommands.lua -#, fuzzy msgid "[all | ] [-t]" -msgstr "[all| ]" +msgstr "[all| ] [-t]" #: builtin/common/settings/components.lua msgid "Browse" @@ -85,16 +83,15 @@ msgstr "Procurar" #: builtin/common/settings/components.lua msgid "Conflicts with \"$1\"" -msgstr "" +msgstr "Conflita com\"$1\"" #: builtin/common/settings/components.lua msgid "Edit" msgstr "Editar" #: builtin/common/settings/components.lua -#, fuzzy msgid "Remove keybinding" -msgstr "Controles." +msgstr "Remover teclas de atalho" #: builtin/common/settings/components.lua msgid "Select directory" @@ -105,9 +102,8 @@ msgid "Select file" msgstr "Selecione o arquivo" #: builtin/common/settings/components.lua -#, fuzzy msgid "Set" -msgstr "Tecla Select" +msgstr "Definir" #: builtin/common/settings/dlg_change_mapgen_flags.lua msgid "(No description of setting given)" @@ -197,37 +193,37 @@ msgstr "amenizado" #: builtin/common/settings/dlg_settings.lua msgid "(The game will need to enable automatic exposure as well)" -msgstr "" +msgstr "(O jogo também precisará habilitar a exposição automática)" #: builtin/common/settings/dlg_settings.lua msgid "(The game will need to enable bloom as well)" -msgstr "" +msgstr "(O jogo também precisará habilitar o resplandecer)" #: builtin/common/settings/dlg_settings.lua msgid "(The game will need to enable volumetric lighting as well)" -msgstr "" +msgstr "(O jogo também precisará habilitar a iluminação volumétrica)" #: builtin/common/settings/dlg_settings.lua msgid "(Use system language)" -msgstr "" +msgstr "(Use a linguagem do sistema)" #: builtin/common/settings/dlg_settings.lua msgid "Accessibility" -msgstr "" +msgstr "Acessibilidade" #: builtin/common/settings/dlg_settings.lua msgid "Auto" -msgstr "" +msgstr "Auto" #: builtin/common/settings/dlg_settings.lua #: builtin/mainmenu/content/dlg_contentdb.lua #: builtin/mainmenu/content/dlg_package.lua src/gui/guiVolumeChange.cpp msgid "Back" -msgstr "Backspace" +msgstr "Voltar" #: builtin/common/settings/dlg_settings.lua msgid "Buttons with crosshair" -msgstr "" +msgstr "Botões com mira" #: builtin/common/settings/dlg_settings.lua src/gui/touchscreenlayout.cpp #: src/settings_translation_file.cpp @@ -257,12 +253,11 @@ msgstr "Geral" #: builtin/common/settings/dlg_settings.lua msgid "Long tap" -msgstr "" +msgstr "Clique longo" #: builtin/common/settings/dlg_settings.lua -#, fuzzy msgid "Movement" -msgstr "Modo rápido" +msgstr "Movimento" #: builtin/common/settings/dlg_settings.lua #: builtin/mainmenu/content/dlg_contentdb.lua @@ -270,13 +265,12 @@ msgid "No results" msgstr "Sem resultados" #: builtin/common/settings/dlg_settings.lua -#, fuzzy msgid "Reset setting to default" -msgstr "Restaurar Padrão" +msgstr "Restaurar configuração padrão" #: builtin/common/settings/dlg_settings.lua msgid "Reset setting to default ($1)" -msgstr "" +msgstr "Retornar à configuração padrão ($1)" #: builtin/common/settings/dlg_settings.lua builtin/mainmenu/tab_online.lua msgid "Search" @@ -284,29 +278,27 @@ msgstr "Pesquisar" #: builtin/common/settings/dlg_settings.lua msgid "Short tap" -msgstr "" +msgstr "Clique curto" #: builtin/common/settings/dlg_settings.lua msgid "Show advanced settings" -msgstr "" +msgstr "Mostrar configurações avançadas" #: builtin/common/settings/dlg_settings.lua msgid "Show technical names" msgstr "Mostrar nomes técnicos" #: builtin/common/settings/dlg_settings.lua -#, fuzzy msgid "Tap" -msgstr "Tab" +msgstr "Clique" #: builtin/common/settings/dlg_settings.lua msgid "Tap with crosshair" -msgstr "" +msgstr "Clicar com a mira" #: builtin/common/settings/dlg_settings.lua -#, fuzzy msgid "Touchscreen layout" -msgstr "Tela sensível ao toque" +msgstr "Disposição da tela touchscreen" #: builtin/common/settings/settingtypes.lua msgid "Client Mods" @@ -322,11 +314,11 @@ msgstr "Conteúdo: Mods" #: builtin/common/settings/shadows_component.lua msgid "(The game will need to enable shadows as well)" -msgstr "" +msgstr "(O jogo também precisará habilitar sombras)" #: builtin/common/settings/shadows_component.lua msgid "Custom" -msgstr "" +msgstr "Personalizar" #: builtin/common/settings/shadows_component.lua #: src/settings_translation_file.cpp @@ -414,13 +406,12 @@ msgid "Failed to download $1" msgstr "Falha ao baixar $1" #: builtin/mainmenu/content/contentdb.lua -#, fuzzy msgid "" "Failed to extract \"$1\" (insufficient disk space, unsupported file type or " "broken archive)" msgstr "" -"Não foi possível extrair \"$1\" (tipo de arquivo não suportado ou arquivo " -"corrompido)" +"Falha ao extrair \"$1\" (espaço insuficiente no disco, tipo de arquivo não " +"suportado ou quebrado)" #: builtin/mainmenu/content/dlg_contentdb.lua msgid "" @@ -436,12 +427,11 @@ msgstr "$1 baixando..." #: builtin/mainmenu/content/dlg_contentdb.lua msgid "All" -msgstr "" +msgstr "Todos" #: builtin/mainmenu/content/dlg_contentdb.lua -#, fuzzy msgid "ContentDB is not available when Luanti was compiled without cURL" -msgstr "ContentDB não está disponível quando Minetest é compilado sem cURL" +msgstr "ContentDB indisponível quando o Luanti foi compilado sem cURL" #: builtin/mainmenu/content/dlg_contentdb.lua msgid "Downloading..." @@ -449,7 +439,7 @@ msgstr "Baixando..." #: builtin/mainmenu/content/dlg_contentdb.lua msgid "Featured" -msgstr "" +msgstr "Destaque" #: builtin/mainmenu/content/dlg_contentdb.lua msgid "Games" @@ -479,13 +469,12 @@ msgid "Queued" msgstr "Na fila" #: builtin/mainmenu/content/dlg_contentdb.lua -#, fuzzy msgid "Texture Packs" -msgstr "Pacotes de texturas" +msgstr "Pacotes de textura" #: builtin/mainmenu/content/dlg_contentdb.lua msgid "The package $1 was not found." -msgstr "" +msgstr "O pacote $1 não foi encontrado." #: builtin/mainmenu/content/dlg_contentdb.lua msgid "Update All [$1]" @@ -521,9 +510,8 @@ msgid "Dependencies:" msgstr "Dependências:" #: builtin/mainmenu/content/dlg_install.lua -#, fuzzy msgid "Error getting dependencies for package $1" -msgstr "Erro ao obter dependências do pacote" +msgstr "Erro ao obter dependências do pacote $1" #: builtin/mainmenu/content/dlg_install.lua #: builtin/mainmenu/content/dlg_package.lua @@ -548,7 +536,7 @@ msgstr "Verifique se o jogo base está correto." #: builtin/mainmenu/content/dlg_install.lua msgid "You need to install a game before you can install a mod" -msgstr "" +msgstr "Você precisa instalar um jogo antes para poder instalar um mod" #: builtin/mainmenu/content/dlg_overwrite.lua msgid "\"$1\" already exists. Would you like to overwrite it?" @@ -559,57 +547,52 @@ msgid "Overwrite" msgstr "Sobrescrever" #: builtin/mainmenu/content/dlg_package.lua -#, fuzzy msgid "ContentDB page" -msgstr "Url do ContentDB" +msgstr "Ver no ContentDB" #: builtin/mainmenu/content/dlg_package.lua -#, fuzzy msgid "Description" -msgstr "Descrição do servidor" +msgstr "Descrição" #: builtin/mainmenu/content/dlg_package.lua msgid "Donate" -msgstr "" +msgstr "Doar" #: builtin/mainmenu/content/dlg_package.lua msgid "Error loading package information" -msgstr "" +msgstr "Erro ao carregar pacote de informação" #: builtin/mainmenu/content/dlg_package.lua -#, fuzzy msgid "Error loading reviews" -msgstr "Erro ao iniciar cliente: %s" +msgstr "Erro ao carregar avaliações" #: builtin/mainmenu/content/dlg_package.lua msgid "Forum Topic" -msgstr "" +msgstr "Tópico do Fórum" #: builtin/mainmenu/content/dlg_package.lua -#, fuzzy msgid "Information" -msgstr "Informação:" +msgstr "Informação" #: builtin/mainmenu/content/dlg_package.lua -#, fuzzy msgid "Install [$1]" -msgstr "Instalar $1" +msgstr "Instalar [$1]" #: builtin/mainmenu/content/dlg_package.lua msgid "Issue Tracker" -msgstr "" +msgstr "Sugerir Tópico" #: builtin/mainmenu/content/dlg_package.lua msgid "Reviews" -msgstr "" +msgstr "Avaliações" #: builtin/mainmenu/content/dlg_package.lua msgid "Source" -msgstr "" +msgstr "Fonte" #: builtin/mainmenu/content/dlg_package.lua msgid "Translate" -msgstr "" +msgstr "Traduzir" #: builtin/mainmenu/content/dlg_package.lua builtin/mainmenu/tab_content.lua msgid "Uninstall" @@ -620,18 +603,16 @@ msgid "Update" msgstr "Atualização" #: builtin/mainmenu/content/dlg_package.lua -#, fuzzy msgid "Website" -msgstr "Visitar site" +msgstr "Site" #: builtin/mainmenu/content/dlg_package.lua -#, fuzzy msgid "by $1" -msgstr "$1 por $2" +msgstr "por $1" #: builtin/mainmenu/content/dlg_package.lua msgid "by $1 — $2 downloads — +$3 / $4 / -$5" -msgstr "" +msgstr "por $1 — $2 downloads — +$3 / $4 / -$5" #: builtin/mainmenu/content/pkgmgr.lua msgid "$1 (Enabled)" @@ -667,6 +648,8 @@ msgid "" "Players connected to\n" "$1" msgstr "" +"Jogadores conectados a\n" +"$1" #: builtin/mainmenu/dlg_config_world.lua msgid "(Enabled, has error)" @@ -767,7 +750,7 @@ msgstr "Biomas" #: builtin/mainmenu/dlg_create_world.lua msgid "Caverns" -msgstr "Cavernas" +msgstr "Cavernas gigantes" #: builtin/mainmenu/dlg_create_world.lua msgid "Caves" @@ -783,7 +766,7 @@ msgstr "Decorações" #: builtin/mainmenu/dlg_create_world.lua msgid "Desert temples" -msgstr "" +msgstr "Templos do deserto" #: builtin/mainmenu/dlg_create_world.lua msgid "Development Test is meant for developers." @@ -794,6 +777,8 @@ msgid "" "Different dungeon variant generated in desert biomes (only if dungeons " "enabled)" msgstr "" +"Diferentes variantes de masmorras geradas em bioma de deserto (somente se as " +"masmorras estiverem habilitadas)" #: builtin/mainmenu/dlg_create_world.lua msgid "Dungeons" @@ -841,15 +826,15 @@ msgstr "Baixa humidade e calor elevado resultam em rios rasos ou secos" #: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp msgid "Mapgen" -msgstr "Gerador de mapa" +msgstr "Gerador de Mundo" #: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp msgid "Mapgen flags" -msgstr "Opções do gerador de mapas" +msgstr "Opções de geração de mundo" #: builtin/mainmenu/dlg_create_world.lua msgid "Mapgen-specific flags" -msgstr "Parâmetros específicos do gerador de mapas" +msgstr "Opções específicas do gerador de mapas" #: builtin/mainmenu/dlg_create_world.lua msgid "Mountains" @@ -954,29 +939,27 @@ msgstr "Excluir o mundo \"$1\"?" #: builtin/mainmenu/dlg_rebind_keys.lua msgid "As a result, your keybindings may have been changed." -msgstr "" +msgstr "Como resultado, suas teclas de atalho podem ter sido alteradas." #: builtin/mainmenu/dlg_rebind_keys.lua msgid "Check out the key settings or refer to the documentation:" -msgstr "" +msgstr "Confira as principais configurações ou consulte a documentação:" #: builtin/mainmenu/dlg_rebind_keys.lua msgid "Close" -msgstr "" +msgstr "Fechar" #: builtin/mainmenu/dlg_rebind_keys.lua -#, fuzzy msgid "Keybindings changed" -msgstr "Controles." +msgstr "Teclas de atalho alteradas" #: builtin/mainmenu/dlg_rebind_keys.lua -#, fuzzy msgid "Open settings" -msgstr "Configurações" +msgstr "Abrir configurações" #: builtin/mainmenu/dlg_rebind_keys.lua msgid "The input handling system was reworked in Luanti 5.12.0." -msgstr "" +msgstr "O sistema de tratamento de entrada foi refeito no Luanti 5.12.0." #: builtin/mainmenu/dlg_register.lua src/gui/guiPasswordChange.cpp msgid "Confirm Password" @@ -1010,28 +993,31 @@ msgstr "Registrar" #: builtin/mainmenu/dlg_reinstall_mtg.lua msgid "Dismiss" -msgstr "" +msgstr "Recusar" #: builtin/mainmenu/dlg_reinstall_mtg.lua msgid "" "For a long time, Luanti shipped with a default game called \"Minetest " "Game\". Since version 5.8.0, Luanti ships without a default game." msgstr "" +"Por muito tempo, o Luanti foi lançado com um jogo padrão chamado \"Minetest " +"Game\". Desde a versão 5.8.0, o Luanti foi lançado sem um jogo padrão." #: builtin/mainmenu/dlg_reinstall_mtg.lua msgid "" "If you want to continue playing in your Minetest Game worlds, you need to " "reinstall Minetest Game." msgstr "" +"Para continuar a jogar nos seus mundos do Minetest Game, reinstale o " +"Minetest Game." #: builtin/mainmenu/dlg_reinstall_mtg.lua msgid "Minetest Game is no longer installed by default" -msgstr "" +msgstr "O 'Minetest Game' não vem mais instalado por padrão" #: builtin/mainmenu/dlg_reinstall_mtg.lua -#, fuzzy msgid "Reinstall Minetest Game" -msgstr "Instalar outro jogo" +msgstr "Reinstale o Minetest Game" #: builtin/mainmenu/dlg_rename_modpack.lua msgid "Accept" @@ -1050,21 +1036,20 @@ msgstr "" "sobrescrever qualquer nome aqui." #: builtin/mainmenu/dlg_server_list_mods.lua -#, fuzzy msgid "Expand all" -msgstr "Habilitar todos" +msgstr "Mostrar tudo" #: builtin/mainmenu/dlg_server_list_mods.lua msgid "Group by prefix" -msgstr "" +msgstr "Agrupar por prefixo" #: builtin/mainmenu/dlg_server_list_mods.lua msgid "The $1 server uses a game called $2 and the following mods:" -msgstr "" +msgstr "O servidor $1 usa o jogo $2 e os seguintes mods:" #: builtin/mainmenu/dlg_server_list_mods.lua msgid "The $1 server uses the following mods:" -msgstr "" +msgstr "O servidor $1 usa os seguintes mods:" #: builtin/mainmenu/dlg_version_info.lua msgid "A new $1 version is available" @@ -1157,18 +1142,16 @@ msgid "Browse online content" msgstr "Procurar conteúdo online" #: builtin/mainmenu/tab_content.lua -#, fuzzy msgid "Browse online content [$1]" -msgstr "Procurar conteúdo online" +msgstr "Buscar conteúdo online [$1]" #: builtin/mainmenu/tab_content.lua msgid "Content" msgstr "Conteúdo" #: builtin/mainmenu/tab_content.lua -#, fuzzy msgid "Content [$1]" -msgstr "Conteúdo" +msgstr "Conteúdo [$1]" #: builtin/mainmenu/tab_content.lua msgid "Disable Texture Pack" @@ -1191,9 +1174,8 @@ msgid "Rename" msgstr "Renomear" #: builtin/mainmenu/tab_content.lua -#, fuzzy msgid "Update available?" -msgstr "" +msgstr "Atualização disponível?" #: builtin/mainmenu/tab_content.lua msgid "Use Texture Pack" @@ -1233,22 +1215,20 @@ msgstr "Instalar jogos do ContentDB" #: builtin/mainmenu/tab_local.lua msgid "Luanti doesn't come with a game by default." -msgstr "" +msgstr "O Luanti não vem com um jogo por padrão." #: builtin/mainmenu/tab_local.lua msgid "" "Luanti is a game-creation platform that allows you to play many different " "games." msgstr "" +"O Luanti é uma plataforma de criação de jogos que permite que você jogue " +"muitos jogos diferentes." #: builtin/mainmenu/tab_local.lua msgid "New" msgstr "Novo" -#: builtin/mainmenu/tab_local.lua -msgid "No world created or selected!" -msgstr "Nenhum mundo criado ou selecionado!" - #: builtin/mainmenu/tab_local.lua msgid "Play Game" msgstr "Jogar" @@ -1275,12 +1255,11 @@ msgstr "Iniciar Jogo" #: builtin/mainmenu/tab_local.lua msgid "You need to install a game before you can create a world." -msgstr "" +msgstr "Você precisa instalar um jogo para poder criar um mundo." #: builtin/mainmenu/tab_online.lua -#, fuzzy msgid "Add favorite" -msgstr "Remover favorito" +msgstr "Adicionar favorito" #: builtin/mainmenu/tab_online.lua msgid "Address" @@ -1300,9 +1279,8 @@ msgid "Favorites" msgstr "Favoritos" #: builtin/mainmenu/tab_online.lua -#, fuzzy msgid "Game: $1" -msgstr "Jogo" +msgstr "Jogo: $1" #: builtin/mainmenu/tab_online.lua msgid "Incompatible Servers" @@ -1310,32 +1288,31 @@ msgstr "Servidores incompatíveis" #: builtin/mainmenu/tab_online.lua msgid "Join Game" -msgstr "Entrar em um Jogo" +msgstr "Jogar Online" #: builtin/mainmenu/tab_online.lua msgid "Login" msgstr "Entrar" #: builtin/mainmenu/tab_online.lua -#, fuzzy msgid "Number of mods: $1" -msgstr "Número de seguimentos de emersão" +msgstr "Número de mods: $1" #: builtin/mainmenu/tab_online.lua -#, fuzzy msgid "Open server website" -msgstr "Passo do servidor dedicado" +msgstr "Abrir site do servidor" #: builtin/mainmenu/tab_online.lua msgid "Ping" msgstr "Ping" #: builtin/mainmenu/tab_online.lua -#, fuzzy msgid "" "Players:\n" "$1" -msgstr "Cliente" +msgstr "" +"Jogadores:\n" +"$1" #: builtin/mainmenu/tab_online.lua msgid "" @@ -1344,6 +1321,10 @@ msgid "" "mod:\n" "player:" msgstr "" +"Possíveis filtros\n" +"jogo:\n" +"mod:\n" +"jogador:" #: builtin/mainmenu/tab_online.lua msgid "Public Servers" @@ -1376,7 +1357,7 @@ msgstr "Pronto!" #: src/client/client.cpp #, c-format msgid "Failed to save screenshot to \"%s\"" -msgstr "" +msgstr "Falha ao salvar a captura de tela para \"%s\"" #: src/client/client.cpp msgid "Initializing nodes" @@ -1395,9 +1376,9 @@ msgid "Rebuilding shaders..." msgstr "Reconstruindo sombreadores..." #: src/client/client.cpp -#, fuzzy, c-format +#, c-format msgid "Saved screenshot to \"%s\"" -msgstr "Capturas de tela" +msgstr "Captura de tela salva em \"%s\"" #: src/client/clientlauncher.cpp msgid "Could not find or load game: " @@ -1422,7 +1403,7 @@ msgstr "Por favor, escolha um nome!" #: src/client/clientlauncher.cpp msgid "Provided password file failed to open: " -msgstr "Arquivo de senha fornecido falhou em abrir : " +msgstr "Arquivo de senha fornecido falhou em abrir: " #: src/client/clientlauncher.cpp msgid "Provided world path doesn't exist: " @@ -1450,9 +1431,8 @@ msgid "Access denied. Reason: %s" msgstr "Acesso negado. Razão:%s" #: src/client/game.cpp -#, fuzzy msgid "All debug info hidden" -msgstr "Informação de debug mostrada" +msgstr "Todas as informações de depuração ocultas" #: src/client/game.cpp msgid "Automatic forward disabled" @@ -1476,7 +1456,7 @@ msgstr "Limites de bloco mostrados para blocos próximos" #: src/client/game.cpp msgid "Bounding boxes shown" -msgstr "" +msgstr "Caixas delimitadoras mostradas" #: src/client/game.cpp msgid "Camera update disabled" @@ -1487,11 +1467,9 @@ msgid "Camera update enabled" msgstr "Atualização da camera habilitada" #: src/client/game.cpp -#, fuzzy msgid "Can't show block bounds (disabled by game or mod)" msgstr "" -"Não é possível mostrar limites de bloco (está desabilitado por um mod ou " -"jogo)" +"Não é possível mostrar limites de bloco (desabilitado por um mod ou jogo)" #: src/client/game.cpp msgid "Cinematic mode disabled" @@ -1576,9 +1554,8 @@ msgid "Fog enabled" msgstr "Névoa habilitada" #: src/client/game.cpp -#, fuzzy msgid "Fog enabled by game or mod" -msgstr "Zoom atualmente desabilitado por jogo ou mod" +msgstr "Névoa habilitada pelo jogo ou mod" #: src/client/game.cpp msgid "Item definitions..." @@ -1618,11 +1595,11 @@ msgstr "Carregando blocos..." #: src/client/game.cpp msgid "Pitch move mode disabled" -msgstr "Modo movimento pitch desabilitado" +msgstr "Modo de movimentação inclinada desabilitado" #: src/client/game.cpp msgid "Pitch move mode enabled" -msgstr "Modo movimento pitch habilitado" +msgstr "Modo movimentação inclinada habilitado" #: src/client/game.cpp msgid "Profiler graph shown" @@ -1668,49 +1645,52 @@ msgid "Unable to listen on %s because IPv6 is disabled" msgstr "Incapaz de escutar em%s porque IPv6 está desabilitado" #: src/client/game.cpp -#, fuzzy msgid "Unlimited viewing range disabled" -msgstr "Alcance de visualização ilimitado habilitado" +msgstr "Alcance ilimitado de visão desabilitado" #: src/client/game.cpp -#, fuzzy msgid "Unlimited viewing range enabled" -msgstr "Alcance de visualização ilimitado habilitado" +msgstr "Alcance ilimitado de visão habilitado" #: src/client/game.cpp msgid "Unlimited viewing range enabled, but forbidden by game or mod" -msgstr "" +msgstr "Alcance ilimitado de visão habilitado, mas proibido pelo jogo ou mod" #: src/client/game.cpp -#, fuzzy, c-format +#, c-format msgid "Viewing changed to %d (the minimum)" -msgstr "Alcance de visualização é no mínimo: %d" +msgstr "Distância mínima de visão alterada para: %d" #: src/client/game.cpp #, c-format msgid "Viewing changed to %d (the minimum), but limited to %d by game or mod" msgstr "" +"Distância mínima de visão alterada para %d, mas limitada para %d pelo jogo " +"ou mod" #: src/client/game.cpp #, c-format msgid "Viewing range changed to %d" -msgstr "Distancia de visualização alterado pra %d" +msgstr "Distância de visão alterada pra %d" #: src/client/game.cpp -#, fuzzy, c-format +#, c-format msgid "Viewing range changed to %d (the maximum)" -msgstr "Distancia de visualização alterado pra %d" +msgstr "Distância de visão alterada pra %d (o máximo)" #: src/client/game.cpp #, c-format msgid "" "Viewing range changed to %d (the maximum), but limited to %d by game or mod" msgstr "" +"Distância de visão alterada para %d (o máximo), mas limitada para %d pelo " +"jogo ou mod" #: src/client/game.cpp -#, fuzzy, c-format +#, c-format msgid "Viewing range changed to %d, but limited to %d by game or mod" -msgstr "Distancia de visualização alterado pra %d" +msgstr "" +"Distância de visão alterada para %d, mas limitada para %d pelo game ou mod" #: src/client/game.cpp #, c-format @@ -1719,7 +1699,7 @@ msgstr "Volume mudado para %d%%" #: src/client/game.cpp msgid "Wireframe not supported by video driver" -msgstr "" +msgstr "Wireframe não suportado pelo driver de vídeo" #: src/client/game.cpp msgid "Wireframe shown" @@ -1755,7 +1735,6 @@ msgid "Continue" msgstr "Continuar" #: src/client/game_formspec.cpp -#, fuzzy msgid "" "Controls:\n" "No menu open:\n" @@ -1771,17 +1750,17 @@ msgid "" " --> place single item to slot\n" msgstr "" "Controles:\n" -"Se não há nenhum menu visível:\n" -"- Um toque: ativa botão\n" -"- Duplo toque: place/use\n" -"- Deslizar dedo: Olhar ao redor\n" -"Menu/Inventário visível:\n" -"- Duplo toque: (Fora do menu):\n" -" -->Fechar\n" -"- Tocar Item e depois tocar em um slot:\n" -" --> move item\n" -"- Tocar e arrastar, e depois tocar com o 2º dedo\n" -" --> Coloca apenas um item no slot\n" +"Sem menu aberto:\n" +"- Deslizar dedo: olhar em volta\n" +"- Clique: colocar/bater/usar (padrão)\n" +"- Clique longo: cavar/usar (padrão)\n" +"Menu/Inventário aberto:\n" +"- Clique duplo (fora dele):\n" +" --> fecha\n" +"- Clicar no montante e clicar no nicho:\n" +" --> move o montante\n" +"- Clicar segurando e clicar com 2º dedo\n" +" --> põe apenas um item no nicho\n" #: src/client/game_formspec.cpp msgid "Exit to Menu" @@ -1856,121 +1835,95 @@ msgstr "Analisador ocultado" msgid "Profiler shown (page %d of %d)" msgstr "Analisador mostrado(página %d de %d)" -#: src/client/keycode.cpp -msgid "Apps" -msgstr "Aplicativos" - #: src/client/keycode.cpp msgid "Backspace" msgstr "Tecla voltar" #. ~ Usually paired with the Pause key #: src/client/keycode.cpp -#, fuzzy msgid "Break Key" -msgstr "Esgueirar" +msgstr "Tecla de Parar" #: src/client/keycode.cpp msgid "Caps Lock" msgstr "Caps Lock" #: src/client/keycode.cpp -#, fuzzy msgid "Clear Key" -msgstr "Limpar" +msgstr "Tecla de Limpar" #: src/client/keycode.cpp -#, fuzzy msgid "Control Key" -msgstr "Ctrl" +msgstr "Tecla Ctrl" #: src/client/keycode.cpp -#, fuzzy msgid "Delete Key" -msgstr "Deletar" +msgstr "Tecla Delete" #: src/client/keycode.cpp msgid "Down Arrow" -msgstr "" +msgstr "Seta para Baixo" #: src/client/keycode.cpp -msgid "End" -msgstr "Tecla End" +#, fuzzy +msgid "End Key" +msgstr "Tecla Menu" #: src/client/keycode.cpp -msgid "Erase EOF" -msgstr "Apagar EOF" +#, fuzzy +msgid "Help Key" +msgstr "Tecla Delete" #: src/client/keycode.cpp -msgid "Execute" -msgstr "Executar" - -#: src/client/keycode.cpp -msgid "Help" -msgstr "Ajuda" - -#: src/client/keycode.cpp -msgid "Home" -msgstr "Home" - -#: src/client/keycode.cpp -msgid "IME Accept" -msgstr "Aceitar Método de Entrada" - -#: src/client/keycode.cpp -msgid "IME Convert" -msgstr "Converter Método de Entrada" - -#: src/client/keycode.cpp -msgid "IME Escape" -msgstr "Sair do Método de Entrada" - -#: src/client/keycode.cpp -msgid "IME Mode Change" -msgstr "Mudar Modo de Método de Entrada" - -#: src/client/keycode.cpp -msgid "IME Nonconvert" -msgstr "Método de Entrada Inconversível" +#, fuzzy +msgid "Home Key" +msgstr "Tecla de Zoom" #: src/client/keycode.cpp msgid "Insert" msgstr "Inserir" #: src/client/keycode.cpp -#, fuzzy msgid "Left Arrow" -msgstr "Ctrl esquerdo" +msgstr "Seta Esquerda" #: src/client/keycode.cpp -msgid "Left Button" -msgstr "Botão esquerdo" +#, fuzzy +msgid "Left Click" +msgstr "Ctrl Esquerdo" #: src/client/keycode.cpp msgid "Left Control" -msgstr "Ctrl esquerdo" +msgstr "Ctrl Esquerdo" #: src/client/keycode.cpp msgid "Left Menu" -msgstr "Menu esquerdo" +msgstr "Menu Esquerdo" #: src/client/keycode.cpp msgid "Left Shift" -msgstr "Shift esquerdo" +msgstr "Shift Esquerdo" +#. ~ Name of key #: src/client/keycode.cpp msgid "Left Windows" msgstr "Windows esquerdo" -#. ~ Key name, common on Windows keyboards #: src/client/keycode.cpp -#, fuzzy msgid "Menu Key" -msgstr "Menu" +msgstr "Tecla Menu" #: src/client/keycode.cpp -msgid "Middle Button" -msgstr "Roda do mouse" +msgid "Middle Click" +msgstr "" + +#: src/client/keycode.cpp +msgid "Mouse X1" +msgstr "" + +#: src/client/keycode.cpp +msgid "Mouse X2" +msgstr "" #: src/client/keycode.cpp msgid "Num Lock" @@ -2037,24 +1990,17 @@ msgid "Numpad 9" msgstr "Tecl.num. 9" #: src/client/keycode.cpp -msgid "OEM Clear" -msgstr "Limpar OEM" - -#: src/client/keycode.cpp -#, fuzzy msgid "Page Down" -msgstr "Page down" +msgstr "Descer Página" #: src/client/keycode.cpp -#, fuzzy msgid "Page Up" -msgstr "Page up" +msgstr "Subir Página" #. ~ Usually paired with the Break key #: src/client/keycode.cpp -#, fuzzy msgid "Pause Key" -msgstr "Pausar" +msgstr "Tecla de Pause" #: src/client/keycode.cpp msgid "Play" @@ -2066,19 +2012,18 @@ msgid "Print" msgstr "Print Screen" #: src/client/keycode.cpp -#, fuzzy msgid "Return Key" -msgstr "Enter" +msgstr "Tecla de Voltar" + +#: src/client/keycode.cpp +msgid "Right Arrow" +msgstr "Seta Direita" #: src/client/keycode.cpp #, fuzzy -msgid "Right Arrow" +msgid "Right Click" msgstr "Ctrl direito" -#: src/client/keycode.cpp -msgid "Right Button" -msgstr "Botão direito" - #: src/client/keycode.cpp msgid "Right Control" msgstr "Ctrl direito" @@ -2091,6 +2036,7 @@ msgstr "Menu direito" msgid "Right Shift" msgstr "Shift direito" +#. ~ Name of key #: src/client/keycode.cpp msgid "Right Windows" msgstr "Windows direito" @@ -2099,48 +2045,27 @@ msgstr "Windows direito" msgid "Scroll Lock" msgstr "Scroll Lock" -#. ~ Key name -#: src/client/keycode.cpp -msgid "Select" -msgstr "Tecla Select" - #: src/client/keycode.cpp #, fuzzy +msgid "Select Key" +msgstr "Tecla Delete" + +#: src/client/keycode.cpp msgid "Shift Key" -msgstr "Shift" - -#: src/client/keycode.cpp -msgid "Sleep" -msgstr "Tecla Sleep" - -#: src/client/keycode.cpp -msgid "Snapshot" -msgstr "Captura de tela" +msgstr "Tecla Shift" #: src/client/keycode.cpp msgid "Space" msgstr "Espaço" #: src/client/keycode.cpp -msgid "Tab" -msgstr "Tab" +#, fuzzy +msgid "Tab Key" +msgstr "Tecla de Parar" #: src/client/keycode.cpp msgid "Up Arrow" -msgstr "" - -#: src/client/keycode.cpp -msgid "X Button 1" -msgstr "Botão X 1" - -#: src/client/keycode.cpp -msgid "X Button 2" -msgstr "Botão X 2" - -#: src/client/keycode.cpp -#, fuzzy -msgid "Zoom Key" -msgstr "Zoom" +msgstr "Seta para Cima" #: src/client/minimap.cpp msgid "Minimap hidden" @@ -2161,14 +2086,13 @@ msgid "Minimap in texture mode" msgstr "Minimapa em modo de textura" #: src/client/shader.cpp -#, fuzzy, c-format +#, c-format msgid "Failed to compile the \"%s\" shader." -msgstr "Falha ao abrir página da web" +msgstr "Falha ao compilar o shader \"%s\"." #: src/client/shader.cpp -#, fuzzy msgid "GLSL is not supported by the driver" -msgstr "Sistema de som não é suportado nesta versão" +msgstr "GLSL não suportado pelo driver" #. ~ Error when a mod is missing dependencies. Ex: "Mod Title is missing: mod1, mod2, mod3" #: src/content/mod_configuration.cpp @@ -2195,9 +2119,8 @@ msgid "Some mods have unsatisfied dependencies:" msgstr "Alguns Mods têm dependências insatisfeitas:" #: src/gui/guiButtonKey.h -#, fuzzy msgid "Press Button" -msgstr "Botão esquerdo" +msgstr "Apertar Botão" #: src/gui/guiChatConsole.cpp msgid "Failed to open webpage" @@ -2213,16 +2136,15 @@ msgstr "Continuar" #: src/gui/guiOpenURL.cpp msgid "Open" -msgstr "" +msgstr "Abrir" #: src/gui/guiOpenURL.cpp msgid "Open URL?" -msgstr "" +msgstr "Abrir URL?" #: src/gui/guiOpenURL.cpp -#, fuzzy msgid "Unable to open URL" -msgstr "Falha ao abrir página da web" +msgstr "Não é possível abrir página da web" #: src/gui/guiPasswordChange.cpp msgid "Change" @@ -2250,35 +2172,32 @@ msgid "Sound Volume: %d%%" msgstr "Volume do som: %d%%" #: src/gui/touchscreeneditor.cpp -#, fuzzy msgid "Add button" -msgstr "Roda do mouse" +msgstr "Adicionar botão" #: src/gui/touchscreeneditor.cpp -#, fuzzy msgid "Done" -msgstr "Pronto!" +msgstr "Feito" #: src/gui/touchscreeneditor.cpp -#, fuzzy msgid "Remove" -msgstr "Servidor remoto" +msgstr "Remover" #: src/gui/touchscreeneditor.cpp msgid "Reset" -msgstr "" +msgstr "Reiniciar" #: src/gui/touchscreeneditor.cpp msgid "Start dragging a button to add. Tap outside to cancel." -msgstr "" +msgstr "Comece arrastando um botão para adicionar. Clique fora para cancelar." #: src/gui/touchscreeneditor.cpp msgid "Tap a button to select it. Drag a button to move it." -msgstr "" +msgstr "Clique em um botão para o selecionar. Arraste um botão para o mover." #: src/gui/touchscreeneditor.cpp msgid "Tap outside to deselect." -msgstr "" +msgstr "Clique fora para desmarcar." #: src/gui/touchscreenlayout.cpp src/settings_translation_file.cpp msgid "Aux1" @@ -2290,7 +2209,7 @@ msgstr "Mudar camera" #: src/gui/touchscreenlayout.cpp src/settings_translation_file.cpp msgid "Dig/punch/use" -msgstr "" +msgstr "Cavar/bater/usar" #: src/gui/touchscreenlayout.cpp msgid "Drop" @@ -2305,9 +2224,8 @@ msgid "Inventory" msgstr "Inventário" #: src/gui/touchscreenlayout.cpp -#, fuzzy msgid "Joystick" -msgstr "ID do Joystick" +msgstr "Joystick" #: src/gui/touchscreenlayout.cpp src/settings_translation_file.cpp msgid "Jump" @@ -2315,12 +2233,11 @@ msgstr "Pular" #: src/gui/touchscreenlayout.cpp msgid "Overflow menu" -msgstr "" +msgstr "Mais opções" #: src/gui/touchscreenlayout.cpp src/settings_translation_file.cpp -#, fuzzy msgid "Place/use" -msgstr "Tecla de colocar" +msgstr "Colocar/usar" #: src/gui/touchscreenlayout.cpp msgid "Range select" @@ -2335,9 +2252,8 @@ msgid "Toggle chat log" msgstr "Ativar histórico de conversa" #: src/gui/touchscreenlayout.cpp -#, fuzzy msgid "Toggle debug" -msgstr "Ativar névoa" +msgstr "Alternar depuração" #: src/gui/touchscreenlayout.cpp src/settings_translation_file.cpp msgid "Toggle fast" @@ -2349,7 +2265,7 @@ msgstr "Alternar voo" #: src/gui/touchscreenlayout.cpp src/settings_translation_file.cpp msgid "Toggle minimap" -msgstr "Ativar minimapa" +msgstr "Alternar minimapa" #: src/gui/touchscreenlayout.cpp src/settings_translation_file.cpp msgid "Toggle noclip" @@ -2364,19 +2280,20 @@ msgid "" "Another client is connected with this name. If your client closed " "unexpectedly, try again in a minute." msgstr "" +"Outro cliente está conectado com este nome. Se o seu cliente fechou " +"inesperadamente, tente novamente em um minuto." #: src/network/clientpackethandler.cpp msgid "Empty passwords are disallowed. Set a password and try again." -msgstr "" +msgstr "Senhas vazias não são permitidas. Defina uma senha e tente novamente." #: src/network/clientpackethandler.cpp msgid "Internal server error" -msgstr "" +msgstr "Erro no servidor interno" #: src/network/clientpackethandler.cpp -#, fuzzy msgid "Invalid password" -msgstr "Senha antiga" +msgstr "Senha inválida" #. ~ DO NOT TRANSLATE THIS LITERALLY! #. This is a special string which needs to contain the translation's @@ -2399,51 +2316,54 @@ msgstr "Nome em uso. Favor escolher outro nome" #: src/network/clientpackethandler.cpp msgid "Player name contains disallowed characters" -msgstr "" +msgstr "O nome do jogador contém caracteres não permitidos" #: src/network/clientpackethandler.cpp -#, fuzzy msgid "Player name not allowed" -msgstr "Nome de jogador muito longo." +msgstr "Nome de jogador não permitido" #: src/network/clientpackethandler.cpp -#, fuzzy msgid "Server shutting down" -msgstr "Desligando tudo..." +msgstr "Servidor desligando" #: src/network/clientpackethandler.cpp msgid "" "The server has experienced an internal error. You will now be disconnected." -msgstr "" +msgstr "Ocorreu um erro interno no servidor. Você será desconectado." #: src/network/clientpackethandler.cpp msgid "The server is running in singleplayer mode. You cannot connect." msgstr "" +"O servidor está rodando no modo singleplayer. Você não consegue se conectar." #: src/network/clientpackethandler.cpp msgid "Too many users" -msgstr "" +msgstr "Usuários em excesso" #: src/network/clientpackethandler.cpp msgid "Unknown disconnect reason." -msgstr "" +msgstr "Motivo de desconexão desconhecido." #: src/network/clientpackethandler.cpp msgid "" "Your client sent something the server didn't expect. Try reconnecting or " "updating your client." msgstr "" +"Seu cliente enviou algo inesperado ao servidor. Tente reconectar ou " +"atualizar seu cliente." #: src/network/clientpackethandler.cpp msgid "" "Your client's version is not supported.\n" "Please contact the server administrator." msgstr "" +"A versão do seu cliente não é suportada.\n" +"Entre em contato com o administrador do servidor." #: src/server.cpp -#, fuzzy, c-format +#, c-format msgid "%s while shutting down: " -msgstr "Desligando tudo..." +msgstr "%s para desligar: " #: src/settings_translation_file.cpp msgid "" @@ -2518,7 +2438,7 @@ msgstr "Ruído 2D que localiza os vales e canais dos rios." #: src/settings_translation_file.cpp msgid "3D" -msgstr "" +msgstr "3D" #: src/settings_translation_file.cpp msgid "3D clouds" @@ -2581,12 +2501,11 @@ msgstr "Ruído 3D que determina o número de cavernas por pedaço de mapa." msgid "" "3D support.\n" "Currently supported:\n" -"- none: no 3d output.\n" -"- anaglyph: cyan/magenta color 3d.\n" -"- interlaced: odd/even line based polarization screen support.\n" -"- topbottom: split screen top/bottom.\n" -"- sidebyside: split screen side by side.\n" -"- crossview: Cross-eyed 3d" +"- none: no 3D output\n" +"- anaglyph: cyan/magenta color 3D\n" +"- topbottom: split screen top/bottom\n" +"- sidebyside: split screen side-by-side\n" +"- crossview: cross-eyed 3D" msgstr "" "Suporte 3D.\n" "Modos atualmente suportados:\n" @@ -2595,8 +2514,7 @@ msgstr "" "- interlaced: Sistema interlaçado (Óculos com lentes polarizadas).\n" "- topbottom: Divide a tela em duas: uma em cima e outra em baixo.\n" "- sidebyside: Divide a tela em duas: lado a lado.\n" -"- crossview: 3D de olhos cruzados.\n" -"Note que o modo interlaçado requer que o sombreamento esteja habilitado." +"- crossview: 3D de olhos cruzados" #: src/settings_translation_file.cpp msgid "" @@ -2688,27 +2606,25 @@ msgid "" "All mesh buffers with less than this number of vertices will be merged\n" "during map rendering. This improves rendering performance." msgstr "" +"Todos os buffers de malha com menos que esse número de vértices serão " +"mesclados\n" +"durante a renderização do mapa. Isso melhora o desempenho da renderização." #: src/settings_translation_file.cpp -#, fuzzy msgid "Allow clouds to look 3D instead of flat." -msgstr "Usar nuvens 3D em vez de planas." +msgstr "Permite nuvens 3D ao invés de planas." #: src/settings_translation_file.cpp msgid "Allows liquids to be translucent." -msgstr "" +msgstr "Permite que líquidos sejam translúcidos." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Also used for climbing down and descending in water if aux1_descends is " "disabled." msgstr "" -"Tecla por esgueirar.\n" -"Também usado para descer e descendente na água se aux1_descends está " -"desativado.\n" -"Consulte http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" +"Também usada para descer e mergulhar na água se o aux1_descends estiver " +"desativado." #: src/settings_translation_file.cpp msgid "" @@ -2750,22 +2666,20 @@ msgid "Announce to this serverlist." msgstr "Anuncie para esta lista de servidor." #: src/settings_translation_file.cpp -#, fuzzy msgid "Anti-aliasing scale" -msgstr "Anti-aliasing:" +msgstr "Nível de anti-serrilhamento" #: src/settings_translation_file.cpp -#, fuzzy msgid "Antialiasing method" -msgstr "Anti-aliasing:" +msgstr "Método de anti-serrilhamento" #: src/settings_translation_file.cpp msgid "Anticheat flags" -msgstr "" +msgstr "Marcações anticheat" #: src/settings_translation_file.cpp msgid "Anticheat movement tolerance" -msgstr "" +msgstr "Tolerância de movimento anticheat" #: src/settings_translation_file.cpp msgid "Append item name" @@ -2789,6 +2703,13 @@ msgid "" "With OpenGL ES, dithering only works if the shader supports high\n" "floating-point precision and it may have a higher performance impact." msgstr "" +"Aplica hesitância (dithering) para reduzir artefatos de faixas de cores.\n" +"A hesitância aumenta significativamente o tamanho da compactação sem\n" +"perdas na captura de tela e funciona incorretamente se o monitor ou o\n" +"sistema operacional executarem hesitância adicional ou se os canais de cor\n" +"não forem quantizados para 8 bits.\n" +"Com o OpenGL ES, a hesitância só funciona se o shader suportar alta\n" +"precisão de ponto flutuante e pode ter um impacto maior no desempenho." #: src/settings_translation_file.cpp msgid "Arm inertia" @@ -2807,7 +2728,6 @@ msgid "Ask to reconnect after crash" msgstr "Peça para reconectar depois de queda" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "At this distance the server will aggressively optimize which blocks are sent " "to\n" @@ -2824,16 +2744,14 @@ msgstr "" "aos clientes.\n" "Pequenos valores potencialmente melhoram muito o desempenho, à custa de " "falhas\n" -"de renderização visíveis (alguns blocos não serão processados debaixo da " -"água e nas\n" -"cavernas, bem como às vezes em terra).\n" +"de renderização visíveis (alguns blocos podem não ser corretamente " +"renderizados nas cavernas).\n" "Configurando isso para um valor maior do que a " "distância_máxima_de_envio_do_bloco\n" "para desabilitar essa otimização.\n" -"Especificado em barreiras do mapa (16 nodes)." +"Especificado em Blocos de Mapa (16 nós)." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "At this distance the server will perform a simpler and cheaper occlusion " "check.\n" @@ -2843,18 +2761,14 @@ msgid "" "This is especially useful for very large viewing range (upwards of 500).\n" "Stated in MapBlocks (16 nodes)." msgstr "" -"Nesta distância, o servidor otimizará agressivamente quais blocos serão " -"enviados\n" -"aos clientes.\n" -"Pequenos valores potencialmente melhoram muito o desempenho, à custa de " -"falhas\n" -"de renderização visíveis (alguns blocos não serão processados debaixo da " -"água e nas\n" -"cavernas, bem como às vezes em terra).\n" -"Configurando isso para um valor maior do que a " -"distância_máxima_de_envio_do_bloco\n" -"para desabilitar essa otimização.\n" -"Especificado em barreiras do mapa (16 nodes)." +"A esta distância, o servidor realizará uma verificação de oclusão mais " +"simples e econômica.\n" +"Valores menores potencialmente melhoram o desempenho, à custa de falhas de " +"renderização\n" +"temporariamente visíveis (blocos ausentes).\n" +"Isso é especialmente útil para alcances de visualização muito amplos (acima " +"de 500).\n" +"Especificado em Blocos de Mapa (16 nós)." #: src/settings_translation_file.cpp msgid "Audio" @@ -2889,9 +2803,8 @@ msgid "Base terrain height." msgstr "Altura base do terreno." #: src/settings_translation_file.cpp -#, fuzzy msgid "Base texture size" -msgstr "Tamanho mínimo da textura" +msgstr "Tamanho base da textura" #: src/settings_translation_file.cpp msgid "Basic privileges" @@ -2914,27 +2827,24 @@ msgid "Bind address" msgstr "Endereço de bind" #: src/settings_translation_file.cpp -#, fuzzy msgid "Biome API" -msgstr "Biomas" +msgstr "API de Biomas" #: src/settings_translation_file.cpp msgid "Biome noise" msgstr "Ruído do bioma" #: src/settings_translation_file.cpp -#, fuzzy msgid "Block bounds HUD radius" -msgstr "Limites de bloco" +msgstr "Raio HUD dos limites do bloco" #: src/settings_translation_file.cpp -#, fuzzy msgid "Block cull optimize distance" -msgstr "Distância otimizada de envio de bloco" +msgstr "Distância otimizada de eliminação de blocos" #: src/settings_translation_file.cpp msgid "Block send optimize distance" -msgstr "Distância otimizada de envio de bloco" +msgstr "Distância otimizada de envio de blocos" #: src/settings_translation_file.cpp msgid "Bobbing" @@ -2976,6 +2886,17 @@ msgstr "Suavização da camera" msgid "Camera smoothing in cinematic mode" msgstr "Suavização da câmera no modo cinematográfico" +#: src/settings_translation_file.cpp +msgid "Capture Tracy zones" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Capture Tracy zones with the profiler's instrumentation.\n" +"You need to build with Tracy to use this, see doc/developing/profiling.md\n" +"for details." +msgstr "" + #: src/settings_translation_file.cpp msgid "Cave noise" msgstr "Ruído de cavernas" @@ -3081,9 +3002,8 @@ msgid "Client" msgstr "Cliente" #: src/settings_translation_file.cpp -#, fuzzy msgid "Client Debugging" -msgstr "Depuração" +msgstr "Depuração do Cliente" #: src/settings_translation_file.cpp msgid "Client Mesh Chunksize" @@ -3106,9 +3026,8 @@ msgid "Client-side Modding" msgstr "Modding do lado do cliente" #: src/settings_translation_file.cpp -#, fuzzy msgid "Client-side node lookup range restriction" -msgstr "Restrição do alcançe da visão superior de nós no lado do cliente" +msgstr "Restrição ao cliente no alcance da consulta de nós" #: src/settings_translation_file.cpp msgid "Climbing speed" @@ -3128,7 +3047,7 @@ msgstr "Nuvens no menu" #: src/settings_translation_file.cpp msgid "Color depth for post-processing texture" -msgstr "" +msgstr "Profundidade de cor para textura de pós-processamento" #: src/settings_translation_file.cpp msgid "Colored fog" @@ -3143,9 +3062,10 @@ msgid "" "Comma-separated list of AL and ALC extensions that should not be used.\n" "Useful for testing. See al_extensions.[h,cpp] for details." msgstr "" +"Lista separada por vírgulas de extensões AL e ALC que não devem ser usadas.\n" +"Útil para testes. Consulte al_extensions.[h,cpp] para obter detalhes." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Comma-separated list of flags to hide in the content repository.\n" "\"nonfree\" can be used to hide packages which do not qualify as 'free " @@ -3155,14 +3075,14 @@ msgid "" "These flags are independent from Luanti versions,\n" "so see a full list at https://content.luanti.org/help/content_flags/" msgstr "" -"Lista de flags separadas por vírgula para esconder no repositório de " -"conteúdos.\n" -"\"não livre\" pode ser usada para esconder pacotes que não se qualificam " -"como software livre,\n" -"como definido pela fundação do software livre.\n" -"Você também pode especificar classificação de conteúdo.\n" -"Essas flags são independentes das versões do minetest,\n" -"veja a lista completa em https://content.minetest.net/help/content_flags/" +"Lista separada por vírgulas de sinalizações a serem ocultados no repositório " +"de conteúdo.\n" +"\"não-livre\" pode ser usado para ocultar pacotes que não se qualificam como " +"'software livre',\n" +"conforme definido pela Free Software Foundation.\n" +"Você também pode especificar classificações de conteúdo.\n" +"Essas sinalizações são independentes das versões do Luanti,\n" +"então veja a lista completa em https://content.luanti.org/help/content_flags/" #: src/settings_translation_file.cpp msgid "" @@ -3333,16 +3253,19 @@ msgid "" "Reducing this can improve performance, but some effects (e.g. debanding)\n" "require more than 8 bits to work." msgstr "" +"Decida a profundidade de cor da textura usada no pipeline de pós-" +"processamento.\n" +"Reduzir isso pode melhorar o desempenho, mas alguns efeitos (ex.: " +"debanding)\n" +"requerem mais de 8 bits para funcionar." #: src/settings_translation_file.cpp -#, fuzzy msgid "Decrease view range" -msgstr "Alcance dec" +msgstr "Reduzir alcance de visão" #: src/settings_translation_file.cpp -#, fuzzy msgid "Decrease volume" -msgstr "Abaixar volume" +msgstr "Reduzir volume" #: src/settings_translation_file.cpp msgid "Dedicated server step" @@ -3353,12 +3276,11 @@ msgid "Default acceleration" msgstr "Aceleração padrão" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Default maximum number of forceloaded mapblocks.\n" "Set this to -1 to disable the limit." msgstr "" -"Número máximo padrão de blocos de mapas carregados à força.\n" +"Número máximo padrão para blocos de mapa carregados à força.\n" "Defina como -1 para desativar o limite." #: src/settings_translation_file.cpp @@ -3388,7 +3310,6 @@ msgstr "" "mas também usa mais recursos." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Define the oldest clients allowed to connect.\n" "Older clients are compatible in the sense that they will not crash when " @@ -3400,11 +3321,15 @@ msgid "" "Luanti still enforces its own internal minimum, and enabling\n" "strict_protocol_version_checking will effectively override this." msgstr "" -"Habilitar recurso de não permitir que jogadores usando versões antigas do " -"cliente possam se conectar.\n" -"Essas versões são compatíveis no sentido de não travar quando conectam a " -"servidores com versões mais atuais,\n" -"porém eles podem não suportar todos os recursos que você está esperando." +"Defina os clientes mais antigos com permissão para se conectar.\n" +"Clientes mais antigos são compatíveis no sentido de que não travarão ao se " +"conectar\n" +"a novos servidores, mas podem não suportar todos os novos recursos que você " +"espera.\n" +"Isso permite um controle mais refinado do que o " +"strict_protocol_version_checking.\n" +"O Luanti ainda impõe seu próprio mínimo interno, e habilitar o\n" +"strict_protocol_version_checking efetivamente substituirá isso." #: src/settings_translation_file.cpp msgid "Defines areas where trees have apples." @@ -3457,6 +3382,9 @@ msgid "" "methods.\n" "Value of 2 means taking 2x2 = 4 samples." msgstr "" +"Define o tamanho da grade de amostragem para os métodos de antialiasing FSAA " +"e SSAA.\n" +"O valor 2 significa que serão coletadas 2x2 = 4 amostras." #: src/settings_translation_file.cpp msgid "Defines the width of the river channel." @@ -3471,14 +3399,13 @@ msgid "Defines tree areas and tree density." msgstr "Define áreas de árvores e densidade das árvores." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Delay between mesh updates on the client in ms. Increasing this will slow\n" "down the rate of mesh updates, which can help reduce jitter." msgstr "" -"Tempo entre atualizações das malhas 3D no cliente em milissegundos.\n" -"Aumentar isso vai retardar a taxa de atualização das malhas, sendo assim, " -"reduzindo travamentos em clientes lentos." +"Atraso entre atualizações de malha para o cliente em milissegundos. Aumentar " +"esse tempo diminuirá\n" +"a taxa de atualizações de malha, o que pode ajudar a reduzir a instabilidade." #: src/settings_translation_file.cpp msgid "Delay in sending blocks after building" @@ -3524,6 +3451,10 @@ msgstr "" msgid "Developer Options" msgstr "Opções de Desenvolvedor" +#: src/settings_translation_file.cpp +msgid "Disable if you only want to instrument with Tracy." +msgstr "" + #: src/settings_translation_file.cpp msgid "Disallow empty passwords" msgstr "Não permitir logar sem senha" @@ -3533,15 +3464,15 @@ msgid "Display Density Scaling Factor" msgstr "Fator de Escala da Densidade do Monitor" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Distance in nodes at which transparency depth sorting is enabled.\n" "Use this to limit the performance impact of transparency depth sorting.\n" "Set to 0 to disable it entirely." msgstr "" -"Distância em nodes no qual o ordenamento da transparência pela profundidade " -"é habilitado\n" -"Use isso para limitar o impacto no desempenho deste ordenamento" +"Distância em nós em que a classificação da profundidade de transparência é " +"habilitada.\n" +"Use isso para limitar o impacto dela no desempenho.\n" +"Defina como 0 para a desabilitar completamente." #: src/settings_translation_file.cpp msgid "Domain name of server, to be displayed in the serverlist." @@ -3562,15 +3493,19 @@ msgid "" "situations\n" "where transparency sorting would be very slow otherwise." msgstr "" +"Cria triângulos classificados por transparência, agrupados por seus buffers " +"de malha.\n" +"Isso interrompe a classificação por transparência entre os buffers de malha, " +"mas evita\n" +"situações em que a classificação por transparência seria muito lenta." #: src/settings_translation_file.cpp -#, fuzzy msgid "Drop item" -msgstr "Tecla para largar item" +msgstr "Soltar item" #: src/settings_translation_file.cpp msgid "Dump the mapgen debug information." -msgstr "Mostrar informações de depuração do Gerador de mapa." +msgstr "Mostrar informações de depuração do Gerador de Mapa." #: src/settings_translation_file.cpp msgid "Dungeon maximum Y" @@ -3585,9 +3520,8 @@ msgid "Dungeon noise" msgstr "Ruído de masmorra" #: src/settings_translation_file.cpp -#, fuzzy msgid "Effects" -msgstr "Efeitos Gráficos" +msgstr "Efeitos" #: src/settings_translation_file.cpp msgid "Enable Automatic Exposure" @@ -3595,16 +3529,15 @@ msgstr "Habilita Exposição Automática" #: src/settings_translation_file.cpp msgid "Enable Bloom" -msgstr "Habilitar floração" +msgstr "Habilitar Resplandecer" #: src/settings_translation_file.cpp msgid "Enable Bloom Debug" -msgstr "Habilitar depuração da floração" +msgstr "Habilitar Depuração no Resplandecer" #: src/settings_translation_file.cpp -#, fuzzy msgid "Enable Debanding" -msgstr "Habilitar Dano" +msgstr "Habilitar Debandamento" #: src/settings_translation_file.cpp msgid "" @@ -3620,6 +3553,9 @@ msgid "" "Note that clients will be able to connect with both IPv4 and IPv6.\n" "Ignored if bind_address is set." msgstr "" +"Habilitar suporte a IPv6 para o servidor.\n" +"Note que os clientes poderão se conectar com IPv4 e IPv6.\n" +"Ignorado se o bind_address estiver definido." #: src/settings_translation_file.cpp msgid "" @@ -3640,13 +3576,12 @@ msgstr "" "contrário, usa filtragem PCF." #: src/settings_translation_file.cpp -#, fuzzy msgid "Enable Post Processing" -msgstr "Pós-processamento" +msgstr "Habilitar pós-processamento" #: src/settings_translation_file.cpp msgid "Enable Raytraced Culling" -msgstr "" +msgstr "Habilitar Seleção de Raytracing" #: src/settings_translation_file.cpp msgid "" @@ -3661,14 +3596,12 @@ msgstr "" "simulando o comportamento do olho humano." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Enable colored shadows for transculent nodes.\n" "This is expensive." msgstr "" -"Ativa sombras coloridas.\n" -"Quando em true, nodes translúcidos podem projetar sombras coloridas. Requer " -"o uso de muitos recursos." +"Habilitar sombras coloridas para nós translúcidos.\n" +"Isso demanda muito processamento." #: src/settings_translation_file.cpp msgid "Enable console window" @@ -3693,22 +3626,20 @@ msgstr "Habilitar Mod Security (Segurança nos mods)" #: src/settings_translation_file.cpp msgid "Enable mouse wheel (scroll) for item selection in hotbar." msgstr "" +"Habilitar a roda do mouse (rolagem) para selecionar de itens na barra de " +"itens." #: src/settings_translation_file.cpp -#, fuzzy msgid "Enable random mod loading (mainly used for testing)." -msgstr "Habilitar entrada de comandos aleatórios (apenas usado para testes)." +msgstr "Habilitar carregamentos aleatórios em mods (mais usado para testes)." #: src/settings_translation_file.cpp msgid "Enable random user input (only used for testing)." msgstr "Habilitar entrada de comandos aleatórios (apenas usado para testes)." #: src/settings_translation_file.cpp -#, fuzzy msgid "Enable smooth lighting with simple ambient occlusion." -msgstr "" -"Ativar iluminação suave com oclusão de ambiente simples.\n" -"Desativada para andar rápido ou para visões diferentes." +msgstr "Ativar iluminação suave com oclusão simples de ambiente." #: src/settings_translation_file.cpp msgid "Enable split login/register" @@ -3730,7 +3661,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Enable updates available indicator on content tab" -msgstr "" +msgstr "Habilitar indicador de atualizações disponíveis na guia de conteúdo" #: src/settings_translation_file.cpp msgid "" @@ -3771,16 +3702,15 @@ msgstr "Habilita itens animados no inventário." #: src/settings_translation_file.cpp msgid "Enables debug and error-checking in the OpenGL driver." -msgstr "" +msgstr "Habilita depuração e verificação de erros no driver OpenGL." #: src/settings_translation_file.cpp -#, fuzzy msgid "Enables smooth scrolling." -msgstr "Pós-processamento" +msgstr "Habilitar rolagem suave." #: src/settings_translation_file.cpp msgid "Enables the post processing pipeline." -msgstr "" +msgstr "Habilita o pipeline de pós-processamento." #: src/settings_translation_file.cpp msgid "" @@ -3789,6 +3719,11 @@ msgid "" "\"auto\" means that the touchscreen controls will be enabled and disabled\n" "automatically depending on the last used input method." msgstr "" +"Ativa os controles de touchscreen, permitindo jogar em uma tela " +"touchscreen.\n" +"\"auto\" significa que os controles da tela touchscreen serão ativados e " +"desativados\n" +"automaticamente, dependendo do último método de entrada usado." #: src/settings_translation_file.cpp msgid "" @@ -3800,9 +3735,8 @@ msgstr "" "à custa de pequenas falhas visuais que não afetam a jogabilidade." #: src/settings_translation_file.cpp -#, fuzzy msgid "Engine Profiler" -msgstr "Depurador da Engine" +msgstr "Analisador da Engine" #: src/settings_translation_file.cpp msgid "Engine profiling data print interval" @@ -3813,7 +3747,6 @@ msgid "Entity methods" msgstr "Metodos de entidade" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Exponent of the floatland tapering. Alters the tapering behavior.\n" "Value = 1.0 creates a uniform, linear tapering.\n" @@ -3825,8 +3758,9 @@ msgstr "" "Expoente de estreitamento das ilhas flutuantes. Altera o comportamento de " "afilamento.\n" "Valor = 1.0 cria um afunilamento linear uniforme.\n" -"Valores> 1.0 criam um estreitamento suave adequado para as ilhas flutuantes\n" -"padrão (separadas).\n" +"Valores> 1.0 criam um estreitamento suave adequado para ilhas flutuantes " +"separadas,\n" +"como costumam ser por padrão.\n" "Valores <1.0 (por exemplo 0.25) criam um nível de superfície mais definido " "com\n" "planícies mais planas, adequadas para uma camada sólida de ilhas flutuantes." @@ -3840,9 +3774,8 @@ msgid "FPS" msgstr "FPS" #: src/settings_translation_file.cpp -#, fuzzy msgid "FPS when unfocused" -msgstr "FPS quando o jogo é pausado ou perde o foco" +msgstr "FPS quando desfocado" #: src/settings_translation_file.cpp msgid "Factor noise" @@ -3888,7 +3821,7 @@ msgstr "Profundidade de enchimento de ruído" #: src/settings_translation_file.cpp msgid "Filmic tone mapping" -msgstr "Filmic Tone Mapping" +msgstr "Mapear tom de filme" #: src/settings_translation_file.cpp msgid "Filtering and Antialiasing" @@ -3912,12 +3845,11 @@ msgid "Fixed virtual joystick" msgstr "Joystick virtual fixo" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Fixes the position of virtual joystick.\n" "If disabled, virtual joystick will center to first-touch's position." msgstr "" -"(Android) Corrige a posição do joystick virtual.\n" +"Corrige a posição do joystick virtual.\n" "Se desabilitado, o joystick virtual vai centralizar na posição do primeiro " "toque." @@ -4032,7 +3964,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Format of screenshots." -msgstr "Formato das screenshots." +msgstr "Formato das capturas de tela." #: src/settings_translation_file.cpp msgid "Formspec Full-Screen Background Color" @@ -4104,9 +4036,8 @@ msgid "Fullscreen mode." msgstr "Modo tela cheia." #: src/settings_translation_file.cpp -#, fuzzy msgid "GUI" -msgstr "GUIs" +msgstr "GUI" #: src/settings_translation_file.cpp msgid "GUI scaling" @@ -4130,10 +4061,10 @@ msgid "" "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 de geração de mapa globais.\n" -"No gerador de mapa v6 a flag 'decorations' controla todas as decorações, " -"exceto árvores\n" -"e gramas da selva, em todos os outros geradores de mapa essa flag controla " +"Atributos globais de geração de mundo.\n" +"No Mapgen v6 a opção 'decorations' controla todas as decorações, exceto " +"árvores\n" +"e gramas da selva, em todos os outros geradores de mundo essa opção controla " "todas as decorações." #: src/settings_translation_file.cpp @@ -4205,7 +4136,7 @@ msgid "" "call).\n" "* Instrument the sampler being used to update the statistics." msgstr "" -"Tem o instrumento de registro em si:\n" +"Tem o instrumento analisador em si:\n" "* Monitorar uma função vazia.\n" "Isto estima a sobrecarga, que o instrumento está adicionando (+1 Chamada de " "função).\n" @@ -4213,18 +4144,15 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Heat blend noise" -msgstr "Parâmetros de mistura de ruido do gerador de mundo \"heat\"" +msgstr "Ruído de mistura de calor" #: src/settings_translation_file.cpp msgid "Heat noise" msgstr "Ruído de calor" #: src/settings_translation_file.cpp -#, fuzzy msgid "Height component of the initial window size." -msgstr "" -"Componente de altura do tamanho da janela inicial. Ignorado em modo de tela " -"cheia." +msgstr "Componente de altura do tamanho da janela inicial." #: src/settings_translation_file.cpp msgid "Height noise" @@ -4287,196 +4215,160 @@ msgstr "" "em nós por segundo por segundo." #: src/settings_translation_file.cpp -#, fuzzy msgid "Hotbar slot 1" -msgstr "Tecla do slot 1 da hotbar" +msgstr "Vaga 1 da barra de itens" #: src/settings_translation_file.cpp -#, fuzzy msgid "Hotbar slot 10" -msgstr "Tecla do slot 10 da hotbar" +msgstr "Vaga 10 da barra de itens" #: src/settings_translation_file.cpp -#, fuzzy msgid "Hotbar slot 11" -msgstr "Tecla do slot 11 da hotbar" +msgstr "Vaga 11 da barra de itens" #: src/settings_translation_file.cpp -#, fuzzy msgid "Hotbar slot 12" -msgstr "Tecla do slot 12 da hotbar" +msgstr "Vaga 12 da barra de itens" #: src/settings_translation_file.cpp -#, fuzzy msgid "Hotbar slot 13" -msgstr "Tecla do slot 13 da hotbar" +msgstr "Vaga 13 da barra de itens" #: src/settings_translation_file.cpp -#, fuzzy msgid "Hotbar slot 14" -msgstr "Tecla do slot 14 da hotbar" +msgstr "Vaga 14 da barra de itens" #: src/settings_translation_file.cpp -#, fuzzy msgid "Hotbar slot 15" -msgstr "Tecla do slot 15 da hotbar" +msgstr "Vaga 15 da barra de itens" #: src/settings_translation_file.cpp -#, fuzzy msgid "Hotbar slot 16" -msgstr "Tecla do slot 16 da hotbar" +msgstr "Vaga 16 da barra de itens" #: src/settings_translation_file.cpp -#, fuzzy msgid "Hotbar slot 17" -msgstr "Tecla do slot 17 da hotbar" +msgstr "Vaga 17 da barra de itens" #: src/settings_translation_file.cpp -#, fuzzy msgid "Hotbar slot 18" -msgstr "Tecla do slot 18 da hotbar" +msgstr "Vaga 18 da barra de itens" #: src/settings_translation_file.cpp -#, fuzzy msgid "Hotbar slot 19" -msgstr "Tecla do slot 19 da hotbar" +msgstr "Vaga 19 da barra de itens" #: src/settings_translation_file.cpp -#, fuzzy msgid "Hotbar slot 2" -msgstr "Tecla do slot 2 da hotbar" +msgstr "Vaga 2 da barra de itens" #: src/settings_translation_file.cpp -#, fuzzy msgid "Hotbar slot 20" -msgstr "Tecla do slot 20 da hotbar" +msgstr "Vaga 20 da barra de itens" #: src/settings_translation_file.cpp -#, fuzzy msgid "Hotbar slot 21" -msgstr "Tecla do slot 21 da hotbar" +msgstr "Vaga 21 da barra de itens" #: src/settings_translation_file.cpp -#, fuzzy msgid "Hotbar slot 22" -msgstr "Tecla do slot 22 da hotbar" +msgstr "Vaga 22 da barra de itens" #: src/settings_translation_file.cpp -#, fuzzy msgid "Hotbar slot 23" -msgstr "Tecla do slot 23 da hotbar" +msgstr "Vaga 23 da barra de itens" #: src/settings_translation_file.cpp -#, fuzzy msgid "Hotbar slot 24" -msgstr "Tecla do slot 24 da hotbar" +msgstr "Vaga 24 da barra de itens" #: src/settings_translation_file.cpp -#, fuzzy msgid "Hotbar slot 25" -msgstr "Tecla do slot 25 da hotbar" +msgstr "Vaga 25 da barra de itens" #: src/settings_translation_file.cpp -#, fuzzy msgid "Hotbar slot 26" -msgstr "Tecla do slot 26 da hotbar" +msgstr "Vaga 26 da barra de itens" #: src/settings_translation_file.cpp -#, fuzzy msgid "Hotbar slot 27" -msgstr "Tecla do slot 27 da hotbar" +msgstr "Vaga 27 da barra de itens" #: src/settings_translation_file.cpp -#, fuzzy msgid "Hotbar slot 28" -msgstr "Tecla do slot 29 da hotbar" +msgstr "Vaga 28 da barra de itens" #: src/settings_translation_file.cpp -#, fuzzy msgid "Hotbar slot 29" -msgstr "Tecla do slot 29 da hotbar" +msgstr "Vaga 29 da barra de itens" #: src/settings_translation_file.cpp -#, fuzzy msgid "Hotbar slot 3" -msgstr "Tecla do slot 3 da hotbar" +msgstr "Vaga 3 da barra de itens" #: src/settings_translation_file.cpp -#, fuzzy msgid "Hotbar slot 30" -msgstr "Tecla do slot 30 da hotbar" +msgstr "Vaga 30 da barra de itens" #: src/settings_translation_file.cpp -#, fuzzy msgid "Hotbar slot 31" -msgstr "Tecla do slot 31 da hotbar" +msgstr "Vaga 31 da barra de itens" #: src/settings_translation_file.cpp -#, fuzzy msgid "Hotbar slot 32" -msgstr "Tecla do slot 32 da hotbar" +msgstr "Vaga 32 da barra de itens" #: src/settings_translation_file.cpp -#, fuzzy msgid "Hotbar slot 4" -msgstr "Tecla do slot 4 da hotbar" +msgstr "Vaga 4 da barra de itens" #: src/settings_translation_file.cpp -#, fuzzy msgid "Hotbar slot 5" -msgstr "Tecla do slot 5 da hotbar" +msgstr "Vaga 5 da barra de itens" #: src/settings_translation_file.cpp -#, fuzzy msgid "Hotbar slot 6" -msgstr "Tecla do slot 6 da hotbar" +msgstr "Vaga 6 da barra de itens" #: src/settings_translation_file.cpp -#, fuzzy msgid "Hotbar slot 7" -msgstr "Tecla do slot 7 da hotbar" +msgstr "Vaga 7 da barra de itens" #: src/settings_translation_file.cpp -#, fuzzy msgid "Hotbar slot 8" -msgstr "Tecla do slot 8 da hotbar" +msgstr "Vaga 8 da barra de itens" #: src/settings_translation_file.cpp -#, fuzzy msgid "Hotbar slot 9" -msgstr "Tecla do slot 9 da hotbar" +msgstr "Vaga 9 da barra de itens" #: src/settings_translation_file.cpp msgid "Hotbar: Enable mouse wheel for selection" -msgstr "" +msgstr "Barra de itens: Habilitar a roda do mouse para seleção" #: src/settings_translation_file.cpp msgid "Hotbar: Invert mouse wheel direction" -msgstr "" +msgstr "Barra de itens: Inverter a direção da roda do mouse" #: src/settings_translation_file.cpp -#, fuzzy msgid "Hotbar: select next item" -msgstr "Tecla de próximo item na barra principal" +msgstr "Barra de itens: Selecionar próximo item" #: src/settings_translation_file.cpp -#, fuzzy msgid "Hotbar: select previous item" -msgstr "Tecla de item anterior na barra principal" +msgstr "Barra de Itens: Selecionar item anterior" #: src/settings_translation_file.cpp msgid "How deep to make rivers." msgstr "Quão profundo serão os rios." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "How fast liquid waves will move. Higher = faster.\n" "If negative, liquid waves will move backwards." msgstr "" "A velocidade com que as ondas líquidas se movem. Maior = mais rápido.\n" -"Se negativo, as ondas líquidas se moverão para trás.\n" -"Requer que a ondulação de líquidos esteja ativada." +"Se estiver negativo, as ondas líquidas se moverão para trás." #: src/settings_translation_file.cpp msgid "" @@ -4543,6 +4435,10 @@ msgid "" "ContentDB to\n" "check for package updates when opening the mainmenu." msgstr "" +"Se habilitado e você tiver pacotes do ContentDB instalados, o Luanti poderá " +"entrar em contato\n" +"com o ContentDB para verificar se há atualizações de pacotes ao abrir o menu " +"principal." #: src/settings_translation_file.cpp msgid "" @@ -4578,49 +4474,50 @@ msgstr "" "uma senha vazia." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "If enabled, server account registration is separate from login in the UI.\n" "If disabled, connecting to a server will automatically register a new " "account." msgstr "" -"Se habilitado, o registro de contas fica separado do login na UI.\n" -"Caso desabilitado, novas contas serão registradas automaticamente ao entrar " -"em um servidor novo." +"Se habilitado, o registro de contas ficará separado do login na UI.\n" +"Caso desabilitado, entrar em um servidor automaticamente registrará uma nova " +"conta." #: src/settings_translation_file.cpp msgid "If enabled, the \"Aux1\" key will toggle when pressed." -msgstr "" +msgstr "Se ativada, a tecla \"Aux1\" alternará quando pressionada." #: src/settings_translation_file.cpp msgid "" "If enabled, the \"Sneak\" key will toggle when pressed.\n" "This functionality is ignored when fly is enabled." msgstr "" +"Se ativada, a tecla \"Esgueirar\" alternará quando pressionada.\n" +"Esta funcionalidade é ignorada quando o voo está ativado." #: src/settings_translation_file.cpp -#, fuzzy, no-c-format +#, no-c-format 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 by 50-80%. Clients will no longer receive most\n" "invisible blocks, so that the utility of noclip mode is reduced." msgstr "" -"Se habilitado, o servidor executará a seleção de oclusão de bloco de mapa " +"Se habilitado, o servidor executará a seleção de oclusão no bloco de mapa " "com base\n" "na posição do olho do jogador. Isso pode reduzir o número de blocos\n" -"enviados ao cliente de 50 a 80%. O cliente não receberá mais invisível\n" -"para que a utilidade do modo noclip é reduzida." +"enviados ao cliente em 50% a 80%. Os clientes não receberão mais a maioria " +"dos\n" +"blocos invisíveis, o que reduz a utilidade do modo noclip." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "If enabled, you can place nodes at the position (feet + eye level) where you " "stand.\n" "This is helpful when working with nodeboxes in small areas." msgstr "" -"Se habilitado, você pode colocar os blocos na posição (pés + nível dos " -"olhos) onde você está.\n" +"Se habilitado, você pode colocar nós na posição (pés + nível dos olhos) de " +"onde você está.\n" "Isto é útil quando se trabalha com nodeboxes em pequenas áreas." #: src/settings_translation_file.cpp @@ -4651,8 +4548,8 @@ msgid "" msgstr "" "Se o tamanho do arquivo debug.txt exceder o número de megabytes " "especificado\n" -"nesta configuração quando ele for aberto, o arquivo é movido para debug." -"txt.1,\n" +"nesta configuração quando ele for aberto, o arquivo é movido para " +"debug.txt.1,\n" "excluindo um debug.txt.1 mais antigo, se houver.\n" "debug.txt só é movido se esta configuração for positiva." @@ -4684,14 +4581,12 @@ msgstr "" "255)." #: src/settings_translation_file.cpp -#, fuzzy msgid "Increase view range" -msgstr "Alcance inc" +msgstr "Aumentar o alcance de visão" #: src/settings_translation_file.cpp -#, fuzzy msgid "Increase volume" -msgstr "Aumentar Volume" +msgstr "Aumentar volume" #: src/settings_translation_file.cpp msgid "Initial vertical speed when jumping, in nodes per second." @@ -4710,13 +4605,12 @@ msgid "Instrument chat commands on registration." msgstr "Monitoração de comandos de chat ao registrar." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Instrument global callback functions on registration.\n" "(anything you pass to a core.register_*() function)" msgstr "" -"Monitorar de chamadas de retorno globais durante a registração.\n" -"(qualquer coisa que você passar ao minetest.register_*() function)" +"Funções de retorno de chamada global do instrumento no registro.\n" +"(qualquer coisa que você passe para uma função core.register_*())" #: src/settings_translation_file.cpp msgid "" @@ -4735,9 +4629,8 @@ msgid "Instrument the methods of entities on registration." msgstr "Monitorar os métodos das entidades durante a registração." #: src/settings_translation_file.cpp -#, fuzzy msgid "Interaction style" -msgstr "Monitorização" +msgstr "Estilo de interação" #: src/settings_translation_file.cpp msgid "Interval of saving important changes in the world, stated in seconds." @@ -4756,6 +4649,8 @@ msgstr "Mouse invertido" #: src/settings_translation_file.cpp msgid "Invert mouse wheel (scroll) direction for item selection in hotbar." msgstr "" +"Inverter a direção da roda do mouse (rolagem) para a seleção de itens na " +"barra de itens." #: src/settings_translation_file.cpp msgid "Invert vertical mouse movement." @@ -4787,8 +4682,8 @@ msgstr "" "Iterações da função recursiva.\n" "Aumentando isso aumenta a quantidade de detalhes, mas também\n" "aumenta o tempo de processamento.\n" -"Com iterações = 20, esse gerador de mapa tem um tempo de carregamento " -"similar ao gerador V7." +"Com iterações = 20, esse gerador de mundo tem um tempo de carregamento " +"similar ao Mapgen V7." #: src/settings_translation_file.cpp msgid "Joystick ID" @@ -4862,19 +4757,19 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Julia w" -msgstr "Julia w" +msgstr "Júlia w" #: src/settings_translation_file.cpp msgid "Julia x" -msgstr "Julia x" +msgstr "Júlia x" #: src/settings_translation_file.cpp msgid "Julia y" -msgstr "Julia y" +msgstr "Júlia y" #: src/settings_translation_file.cpp msgid "Julia z" -msgstr "Julia z" +msgstr "Júlia z" #: src/settings_translation_file.cpp msgid "Jumping speed" @@ -4882,60 +4777,66 @@ msgstr "Velocidade de Pulo" #: src/settings_translation_file.cpp msgid "Key for decrementing the selected value in Quicktune." -msgstr "" +msgstr "Tecla para decrementar o valor selecionado no Ajuste Rápido." #: src/settings_translation_file.cpp msgid "" "Key for digging, punching or using something.\n" "(Note: The actual meaning might vary on a per-game basis.)" msgstr "" +"Tecla para cavar, socar ou usar algo.\n" +"(Nota: O significado real pode variar de acordo com o jogo base.)" #: src/settings_translation_file.cpp msgid "Key for incrementing the selected value in Quicktune." -msgstr "" +msgstr "Tecla para incrementar o valor selecionado no Ajuste Rápido." #: src/settings_translation_file.cpp msgid "Key for moving fast in fast mode." -msgstr "" +msgstr "Tecla para se mover rápido no modo rápido." #: src/settings_translation_file.cpp msgid "Key for opening the chat window to type commands." -msgstr "" +msgstr "Tecla para abrir a janela de bate-papo para digitar comandos." #: src/settings_translation_file.cpp msgid "Key for opening the chat window to type local commands." -msgstr "" +msgstr "Tecla para abrir a janela de bate-papo para digitar comandos locais." #: src/settings_translation_file.cpp msgid "" "Key for placing an item/block or for using something.\n" "(Note: The actual meaning might vary on a per-game basis.)" msgstr "" +"Tecla para posicionar um item/bloco ou para usar algo.\n" +"(Nota: O significado real pode variar de acordo com o jogo base.)" #: src/settings_translation_file.cpp msgid "Key for switching to the next entry in Quicktune." -msgstr "" +msgstr "Tecla para alternar para a próxima entrada no Quicktune." #: src/settings_translation_file.cpp msgid "Key for switching to the previous entry in Quicktune." -msgstr "" +msgstr "Tecla para alternar para a entrada anterior no Quicktune." #: src/settings_translation_file.cpp msgid "Key for toggling the camera update. Only usable with 'debug' privilege." msgstr "" +"Tecla para alternar a atualização da câmera. Utilizável somente com " +"privilégio de 'depuração'." #: src/settings_translation_file.cpp msgid "Key for toggling the display of mapblock boundaries." -msgstr "" +msgstr "Tecla para alternar a exibição dos limites do mapa de blocos." #: src/settings_translation_file.cpp msgid "Key for toggling the display of the profiler. Used for development." msgstr "" +"Tecla para alternar a exibição do analisador. Usada para desenvolvimento." #: src/settings_translation_file.cpp -#, fuzzy msgid "Keybindings" -msgstr "Controles." +msgstr "Teclas de Atalho" #: src/settings_translation_file.cpp msgid "Keyboard and Mouse" @@ -4978,20 +4879,18 @@ msgid "Leaves style" msgstr "Estilo de folhas" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Leaves style:\n" "- Fancy: all faces visible\n" "- Simple: only outer faces\n" "- Opaque: disable transparency" msgstr "" -"Folhas de estilo:\n" -"- Fancy: todas as faces visíveis\n" -"- Simple: apenas faces externas, se definidos special_tiles\n" -"- Opaque: desativar transparência" +"Estilo das Folhas:\n" +"- Estilosas: todas as faces visíveis\n" +"- Simples: apenas faces externas (se definir special_tiles)\n" +"- Opacas: desativar transparência" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Length of a server tick (the interval at which everything is generally " "updated),\n" @@ -5000,14 +4899,17 @@ msgid "" "This is a lower bound, i.e. server steps may not be shorter than this, but\n" "they are often longer." msgstr "" -"Tamanho do tick do servidor e o intervalo no qual os objetos geralmente são " -"atualizados na\n" -"rede, em segundos." +"Duração de um tique do servidor (o intervalo em que tudo geralmente é " +"atualizado),\n" +"expresso em segundos.\n" +"Não se aplica a sessões hospedadas no menu do cliente.\n" +"Este é um limite inferior, ou seja, os passos do servidor podem não ser " +"menores que isso,\n" +"mas geralmente são maiores." #: src/settings_translation_file.cpp -#, fuzzy msgid "Length of liquid waves." -msgstr "Velocidade de balanço da água" +msgstr "Comprimento das ondas líquidas." #: src/settings_translation_file.cpp msgid "" @@ -5084,7 +4986,7 @@ msgid "" "Only mapchunks completely within the mapgen limit are generated.\n" "Value is stored per-world." msgstr "" -"Limite de geração de mapas, em nós, em todas as 6 direções de (0, 0, 0).\n" +"Limite de geração de mundo, em nós, em todas as 6 direções de (0, 0, 0).\n" "Apenas áreas completas de mapa dentro do limite do mapgen são gerados.\n" "O valor é armazenado por mundo." @@ -5120,9 +5022,8 @@ msgid "Liquid queue purge time" msgstr "Tempo para limpar a lista de espera para a atualização de líquidos" #: src/settings_translation_file.cpp -#, fuzzy msgid "Liquid reflections" -msgstr "Fluidez líquida" +msgstr "Reflexões de Líquido" #: src/settings_translation_file.cpp msgid "Liquid sinking" @@ -5138,7 +5039,7 @@ msgstr "Período de atualização dos Líquidos" #: src/settings_translation_file.cpp msgid "Load the game profiler" -msgstr "Carregar o analizador do jogo" +msgstr "Carregar o analisador do jogo" #: src/settings_translation_file.cpp msgid "" @@ -5146,9 +5047,9 @@ msgid "" "Provides a /profiler command to access the compiled profile.\n" "Useful for mod developers and server operators." msgstr "" -"Carregar o analizador do jogo para coletar dados de analize do jogo\n" -"Providencia o comando /profiler para acessar a analize compiliada.\n" -"Muito util para desenvolvedores de mods e operadores de servidores." +"Carregar o analisador do jogo para coletar dados de análise do jogo\n" +"Fornece o comando /profiler para acessar a análise compilada.\n" +"Útil para desenvolvedores de mods e operadores de servidores." #: src/settings_translation_file.cpp msgid "Loading Block Modifiers" @@ -5191,14 +5092,14 @@ msgstr "Diretório do mapa" #: src/settings_translation_file.cpp msgid "Map generation attributes specific to Mapgen Carpathian." -msgstr "Atributos de geração de mapa específicos ao gerador Carpathian." +msgstr "Atributos de geração de mundo específicos ao gerador 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 "" -"Atributos de geração de mapas específicos para o Gerador de mundo Plano.\n" +"Atributos de geração de mundo específicos para o Mapgen Flat.\n" "Lagos e colinas ocasionalmente podem ser adicionados ao mundo plano." #: src/settings_translation_file.cpp @@ -5207,9 +5108,9 @@ msgid "" "'terrain' enables the generation of non-fractal terrain:\n" "ocean, islands and underground." msgstr "" -"Atributos de geração de mapas específicos para o Gerador de mundo Fractal.\n" -"'terreno' permite a geração de terreno não fractal:\n" -"oceano, ilhas e subterrâneos." +"Atributos de geração de mundo específico do Mapgen Fractal.\n" +"'terrain' permite a geração de terreno não fractal:\n" +"oceano, ilhas e subterrâneo." #: src/settings_translation_file.cpp msgid "" @@ -5220,20 +5121,19 @@ msgid "" "to become shallower and occasionally dry.\n" "'altitude_dry': Reduces humidity with altitude." msgstr "" -"Atributos de geração de mapa específicos ao gerador Valleys.\n" +"Atributos de geração de mundo específicos do Mapgen Valleys.\n" "'altitude_chill':Reduz o calor com a altitude.\n" "'humid_rivers':Aumenta a umidade em volta dos rios.\n" -"'profundidade_variada_rios': Se habilitado, baixa umidade e alto calor faz " -"com que rios\n" +"'vary_river_depth': Se habilitado, baixa umidade e alto calor faz com que " +"rios\n" "se tornem mais rasos e eventualmente sumam.\n" "'altitude_dry': Reduz a umidade com a altitude." #: src/settings_translation_file.cpp msgid "Map generation attributes specific to Mapgen v5." -msgstr "Atributos de geração de mapa específicos ao gerador V5." +msgstr "Atributos de geração de mundo específicos do Mapgen V5." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Map generation attributes specific to Mapgen v6.\n" "The 'snowbiomes' flag enables the new 5 biome system.\n" @@ -5242,11 +5142,13 @@ msgid "" "The 'temples' flag disables generation of desert temples. Normal dungeons " "will appear instead." msgstr "" -"Atributos de geração de mapas específicos para Gerador de mapas v6.\n" +"Atributos de geração de mundo específicos para Mapgen v6.\n" "A opção 'snowbiomes' habilita o novo sistema de 5 biomas.\n" "Quando a opção 'snowbiomes' está ativada, as selvas são ativadas " "automaticamente e\n" -"a opção 'jungles' é ignorada." +"a opção 'jungles' é ignorada.\n" +"A opção \"temples\" desabilita a geração de templos do deserto. Masmorras " +"normais aparecerão em seu lugar." #: src/settings_translation_file.cpp msgid "" @@ -5255,10 +5157,10 @@ msgid "" "'floatlands': Floating land masses in the atmosphere.\n" "'caverns': Giant caves deep underground." msgstr "" -"Atributos de geração de mapas específicos para Gerador de mapas v7.\n" -"'ridges': rios.\n" -"'floatlands': massas de terra flutuantes na atmosfera.\n" -"'caverns': cavernas gigantes no subsolo." +"Atributos de geração de mundo específicos do Mapgen v7.\n" +"'ridges': Rios.\n" +"'floatlands': Massas de terra flutuantes na atmosfera.\n" +"'caverns': Cavernas gigantes no subsolo." #: src/settings_translation_file.cpp msgid "Map generation limit" @@ -5281,9 +5183,8 @@ msgid "Mapblock mesh generation delay" msgstr "Intervalo de geração de mapa" #: src/settings_translation_file.cpp -#, fuzzy msgid "Mapblock mesh generation threads" -msgstr "Intervalo de geração de mapa" +msgstr "Intervalos de geração da malha do bloco de mapa" #: src/settings_translation_file.cpp msgid "Mapblock unload timeout" @@ -5291,63 +5192,63 @@ msgstr "Tempo limite de descarregamento do mapblock" #: src/settings_translation_file.cpp msgid "Mapgen Carpathian" -msgstr "Gerador de mundo Carpathian" +msgstr "Gerar Mundo Carpathian" #: src/settings_translation_file.cpp msgid "Mapgen Carpathian specific flags" -msgstr "Flags específicas do gerador de mundo Carpathian" +msgstr "Opções específicas do Mapgen Carpathian" #: src/settings_translation_file.cpp msgid "Mapgen Flat" -msgstr "Gerador de mundo plano" +msgstr "Gerar Mundo Plano" #: src/settings_translation_file.cpp msgid "Mapgen Flat specific flags" -msgstr "Flags específicas do gerador de mundo plano" +msgstr "Opções específicas do Mapgen Flat" #: src/settings_translation_file.cpp msgid "Mapgen Fractal" -msgstr "Gerador de mundo Fractal" +msgstr "Gerar Mundo Fractal" #: src/settings_translation_file.cpp msgid "Mapgen Fractal specific flags" -msgstr "Opções específicas do Gerador de mapas Fractal" +msgstr "Opções específicas do Mapgen Fractal" #: src/settings_translation_file.cpp msgid "Mapgen V5" -msgstr "Gerador de mundo V5" +msgstr "Gerar Mundo V5" #: src/settings_translation_file.cpp msgid "Mapgen V5 specific flags" -msgstr "Flags específicas do gerador de mundo V5" +msgstr "Opções específicas do Mapgen V5" #: src/settings_translation_file.cpp msgid "Mapgen V6" -msgstr "Gerador de mundo V6" +msgstr "Gerar Mundo V6" #: src/settings_translation_file.cpp msgid "Mapgen V6 specific flags" -msgstr "Flags específicas do gerador de mundo V6" +msgstr "Opções específicas do Mapgen V6" #: src/settings_translation_file.cpp msgid "Mapgen V7" -msgstr "Gerador de mundo V7" +msgstr "Gerar Mundo V7" #: src/settings_translation_file.cpp msgid "Mapgen V7 specific flags" -msgstr "Flags específicas do gerador de mundo V7" +msgstr "Opções específicas do Mapgen V7" #: src/settings_translation_file.cpp msgid "Mapgen Valleys" -msgstr "Vales do Mapgen" +msgstr "Gerar Mundo de Vales" #: src/settings_translation_file.cpp msgid "Mapgen Valleys specific flags" -msgstr "Flags específicas do gerador de mundo Valleys" +msgstr "Opções específicas do Mapgen Valleys" #: src/settings_translation_file.cpp msgid "Mapgen debug" -msgstr "Debug do mapgen" +msgstr "Depuração do mapgen" #: src/settings_translation_file.cpp msgid "Mapgen name" @@ -5378,10 +5279,8 @@ msgid "Maximum FPS" msgstr "FPS máximo" #: src/settings_translation_file.cpp -#, fuzzy msgid "Maximum FPS when the window is not focused." -msgstr "" -"FPS máximo quando a janela não está com foco, ou quando o jogo é pausado." +msgstr "FPS máximo quando a janela não está em foco." #: src/settings_translation_file.cpp msgid "Maximum distance to render shadows." @@ -5461,6 +5360,10 @@ msgid "" "won't be deleted, depending on the current view range.\n" "Set to -1 for no limit." msgstr "" +"Número máximo de blocos de mapa que o cliente pode manter na memória.\n" +"Observe que há um número mínimo dinâmico interno de blocos que\n" +"não serão excluídos, dependendo do intervalo de visualização atual.\n" +"Defina como -1 para não haver limite." #: src/settings_translation_file.cpp msgid "" @@ -5469,6 +5372,10 @@ msgid "" "You generally don't need to change this, however busy servers may benefit " "from a higher number." msgstr "" +"Número máximo de pacotes enviados por etapa de envio no código de rede de " +"baixo nível.\n" +"Geralmente, não é necessário alterar isso, mas servidores ocupados podem se " +"beneficiar de um número maior." #: src/settings_translation_file.cpp msgid "Maximum number of players that can be connected simultaneously." @@ -5499,25 +5406,25 @@ msgid "Maximum simultaneous block sends per client" msgstr "Máximo de blocos enviados simultaneamente por cliente" #: src/settings_translation_file.cpp -#, fuzzy msgid "Maximum size of the client's outgoing chat queue" -msgstr "Tamanho máximo da fila do chat" +msgstr "Tamanho máximo da fila de saída no bate-papo do cliente" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Maximum size of the client's outgoing chat queue.\n" "0 to disable queueing and -1 to make the queue size unlimited." msgstr "" -"Tamanho máximo da fila do chat.\n" -"0 para desabilitar a fila e -1 para a tornar ilimitada." +"Tamanho máximo da fila de saída no bate-papo do cliente.\n" +"0 para desabilitar o enfilamento e -1 para tornar o tamanho da fila " +"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 em ms para download de arquivo (por exemplo, um mod) pode tomar." +"Tempo máximo que o download de um arquivo (ex.: um mod) pode tomar, em " +"milissegundos." #: src/settings_translation_file.cpp msgid "" @@ -5531,6 +5438,11 @@ msgstr "" msgid "Maximum users" msgstr "Limite de usuários" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Measure time samples" +msgstr "Templos do deserto" + #: src/settings_translation_file.cpp msgid "Message of the day" msgstr "Mensagem do dia" @@ -5552,9 +5464,8 @@ msgid "Minimap scan height" msgstr "Altura de escaneamento do minimapa" #: src/settings_translation_file.cpp -#, fuzzy msgid "Minimum dig repetition interval" -msgstr "Intervalo de repetição da ação colocar" +msgstr "Intervalo mínimo de repetição da ação cavar" #: src/settings_translation_file.cpp msgid "Minimum limit of random number of large caves per mapchunk." @@ -5566,7 +5477,7 @@ msgstr "Limite mínimo do número aleatório de cavernas pequenas por mapchunk." #: src/settings_translation_file.cpp msgid "Minimum vertex count for mesh buffers" -msgstr "" +msgstr "Contagem mínima de vértices para buffers de malha" #: src/settings_translation_file.cpp msgid "Mipmapping" @@ -5574,11 +5485,11 @@ msgstr "Mipmapping (filtro)" #: src/settings_translation_file.cpp msgid "Miscellaneous" -msgstr "" +msgstr "Miscelânea" #: src/settings_translation_file.cpp msgid "Mod Profiler" -msgstr "Perfilador de Mod" +msgstr "Analisador de Mod" #: src/settings_translation_file.cpp msgid "Mod Security" @@ -5593,6 +5504,8 @@ msgid "" "Modifier key bind for closing your world.\n" "Requires ESC + the selected key to work." msgstr "" +"Tecla modificadora para fechar seu mundo.\n" +"Requer ESC + a tecla selecionada para funcionar." #: src/settings_translation_file.cpp msgid "Modifies the size of the HUD elements." @@ -5635,28 +5548,24 @@ msgid "Mouse sensitivity multiplier." msgstr "Multiplicador de sensibilidade do mouse." #: src/settings_translation_file.cpp -#, fuzzy msgid "Move backward" -msgstr "Voltar" +msgstr "Andar para trás" #: src/settings_translation_file.cpp -#, fuzzy msgid "Move forward" -msgstr "Avanço frontal automático" +msgstr "Andar para frente" #: src/settings_translation_file.cpp -#, fuzzy msgid "Move left" -msgstr "Modo rápido" +msgstr "Andar para a esquerda" #: src/settings_translation_file.cpp msgid "Move right" -msgstr "" +msgstr "Andar para a direita" #: src/settings_translation_file.cpp -#, fuzzy msgid "Movement threshold" -msgstr "Limite da caverna" +msgstr "Limiar de movimento" #: src/settings_translation_file.cpp msgid "Mud noise" @@ -5677,23 +5586,21 @@ msgid "" "Current mapgens in a highly unstable state:\n" "- The optional floatlands of v7 (disabled by default)." msgstr "" -"Nome do gerador de mapas a ser usado ao criar um novo mundo.\n" +"Nome do gerador de mundo a ser usado para criar um novo mundo.\n" "Criar um mundo no menu principal substituirá isso.\n" -"Geradores de mapa atuais em um estado altamente instável:\n" -"- A opção de ilhas flutuantes do Gerador de mapas de v7 (desabilitado por " -"padrão)." +"Geradores de mundo atuais em um estado altamente instável:\n" +"- A opção de ilhas flutuantes do Mapgen v7 (desabilitado por padrão)." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Name of the player.\n" "When running a server, a client connecting with this name is admin.\n" "When starting from the main menu, this is overridden." msgstr "" "Nome do jogador.\n" -"Quando executando um servidor, os clientes com este nome são " -"administradores.\n" -"Quando iniciado pelo menu principal, este é substituido." +"Enquanto roda um servidor, um cliente que se conecta com este nome é o " +"administrador.\n" +"Se iniciar pelo menu principal, este é substituído." #: src/settings_translation_file.cpp msgid "" @@ -5736,7 +5643,7 @@ msgstr "Ruidos" #: src/settings_translation_file.cpp msgid "Number of emerge threads" -msgstr "Número de seguimentos de emersão" +msgstr "Número de intervalos de emersão" #: src/settings_translation_file.cpp msgid "" @@ -5751,15 +5658,15 @@ msgid "" "processes, especially in singleplayer and/or when running Lua code in\n" "'on_generated'. For many users the optimum setting may be '1'." msgstr "" -"Número de threads de emersão a serem usadas.\n" +"Número de intervalos de emersão a serem usados.\n" "Valor 0:\n" -"- Seleção automática. O número de threads de emersão será\n" +"- Seleção automática. O número de intervalos de emersão será\n" "- 'número de processadores - 2', com um limite inferior de 1.\n" "Qualquer outro valor:\n" "- Especifica o número de threads de emersão, com um limite inferior de 1.\n" -"AVISO: Aumentar o número de threads de emersão aumenta a velocidade do motor " -"de\n" -"geração de mapas, mas isso pode prejudicar o desempenho do jogo, " +"AVISO: Aumentar o número de intervalos de emersão aumenta a velocidade do " +"motor de\n" +"geração de mundo, mas isso pode prejudicar o desempenho do jogo, " "interferindo com outros\n" "processos, especialmente em singleplayer e / ou ao executar código Lua em " "eventos\n" @@ -5777,29 +5684,26 @@ msgstr "" "consumo de memória (4096 = 100 MB, como uma regra de ouro)." #: src/settings_translation_file.cpp -#, fuzzy msgid "Number of messages a player may send per 10 seconds." -msgstr "Quantidade de mensagens que um jogador pode enviar por 10 segundos." +msgstr "Número de mensagens que um jogador pode enviar por 10 segundos." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Number of threads to use for mesh generation.\n" "Value of 0 (default) will let Luanti automatically choose the number of " "threads." msgstr "" -"Número de threads para usar na geração de mesh\n" -"Valor 0 (predefinido) fará o Minetest detectar automativamente o número de " -"threads disponíveis." +"Número de intervalos para usar na geração da malha\n" +"Valor 0 (padrão) fará o Luanti escolher automaticamente o número de " +"intervalos." #: src/settings_translation_file.cpp msgid "Occlusion Culler" -msgstr "" +msgstr "Selecionador de Oclusão" #: src/settings_translation_file.cpp -#, fuzzy msgid "Occlusion Culling" -msgstr "Separação de oclusão no lado do servidor" +msgstr "Seleção de Oclusão" #: src/settings_translation_file.cpp msgid "" @@ -5808,12 +5712,11 @@ msgstr "Opacidade (alpha) das sombras atrás da fonte padrão, entre 0 e 255." #: src/settings_translation_file.cpp msgid "Open chat" -msgstr "" +msgstr "Abrir Bate-papo" #: src/settings_translation_file.cpp -#, fuzzy msgid "Open inventory" -msgstr "Inventário" +msgstr "Abrir Inventário" #: src/settings_translation_file.cpp msgid "" @@ -5821,27 +5724,25 @@ msgid "" "formspec is\n" "open." msgstr "" -"Abre o menu de pausa quando o foco da janela é perdido.Não pausa se um " +"Abre o menu de pausa quando o foco da janela é perdido. Não pausa se um " "formspec está\n" "aberto." #: src/settings_translation_file.cpp -#, fuzzy msgid "OpenGL debug" -msgstr "Debug do mapgen" +msgstr "Depuração do OpenGL" #: src/settings_translation_file.cpp msgid "Optimize GUI for touchscreens" -msgstr "" +msgstr "Otimiza a interface gráfica para telas sensíveis ao toque" #: src/settings_translation_file.cpp msgid "Optional override for chat weblink color." msgstr "Substituição opcional da cor do link do bate-papo." #: src/settings_translation_file.cpp -#, fuzzy msgid "Other Effects" -msgstr "Efeitos Gráficos" +msgstr "Outros Efeitos" #: src/settings_translation_file.cpp msgid "" @@ -5859,7 +5760,7 @@ msgid "" "The folder will be created if it doesn't already exist." msgstr "" "Caminho para salvar capturas de tela. Pode ser absoluto ou relativo.\n" -"A pasta será criada se já não existe." +"A pasta será criada se já não existir." #: src/settings_translation_file.cpp msgid "" @@ -5883,7 +5784,7 @@ msgid "" "This font is used for e.g. the console and profiler screen." msgstr "" "Caminho para a fonte mono-espaçada. Deve ser uma fonte TrueType. \n" -"Esta fonte é usada para, por exemplo, a tela do console e do perfilador." +"Esta fonte é usada para, por exemplo, a tela do console e do analisador." #: src/settings_translation_file.cpp msgid "Pause on lost window focus" @@ -5915,12 +5816,10 @@ msgid "Poisson filtering" msgstr "Filtragem de Poisson" #: src/settings_translation_file.cpp -#, fuzzy msgid "Post Processing" msgstr "Pós-processamento" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Prevent digging and placing from repeating when holding the respective " "buttons.\n" @@ -5929,7 +5828,9 @@ msgid "" msgstr "" "Evita remoção e colocação de blocos repetidos quando os botoes do mouse são " "segurados.\n" -"Habilite isto quando você cava ou coloca blocos constantemente por acidente." +"Habilite isto quando você cava ou coloca blocos constantemente por " +"acidente.\n" +"Em telas touchscreen, isso afeta apenas a escavação." #: src/settings_translation_file.cpp msgid "Prevent mods from doing insecure things like running shell commands." @@ -5950,14 +5851,13 @@ msgstr "Privilégios que jogadores com basic_privs podem conceder" #: src/settings_translation_file.cpp msgid "Profiler" -msgstr "Analizador" +msgstr "Analisador" #: src/settings_translation_file.cpp msgid "Prometheus listener address" msgstr "Endereço do Prometheus" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Prometheus listener address.\n" "If Luanti is compiled with Prometheus support, this setting\n" @@ -5965,39 +5865,39 @@ msgid "" "By default you can fetch metrics from http://127.0.0.1:30000/metrics.\n" "An empty value disables the metrics listener." msgstr "" -"Endereço do Prometheus\n" -"Se o minetest for compilado com a opção ENABLE_PROMETHEUS ativa,\n" -"habilita a obtenção de métricas do Prometheus neste endereço.\n" -"As métricas podem ser obtidas em http://127.0.0.1:30000/metrics" +"Endereço do ouvinte do Prometheus.\n" +"Se o Luanti for compilado com suporte ao Prometheus, esta configuração\n" +"habilita o ouvinte de métricas para o Prometheus nesse endereço.\n" +"Por padrão, você pode obter métricas de http://127.0.0.1:30000/metrics.\n" +"Um valor vazio desabilita o ouvinte de métricas." #: src/settings_translation_file.cpp msgid "Proportion of large caves that contain liquid." msgstr "Proporção de cavernas grandes que contém líquido." #: src/settings_translation_file.cpp -#, fuzzy msgid "Protocol version minimum" -msgstr "Versão do protocolo incompatível. " +msgstr "Versão mínima do protocolo" #: src/settings_translation_file.cpp msgid "Punch gesture" -msgstr "" +msgstr "Gesto de soco" #: src/settings_translation_file.cpp msgid "Quicktune: decrement value" -msgstr "" +msgstr "Ajuste rápido: decrementar valor" #: src/settings_translation_file.cpp msgid "Quicktune: increment value" -msgstr "" +msgstr "Ajuste rápido: incrementar valor" #: src/settings_translation_file.cpp msgid "Quicktune: select next entry" -msgstr "" +msgstr "Ajuste rápido: selecionar próxima entrada" #: src/settings_translation_file.cpp msgid "Quicktune: select previous entry" -msgstr "" +msgstr "Ajuste rápido: selecionar entrada anterior" #: src/settings_translation_file.cpp msgid "" @@ -6012,6 +5912,8 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Radius to use when the block bounds HUD feature is set to near blocks." msgstr "" +"Raio a ser usado quando o recurso HUD de limites de bloco estiver definido " +"como próximo a blocos." #: src/settings_translation_file.cpp msgid "Raises terrain to make valleys around the rivers." @@ -6023,7 +5925,7 @@ msgstr "Entrada aleatória" #: src/settings_translation_file.cpp msgid "Random mod load order" -msgstr "" +msgstr "Ordem aleatória de carregamento do mod" #: src/settings_translation_file.cpp msgid "Recent Chat Messages" @@ -6034,9 +5936,8 @@ msgid "Regular font path" msgstr "Caminho da fonte regular" #: src/settings_translation_file.cpp -#, fuzzy msgid "Remember screen size" -msgstr "Salvar automaticamente o tamanho da tela" +msgstr "Lembrar o tamanho da tela" #: src/settings_translation_file.cpp msgid "Remote media" @@ -6086,9 +5987,8 @@ msgstr "" "cliente)" #: src/settings_translation_file.cpp -#, fuzzy msgid "Return to Main Menu" -msgstr "Sair para o menu principal" +msgstr "Sair para Menu Principal" #: src/settings_translation_file.cpp msgid "Ridge mountain spread noise" @@ -6162,6 +6062,12 @@ msgid "" "is maximized is stored in window_maximized.\n" "(Autosaving window_maximized only works if compiled with SDL.)" msgstr "" +"Salvar o tamanho da janela automaticamente quando modificado.\n" +"Se verdadeiro, o tamanho da tela é salvo em screen_w e screen_h, e se a " +"janela\n" +"estiver maximizada é armazenado em window_maximized.\n" +"(O salvamento automático de window_maximized só funciona se compilado com " +"SDL.)" #: src/settings_translation_file.cpp msgid "Saving map received from server" @@ -6199,15 +6105,15 @@ msgstr "Captura de tela" #: src/settings_translation_file.cpp msgid "Screenshot folder" -msgstr "Pasta de screenshot" +msgstr "Pasta de captura de tela" #: src/settings_translation_file.cpp msgid "Screenshot format" -msgstr "Formato da Captura de tela" +msgstr "Formato da captura de tela" #: src/settings_translation_file.cpp msgid "Screenshot quality" -msgstr "Qualidade da Captura de tela" +msgstr "Qualidade da captura de tela" #: src/settings_translation_file.cpp msgid "" @@ -6215,7 +6121,7 @@ msgid "" "1 means worst quality; 100 means best quality.\n" "Use 0 for default quality." msgstr "" -"Qualidade de imagem. Usado somente para o formato JPEG.\n" +"Qualidade da captura de tela. Usado somente para o formato JPEG.\n" "1 significa pior qualidade; 100 significa melhor qualidade.\n" "Use 0 para qualidade padrão." @@ -6263,6 +6169,29 @@ msgid "" "Renders higher-resolution image of the scene, then scales down to reduce\n" "the aliasing effects. This is the slowest and the most accurate method." msgstr "" +"Selecione o método de anti-serrilhamento a ser aplicado.\n" +"\n" +"* Nenhum - Sem anti-serrilhamento (padrão)\n" +"\n" +"* FSAA - Anti-serrilhamento de tela cheia fornecido pelo hardware\n" +"Também conhecido como Multi-Sample Antialiasing (MSAA)\n" +"Suaviza as bordas dos blocos, mas não afeta o interior das texturas.\n" +"\n" +"Se o Pós-Processamento estiver desativado, a alteração do FSAA exigirá uma " +"reinicialização.\n" +"Além disso, se o Pós-Processamento estiver desativado, o FSAA não funcionará " +"em conjunto com\n" +"subamostragem ou uma configuração \"3d_mode\" não padrão.\n" +"\n" +"* FXAA - Anti-serrilhamento aproximado rápido\n" +"Aplica um filtro de pós-processamento para detectar e suavizar bordas de " +"alto contraste.\n" +"Proporciona equilíbrio entre velocidade e qualidade de imagem.\n" +"\n" +"* SSAA - Anti-serrilhamento de superamostragem\n" +"Renderiza uma imagem da cena em alta resolução e, em seguida, reduz a escala " +"para reduzir\n" +"os efeitos de serrilhamento. Este é o método mais lento e preciso." #: src/settings_translation_file.cpp msgid "Selection box border color (R,G,B)." @@ -6323,11 +6252,12 @@ msgid "" "Send names of online players to the serverlist. If disabled only the player " "count is revealed." msgstr "" +"Envie os nomes dos jogadores online para a lista de servidores. Se " +"desabilitado, apenas a contagem de jogadores é revelada." #: src/settings_translation_file.cpp -#, fuzzy msgid "Send player names to the server list" -msgstr "Anuncie para esta lista de servidor." +msgstr "Enviar os nomes dos jogadores para a lista do servidor" #: src/settings_translation_file.cpp msgid "Server" @@ -6355,6 +6285,9 @@ msgid "" "Flags are positive. Uncheck the flag to disable corresponding anticheat " "module." msgstr "" +"Configuração de anticheat do servidor.\n" +"Sinalizações são positivas. Desmarque a sinalização para desativar o módulo " +"de anticheat correspondente." #: src/settings_translation_file.cpp msgid "Server description" @@ -6369,9 +6302,8 @@ msgid "Server port" msgstr "Porta do servidor" #: src/settings_translation_file.cpp -#, fuzzy msgid "Server-side occlusion culling" -msgstr "Separação de oclusão no lado do servidor" +msgstr "Eliminação de oclusão pelo servidor" #: src/settings_translation_file.cpp msgid "Server/Env Performance" @@ -6390,15 +6322,14 @@ msgid "Serverlist file" msgstr "Arquivo da lista de servidores" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Set the default tilt of Sun/Moon orbit in degrees.\n" "Games may change orbit tilt via API.\n" "Value of 0 means no tilt / vertical orbit." msgstr "" -"Defina a inclinação da órbita do Sol/Lua em graus\n" -"Valor 0 significa sem inclinação/ órbita vertical.\n" -"Valor mínimo de 0.0 e máximo de 60.0" +"Define a inclinação padrão da órbita do Sol/Lua em graus.\n" +"Os jogos podem alterar a inclinação da órbita via API.\n" +"Valor 0 significa que não há inclinação ou órbita vertical." #: src/settings_translation_file.cpp msgid "" @@ -6411,13 +6342,12 @@ msgstr "" "Intervalo: de -1 até 1.0" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Set the language. By default, the system language is used.\n" "A restart is required after changing this." msgstr "" -"Defina o idioma. Deixe vazio para usar a linguagem do sistema.\n" -"Apos mudar isso uma reinicialização é necessária." +"Defina o idioma. Por padrão, a linguagem usada é a do sistema.\n" +"Para aplicar a alteração, é necessário reiniciar o Luanti." #: src/settings_translation_file.cpp msgid "" @@ -6448,42 +6378,35 @@ msgstr "" "Mínimo: 1.0; Máximo: 15.0" #: src/settings_translation_file.cpp -#, fuzzy msgid "Set to true to enable Shadow Mapping." -msgstr "" -"Defina para true para ativar o Mapeamento de Sombras.\n" -"Requer sombreadores para ser ativado." +msgstr "Defina para verdadeiro para ativar o Mapeamento de Sombras." #: src/settings_translation_file.cpp msgid "" "Set to true to enable bloom effect.\n" "Bright colors will bleed over the neighboring objects." msgstr "" +"Defina como verdadeiro para ativar o efeito de resplandecer.\n" +"Cores brilhantes irão transparecer sobre os objetos vizinhos." #: src/settings_translation_file.cpp msgid "Set to true to enable volumetric lighting effect (a.k.a. \"Godrays\")." msgstr "" +"Defina como verdadeiro para habilitar o efeito de iluminação volumétrica " +"(também chamado \"Godrays\")." #: src/settings_translation_file.cpp -#, fuzzy msgid "Set to true to enable waving leaves." -msgstr "" -"Definido como true habilita o balanço das folhas.\n" -"Requer que os sombreadores estejam ativados." +msgstr "Defina para verdadeiro para habilitar o balanço das folhas." #: src/settings_translation_file.cpp -#, fuzzy msgid "Set to true to enable waving liquids (like water)." msgstr "" -"Definido como true permite ondulação de líquidos (como a água).\n" -"Requer que os sombreadores estejam ativados." +"Defina para verdadeiro para habilitar a ondulação de líquidos (como a água)." #: src/settings_translation_file.cpp -#, fuzzy msgid "Set to true to enable waving plants." -msgstr "" -"Definido como true permite balanço de plantas.\n" -"Requer que os sombreadores estejam ativados." +msgstr "Defina para verdadeiro para habilitar o balanço das plantas." #: src/settings_translation_file.cpp msgid "" @@ -6492,6 +6415,13 @@ msgid "" "top-left - processed base image, top-right - final image\n" "bottom-left - raw base image, bottom-right - bloom texture." msgstr "" +"Defina como verdadeiro para renderizar a depuração detalhada do efeito " +"resplandecer.\n" +"No modo de depuração, a tela é dividida em 4 quadrantes:\n" +"superior esquerdo - imagem de base processada, superior direito - imagem " +"final\n" +"inferior esquerdo - imagem de base bruta, inferior direito - textura " +"resplandecer." #: src/settings_translation_file.cpp msgid "" @@ -6567,13 +6497,19 @@ msgid "" "draw calls, benefiting especially high-end GPUs.\n" "Systems with a low-end GPU (or no GPU) would benefit from smaller values." msgstr "" +"Comprimento lateral de um cubo dos blocos de mapa que o cliente considerará " +"em conjunto\n" +"ao gerar malhas.\n" +"Valores maiores aumentam a utilização da GPU, reduzindo o número de\n" +"chamadas de modelagem, beneficiando especialmente GPUs de ponta.\n" +"Sistemas com uma GPU de baixo custo (ou sem GPU) se beneficiam com valores " +"menores." #: src/settings_translation_file.cpp msgid "Simulate translucency when looking at foliage in the sunlight." -msgstr "" +msgstr "Simula translucidez ao ver a folhagem sob a luz do sol." #: src/settings_translation_file.cpp -#, fuzzy 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" @@ -6582,7 +6518,7 @@ msgid "" "Altering this value is for special usage, leaving it unchanged is\n" "recommended." msgstr "" -"Tamanho dos mapchunks gerados pelo gerador de mapa, em mapblocks(16 nós).\n" +"Tamanho dos mapchunks gerados pelo gerador de mundo, em mapblocks(16 nós).\n" "ALERTA!: Não há benefício e existem diversos perigos em\n" "aumentar este valor acima de 5.\n" "Reduzir este valor aumenta a densidade de dungeons e cavernas.\n" @@ -6624,23 +6560,24 @@ msgid "Smooth lighting" msgstr "Iluminação suave" #: src/settings_translation_file.cpp -#, fuzzy msgid "Smooth scrolling" -msgstr "Iluminação suave" +msgstr "Rolamento suave" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Smooths rotation of camera when in cinematic mode, 0 to disable. Enter " "cinematic mode by using the key set in Controls." -msgstr "Suaviza a rotação da câmera no modo cinemático. 0 para desativar." +msgstr "" +"Suaviza a rotação da câmera no modo cinemático. 0 para desativar. Entre no " +"modo cinemático pela tecla definida em Controles." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Smooths rotation of camera, also called look or mouse smoothing. 0 to " "disable." -msgstr "Suaviza a rotação da câmera no modo cinemático. 0 para desativar." +msgstr "" +"Suaviza a rotação da câmera, também chamada de suavização do olhar ou do " +"mouse. 0 para desativar." #: src/settings_translation_file.cpp msgid "Sneaking speed" @@ -6651,9 +6588,8 @@ msgid "Sneaking speed, in nodes per second." msgstr "Velocidade ao esgueirar-se, em nós (blocos) por segundo." #: src/settings_translation_file.cpp -#, fuzzy msgid "Soft clouds" -msgstr "Nuvens 3D" +msgstr "Nuvens suaves" #: src/settings_translation_file.cpp msgid "Soft shadow radius" @@ -6664,9 +6600,8 @@ msgid "Sound" msgstr "Som" #: src/settings_translation_file.cpp -#, fuzzy msgid "Sound Extensions Blacklist" -msgstr "Lista negra de flags do ContentDB" +msgstr "Lista Negra de Extensões de Som" #: src/settings_translation_file.cpp msgid "" @@ -6692,17 +6627,15 @@ msgstr "" "(ou todos) os itens." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Spread a complete update of the shadow map over a given number of frames.\n" "Higher values might make shadows laggy, lower values\n" "will consume more resources." msgstr "" -"Espalha uma atualização completa do mapeamento de sombras sobre uma dada " -"quantidade de quadros.\n" -"Valores maiores podem tornar as sombras lentas, valores menores\n" -"faz com que se consuma mais recursos.\n" -"Valor mínimo: 1; valor máximo: 16" +"Distribui uma atualização completa do mapa de sombras em uma determinada " +"taxa de quadros.\n" +"Valores mais altos podem tornar as sombras lentas, valores mais baixos\n" +"consumirão mais recursos." #: src/settings_translation_file.cpp msgid "" @@ -6715,9 +6648,8 @@ msgstr "" "O desvio padrão da gaussiana do aumento da curva de luz." #: src/settings_translation_file.cpp -#, fuzzy msgid "Static spawn point" -msgstr "Ponto de spawn estático" +msgstr "Ponto de renascimento estático" #: src/settings_translation_file.cpp msgid "Steepness noise" @@ -6754,7 +6686,6 @@ msgid "Strip color codes" msgstr "Códigos de faixa de cor" #: src/settings_translation_file.cpp -#, fuzzy 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" @@ -6767,21 +6698,21 @@ msgid "" "server-intensive extreme water flow and to avoid vast flooding of the\n" "world surface below." msgstr "" -"Nível de superfície de água opcional colocada em uma camada sólida de " -"flutuação.\n" +"Nível de superfície de água opcional colocada em uma camada sólida de ilhas " +"flutuantes.\n" "A água está desativada por padrão e só será colocada se este valor for " "definido\n" -"acima de 'mgv7_floatland_ymax' - 'mgv7_floatland_taper' (o início do\n" +"para acima de 'mgv7_floatland_ymax' - 'mgv7_floatland_taper' (o início do\n" "afilamento superior).\n" "*** AVISO, POTENCIAL PERIGO PARA OS MUNDOS E DESEMPENHO DO SERVIDOR ***:\n" -"Ao habilitar a colocação de água, as áreas flutuantes devem ser configuradas " +"Ao habilitar a colocação de água, as ilhas flutuantes devem ser configuradas " "e testadas\n" "para ser uma camada sólida, definindo 'mgv7_floatland_density' para 2.0 (ou " "outro\n" -"valor necessário dependendo de 'mgv7_np_floatland'), para evitar\n" -"fluxo de água extremo intensivo do servidor e para evitar grandes inundações " -"do\n" -"superfície do mundo abaixo." +"valor necessário dependendo de 'mgv7_np_floatland'), para evitar um\n" +"fluxo de água extremo que consuma o servidor e para evitar grandes " +"inundações na\n" +"superfície abaixo dentro do mundo." #: src/settings_translation_file.cpp msgid "Synchronous SQLite" @@ -6797,7 +6728,7 @@ msgstr "Ruído alternativo do terreno" #: src/settings_translation_file.cpp msgid "Terrain base noise" -msgstr "Altura do terreno" +msgstr "Ruído base do terreno" #: src/settings_translation_file.cpp msgid "Terrain height" @@ -6805,11 +6736,11 @@ msgstr "Altura do terreno" #: src/settings_translation_file.cpp msgid "Terrain higher noise" -msgstr "Altura do terreno" +msgstr "Ruído da altura do terreno" #: src/settings_translation_file.cpp msgid "Terrain noise" -msgstr "Altura do terreno" +msgstr "Ruído do terreno" #: src/settings_translation_file.cpp msgid "" @@ -6875,22 +6806,22 @@ msgid "" "The default format in which profiles are being saved,\n" "when calling `/profiler save [format]` without format." msgstr "" -"O formato padrão no qual as analises estão sendo salvas,\n" -"Quando chamado `/profiler save [formato]` sem formato." +"O formato padrão no qual as análises estão sendo salvas,\n" +"Quando chamado `/profiler save [format]` sem formato." #: src/settings_translation_file.cpp msgid "" "The delay in milliseconds after which a touch interaction is considered a " "long tap." msgstr "" +"O atraso em milissegundos após o qual uma interação de toque é considerada " +"um toque longo." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "The file path relative to your world path in which profiles will be saved to." msgstr "" -"O caminho de arquivo relativo ao sua pasta do mundo no qual as analises " -"serão salvas." +"O caminho da pasta com o arquivo do seu mundo onde os perfis serão salvos." #: src/settings_translation_file.cpp msgid "" @@ -6904,6 +6835,15 @@ msgid "" "Known from the classic Luanti mobile controls.\n" "Combat is more or less impossible." msgstr "" +"O gesto para socar jogadores/entidades.\n" +"Isso pode ser substituído por jogos e mods.\n" +"\n" +"* Clique curto\n" +"Fácil de usar e conhecido de outros jogos que não serão nomeados.\n" +"\n" +"* Clique longo\n" +"Conhecido pelos controles clássicos do Luanti mobile.\n" +"O combate é mais ou menos impossível." #: src/settings_translation_file.cpp msgid "The identifier of the joystick to use" @@ -6925,16 +6865,27 @@ msgid "" "Use dedicated dig/place buttons to interact.\n" "Interaction happens at crosshair position." msgstr "" +"O tipo de controles de escavação/colocação usados.\n" +"\n" +"* Clique\n" +"Clique/segure em qualquer lugar da tela para interagir.\n" +"A interação acontece na posição do dedo.\n" +"\n" +"* Clique com a mira\n" +"Clique/segure em qualquer lugar da tela para interagir.\n" +"A interação acontece na posição da mira.\n" +"\n" +"* Botões com mira\n" +"Use botões dedicados a cavar/colocar para interagir.\n" +"A interação acontece na posição da mira." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "The length in pixels after which a touch interaction is considered movement." msgstr "" -"A largura em pixels necessária para interação de tela de toque começar." +"A medida em pixels para que interagir com toque seja considerado movimento." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "The maximum height of the surface of waving liquids.\n" "4.0 = Wave height is two nodes.\n" @@ -6944,17 +6895,15 @@ msgstr "" "A altura máxima da superfície de líquidos com ondas.\n" "4.0 = Altura da onda é dois nós.\n" "0.0 = Onda nem se move.\n" -"O padrão é 1.0 (meio nó).\n" -"Requer ondas em líquidos habilitada." +"O padrão é 1.0 (meio nó)." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "The minimum time in seconds it takes between digging nodes when holding\n" "the dig button." msgstr "" -"O tempo em segundos que leva entre as colocações de nó repetidas ao segurar\n" -"o botão de colocar." +"O tempo mínimo em segundos que leva entre os nós de escavações ao segurar\n" +"o botão de cavar." #: src/settings_translation_file.cpp msgid "The network interface that the server listens on." @@ -6987,7 +6936,6 @@ msgstr "" "Isso deve ser configurado junto com active_object_send_range_blocks." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "The rendering back-end.\n" "Note: A restart is required after changing this!\n" @@ -6995,8 +6943,7 @@ msgid "" msgstr "" "O back-end de renderização.\n" "Nota: É necessário reiniciar depois de alterar.\n" -"OpenGL é o padrão para Desktop, e OGLES2 para Android.\n" -" (shaders) é suportado pelo OpenGL e pelo OGLES2 (experimental)." +"OpenGL é o padrão para Desktop, e OGLES2 para Android." #: src/settings_translation_file.cpp msgid "" @@ -7060,15 +7007,15 @@ msgid "The type of joystick" msgstr "O tipo do joystick" #: src/settings_translation_file.cpp -#, fuzzy 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 onde o calor cai por 20 caso 'altitude_chill' esteja\n" -"habilitado. Também é a distancia vertical onde a umidade cai por 10 se\n" -"'altitude_dry' estiver habilitado." +"A distancia vertical em que o calor cai para 20 se o 'altitude_chill' " +"estiver\n" +"habilitado. É também a distância vertical em que a umidade cai por 10 se\n" +"o 'altitude_dry' estiver habilitado." #: src/settings_translation_file.cpp msgid "Third of 4 2D noises that together define hill/mountain range height." @@ -7077,7 +7024,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Threshold for long taps" -msgstr "" +msgstr "Limite para toques longos" #: src/settings_translation_file.cpp msgid "" @@ -7114,82 +7061,72 @@ msgstr "" "remoção de um node." #: src/settings_translation_file.cpp -#, fuzzy msgid "Toggle Aux1 key" -msgstr "Tecla Aux1" +msgstr "Alternar tecla Especial" #: src/settings_translation_file.cpp msgid "Toggle HUD" msgstr "Ativar interface" #: src/settings_translation_file.cpp -#, fuzzy msgid "Toggle Sneak key" -msgstr "Tecla de alternância do modo de câmera" +msgstr "Alternar Tecla de Esgueirar" #: src/settings_translation_file.cpp -#, fuzzy msgid "Toggle automatic forward" -msgstr "Tecla para frente automática" +msgstr "Alternar ir automático para frente" #: src/settings_translation_file.cpp -#, fuzzy msgid "Toggle block bounds" -msgstr "Limites de bloco" +msgstr "Alternar limites de bloco" #: src/settings_translation_file.cpp -#, fuzzy msgid "Toggle camera mode" -msgstr "Tecla de alternância do modo de câmera" +msgstr "Alternar modo de câmera" #: src/settings_translation_file.cpp -#, fuzzy msgid "Toggle camera update" -msgstr "Tecla de alternância do modo de câmera" +msgstr "Alternar atualização de câmera" #: src/settings_translation_file.cpp -#, fuzzy msgid "Toggle cinematic mode" -msgstr "Alternar modo de câmera cinemática" +msgstr "Alternar modo cinemático" #: src/settings_translation_file.cpp -#, fuzzy msgid "Toggle debug info" -msgstr "Ativar névoa" +msgstr "Alternar informação de depuração" #: src/settings_translation_file.cpp msgid "Toggle fog" msgstr "Ativar névoa" #: src/settings_translation_file.cpp -#, fuzzy msgid "Toggle fullscreen" -msgstr "Alternar voo" +msgstr "Alternar tela cheia" #: src/settings_translation_file.cpp -#, fuzzy msgid "Toggle large chat console" -msgstr "Tecla do console" +msgstr "Alternar console de bate-papo grande" #: src/settings_translation_file.cpp msgid "Toggle pitchmove" -msgstr "Ativar Voar seguindo a câmera" +msgstr "Alternar movimentação inclinada" #: src/settings_translation_file.cpp -#, fuzzy msgid "Toggle profiler" -msgstr "Alternar voo" +msgstr "Alternar analisador" #: src/settings_translation_file.cpp -#, fuzzy msgid "Toggle unlimited view range" -msgstr "Alcance de visualização ilimitado desabilitado" +msgstr "Alternar alcance limitado de visão desabilitado" #: src/settings_translation_file.cpp msgid "" "Tolerance of movement cheat detector.\n" "Increase the value if players experience stuttery movement." msgstr "" +"Detector de trapaças de tolerância de movimento.\n" +"Aumenta o valor se os jogadores apresentarem movimentos irregulares." #: src/settings_translation_file.cpp msgid "Tooltip delay" @@ -7197,45 +7134,39 @@ msgstr "Atraso de dica de ferramenta" #: src/settings_translation_file.cpp msgid "Touchscreen" -msgstr "Tela sensível ao toque" +msgstr "Tela touchscreen" #: src/settings_translation_file.cpp -#, fuzzy msgid "Touchscreen controls" -msgstr "Limiar a tela de toque" +msgstr "Controles na tela touchscreen" #: src/settings_translation_file.cpp -#, fuzzy msgid "Touchscreen sensitivity" -msgstr "Sensibilidade do mouse" +msgstr "Sensibilidade da tela touchscreen" #: src/settings_translation_file.cpp -#, fuzzy msgid "Touchscreen sensitivity multiplier." -msgstr "Multiplicador de sensibilidade do mouse." +msgstr "Multiplicador de sensibilidade da tela touchscreen." #: src/settings_translation_file.cpp msgid "Tradeoffs for performance" msgstr "Compensações para o desempenho" #: src/settings_translation_file.cpp -#, fuzzy msgid "Translucent foliage" -msgstr "Líquidos Opacos" +msgstr "Folhagem translúcida" #: src/settings_translation_file.cpp -#, fuzzy msgid "Translucent liquids" -msgstr "Líquidos Opacos" +msgstr "Líquidos translúcidos" #: src/settings_translation_file.cpp msgid "Transparency Sorting Distance" msgstr "Distância para o Ordenamento de Transparência" #: src/settings_translation_file.cpp -#, fuzzy msgid "Transparency Sorting Group by Buffers" -msgstr "Distância para o Ordenamento de Transparência" +msgstr "Grupo de Classificação de Transparência por Buffers" #: src/settings_translation_file.cpp msgid "Trees noise" @@ -7268,16 +7199,22 @@ msgid "" "\n" "This setting should only be changed if you have performance problems." msgstr "" +"Tipo de occlusion_culler\n" +"\n" +"\"loops\" é o algoritmo legado com loops aninhados e complexidade O(n³)\n" +"\"bfs\" é o novo algoritmo baseado em busca em largura e seleção lateral\n" +"\n" +"Esta configuração só deve ser alterada se você tiver problemas de desempenho." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "URL to JSON file which provides information about the newest Luanti " "release.\n" "If this is empty the engine will never check for updates." msgstr "" -"URL do arquivo JSON que fornece informações sobre o mais novo lançamento do " -"Minetest" +"URL para o arquivo JSON que fornece informações sobre a versão mais recente " +"do Luanti.\n" +"Se estiver vazio, o mecanismo nunca verificará se há atualizações." #: src/settings_translation_file.cpp msgid "URL to the server list displayed in the Multiplayer Tab." @@ -7288,7 +7225,6 @@ msgid "Undersampling" msgstr "Subamostragem" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Undersampling is similar to using a lower screen resolution, but it applies\n" "to the game world only, keeping the GUI intact.\n" @@ -7299,12 +7235,14 @@ msgid "" "set\n" "to a non-default value." msgstr "" -"A subamostragem é semelhante a usar uma resolução de tela inferior, mas se " -"aplica\n" +"A subamostragem é como uma resolução de tela inferior, mas se aplica\n" "apenas para o mundo do jogo, mantendo a GUI intacta.\n" -"Deve dar um aumento significativo de desempenho ao custo de uma imagem menos " +"Fornece um aumento significativo de desempenho ao custo de uma imagem menos " "detalhada.\n" -"Valores mais altos resultam em uma imagem menos detalhada." +"Valores mais altos resultam em uma imagem menos detalhada.\n" +"Nota: a subamostragem ainda não é suportada se a configuração \"3d_mode\" " +"estiver definida\n" +"para um valor diferente do padrão." #: src/settings_translation_file.cpp msgid "Unlimited player transfer distance" @@ -7316,11 +7254,11 @@ msgstr "Descarregar os dados do servidor não utilizados" #: src/settings_translation_file.cpp msgid "Update information URL" -msgstr "" +msgstr "Atualizar URL de informação" #: src/settings_translation_file.cpp msgid "Upper Y limit of dungeons." -msgstr "Limite topo Y de dungeons." +msgstr "Limite Y da altura das masmorras." #: src/settings_translation_file.cpp msgid "Upper Y limit of floatlands." @@ -7331,28 +7269,27 @@ msgid "Use a cloud animation for the main menu background." msgstr "Usar uma animação de nuvem para o fundo do menu principal." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Use anisotropic filtering when looking at textures from an angle.\n" "This provides a significant improvement when used together with mipmapping." -msgstr "Usar filtragem anisotrópica quando visualizar texturas de um ângulo." +msgstr "" +"Usa filtragem anisotrópica ao olhar texturas de um ângulo.\n" +"Isso proporciona uma melhoria significativa ao usar em conjunto com o " +"mipmapping." #: src/settings_translation_file.cpp -#, fuzzy msgid "Use bilinear filtering when scaling textures." -msgstr "Use a filtragem trilinear ao dimensionamento de texturas." +msgstr "Usa filtragem bilinear ao dimensionar texturas." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Use mipmaps when scaling textures. May slightly increase performance,\n" "especially when using a high-resolution texture pack.\n" "Gamma-correct downscaling is not supported." msgstr "" -"Usar mip mapping para escalar texturas. Pode aumentar a performance " -"levemente,\n" +"Usa mipmaps para escalar texturas. Pode aumentar a performance levemente,\n" "especialmente quando usando um pacote de texturas em alta resolução.\n" -"O downscaling correto de gama não é suportado." +"A redução de escala com correção de gama não é suportada." #: src/settings_translation_file.cpp msgid "" @@ -7360,10 +7297,13 @@ msgid "" "This flag enables use of raytraced occlusion culling test for\n" "client mesh sizes smaller than 4x4x4 map blocks." msgstr "" +"Usa oclusão por raytracing no novo selecionador.\n" +"Esta opção permite o uso do teste de oclusão por traçado de raio para\n" +"tamanhos de malha do cliente menores que blocos de mapa 4x4x4." #: src/settings_translation_file.cpp msgid "Use smooth cloud shading." -msgstr "" +msgstr "Usa sombreamento suave nas nuvens." #: src/settings_translation_file.cpp msgid "" @@ -7371,15 +7311,18 @@ msgid "" "If both bilinear and trilinear filtering are enabled, trilinear filtering\n" "is applied." msgstr "" +"Usa a filtragem trilinear ao dimensionar texturas.\n" +"Se a filtragem bilinear e a filtragem trilinear estiverem habilitadas, a " +"filtragem trilinear\n" +"será aplicada." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "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 joystick virtual para ativar botão \"especial\".\n" +"Use um joystick virtual para ativar botão \"especial\".\n" "Se habilitado, o joystick virtual vai também clicar no botão \"especial\" " "quando estiver fora do circulo principal." @@ -7453,6 +7396,8 @@ msgid "" "Vertical screen synchronization. Your system may still force VSync on even " "if this is disabled." msgstr "" +"Sincronização vertical da tela. Seu sistema pode forçar a sincronização " +"vertical mesmo que ela esteja desabilitada." #: src/settings_translation_file.cpp msgid "Video driver" @@ -7480,7 +7425,7 @@ msgstr "Volume do som" #: src/settings_translation_file.cpp msgid "Volume multiplier when the window is unfocused." -msgstr "" +msgstr "Multiplicador de volume quando a janela está desfocada." #: src/settings_translation_file.cpp msgid "" @@ -7491,14 +7436,12 @@ msgstr "" "Requer que o sistema de som esteja ativado." #: src/settings_translation_file.cpp -#, fuzzy msgid "Volume when unfocused" -msgstr "FPS quando o jogo é pausado ou perde o foco" +msgstr "Volume quando desfocado" #: src/settings_translation_file.cpp -#, fuzzy msgid "Volumetric lighting" -msgstr "Iluminação suave" +msgstr "Iluminação volumétrica" #: src/settings_translation_file.cpp msgid "" @@ -7569,13 +7512,16 @@ msgstr "Cor dos links" #: src/settings_translation_file.cpp msgid "When enabled, liquid reflections are simulated." -msgstr "" +msgstr "Quando ativado, reflexos líquidos são simulados." #: src/settings_translation_file.cpp msgid "" "When enabled, the GUI is optimized to be more usable on touchscreens.\n" "Whether this is enabled by default depends on your hardware form-factor." msgstr "" +"Quando ativada, a interface gráfica do usuário (GUI) é otimizada para ser " +"mais utilizável em telas sensíveis ao toque.\n" +"A ativação padrão depende do formato do seu hardware." #: src/settings_translation_file.cpp msgid "" @@ -7588,7 +7534,6 @@ msgstr "" "hardware (por exemplo render-to-texture para nodes no inventário)." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "When using bilinear/trilinear filtering, low-resolution textures\n" "can be blurred, so this option automatically upscales them to preserve\n" @@ -7599,17 +7544,17 @@ msgid "" "This is also used as the base node texture size for world-aligned\n" "texture autoscaling." msgstr "" -"Ao usar filtros bilineares/trilinear/anisotrópica, texturas de baixa " -"resolução\n" -"podem ficar borradas, portanto amplie-as com a interpolação de vizinhos \n" -"mais próximos caso queira pixels perfeitos. Este valor define o tamanho \n" -"mínimo para as texturas ampliadas; valores maiores são mais nítidos, \n" -"porém precisam de mais memória. Use de preferência potências de 2.\n" -"Essa configuração SÓ SERÁ APLICADA se os filtros citados estiverem " -"habilitados.\n" -"Este valor também é usado como o tamanho de textura para a escala " -"automática\n" -"daquelas alinhadas com o mundo." +"Ao usar a filtragem bilinear/trilinear, texturas de baixa resolução\n" +"podem ficar desfocadas, portanto, esta opção as amplia automaticamente para " +"preservar\n" +"pixels nítidos. Isso define o tamanho mínimo de textura para as texturas " +"ampliadas;\n" +"valores mais altos parecem mais nítidos, mas requerem mais memória.\n" +"Esta configuração é aplicada SOMENTE se algum dos filtros mencionados " +"estiver habilitado.\n" +"Isso também é usado como o tamanho de textura do nó base para o " +"dimensionamento automático de texturas\n" +"alinhadas ao mundo." #: src/settings_translation_file.cpp msgid "" @@ -7630,7 +7575,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Whether the window is maximized." -msgstr "" +msgstr "Se a janela estiver maximizada." #: src/settings_translation_file.cpp msgid "" @@ -7647,16 +7592,15 @@ msgid "Whether to fog out the end of the visible area." msgstr "Se for usar névoa no fim da área visível." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Whether to mute sounds. You can unmute sounds at any time.\n" "In-game, you can toggle the mute state with the mute key or by using the\n" "pause menu." msgstr "" -"Quando mutar os sons. Você pode mutar os sons a qualquer hora, a não ser\n" -"que o sistema de som esteja desabilitado (enable_sound=false).\n" -"No jogo, você pode habilitar o estado de mutado com o botão de mutar\n" -"ou usando o menu de pausa." +"Quando quiser desativar os sons. Você pode ativar o som a qualquer momento.\n" +"No jogo, você pode alternar o modo mudo com a tecla de silenciamento ou " +"usando o\n" +"menu de pausa." #: src/settings_translation_file.cpp msgid "" @@ -7666,36 +7610,28 @@ msgstr "" "como teclar F5)." #: src/settings_translation_file.cpp -#, fuzzy msgid "Width component of the initial window size." -msgstr "" -"Componente de tamanho da janela inicial. Ignorado em modo de tela cheia." +msgstr "Componente de largura do tamanho inicial da janela." #: src/settings_translation_file.cpp msgid "Width of the selection box lines around nodes." msgstr "Largura das linhas do bloco de seleção em torno de nodes." #: src/settings_translation_file.cpp -#, fuzzy msgid "Will also disable autoforward, when active." -msgstr "" -"Tecla para mover o jogador para trás.\n" -"Também ira desabilitar o andar para frente automático quando ativo.\n" -"Consulte http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "Também desabilitará o avanço automático, quando ativo." #: src/settings_translation_file.cpp msgid "Window maximized" -msgstr "" +msgstr "Janela maximizada" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Windows systems only: Start Luanti with the command line window in the " "background.\n" "Contains the same information as the file debug.txt (default name)." msgstr "" -"Somente no sistemas Windows: Inicie o Minetest com a janela da linha de " +"Somente no sistemas Windows: Inicie o Luanti com a janela da linha de " "comando em segundo plano.\n" "Contém as mesmas informações que o arquivo debug.txt (nome padrão)." @@ -7712,7 +7648,6 @@ msgid "World start time" msgstr "Horário inicial do mundo" #: src/settings_translation_file.cpp -#, fuzzy 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" @@ -7721,9 +7656,10 @@ msgid "" "See also texture_min_size.\n" "Warning: This option is EXPERIMENTAL!" msgstr "" -"Texturas alinhadas ao mundo podem ser escaladas em vários nós. Entretanto,\n" -"o servidor pode não enviar a escala desejada, especialmente se você usa\n" -"um pacote de textura especialmente projetado; com está opção, o cliente " +"Texturas alinhadas ao mundo podem ser escaladas para abranger vários nós.\n" +"Porém, o servidor pode não enviar a escala desejada, principalmente se você " +"usar\n" +"um pacote de textura projetado de outra maneira; com está opção, o cliente " "tenta\n" "determinar a escala automaticamente baseado no tamanho da textura.\n" "Veja também texture_min_size.\n" @@ -7804,14 +7740,68 @@ msgstr "Tempo limite de interação do cURL" msgid "cURL parallel limit" msgstr "limite paralelo de cURL" -#, fuzzy -#~ msgid "Key for taking screenshots." -#~ msgstr "Formato das screenshots." +#~ msgid "Apps" +#~ msgstr "Aplicativos" -#, fuzzy -#~ msgid "Key for toggling cinematic mode." -#~ msgstr "Suavização da câmera no modo cinematográfico" +#~ msgid "End" +#~ msgstr "Tecla End" -#, fuzzy -#~ msgid "Key for toggling fullscreen mode." -#~ msgstr "Modo tela cheia." +#~ msgid "Erase EOF" +#~ msgstr "Apagar EOF" + +#~ msgid "Execute" +#~ msgstr "Executar" + +#~ msgid "Help" +#~ msgstr "Ajuda" + +#~ msgid "Home" +#~ msgstr "Home" + +#~ msgid "IME Accept" +#~ msgstr "Aceitar Método de Entrada" + +#~ msgid "IME Convert" +#~ msgstr "Converter Método de Entrada" + +#~ msgid "IME Escape" +#~ msgstr "Sair do Método de Entrada" + +#~ msgid "IME Mode Change" +#~ msgstr "Mudar Modo de Método de Entrada" + +#~ msgid "IME Nonconvert" +#~ msgstr "Método de Entrada Inconversível" + +#~ msgid "Left Button" +#~ msgstr "Botão Esquerdo" + +#~ msgid "Middle Button" +#~ msgstr "Roda do mouse" + +#~ msgid "No world created or selected!" +#~ msgstr "Nenhum mundo criado ou selecionado!" + +#~ msgid "OEM Clear" +#~ msgstr "Limpar OEM" + +#~ msgid "Right Button" +#~ msgstr "Botão direito" + +#~ msgid "Select" +#~ msgstr "Tecla Select" + +#~ msgid "Sleep" +#~ msgstr "Tecla Sleep" + +#~ msgid "Snapshot" +#~ msgstr "Captura de tela" + +#~ msgid "Tab" +#~ msgstr "Tab" + +#~ msgid "X Button 1" +#~ msgstr "Botão X 1" + +#~ msgid "X Button 2" +#~ msgstr "Botão X 2" diff --git a/po/ro/luanti.po b/po/ro/luanti.po index a2b16693a..597acc16d 100644 --- a/po/ro/luanti.po +++ b/po/ro/luanti.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Romanian (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-07-11 19:59+0200\n" +"POT-Creation-Date: 2025-09-23 19:19+0200\n" "PO-Revision-Date: 2025-01-27 15:28+0000\n" "Last-Translator: Negoitescu \n" "Language-Team: Romanian \n" "Language-Team: Russian \n" @@ -13,7 +13,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " "n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -"X-Generator: Weblate 5.13-dev\n" +"X-Generator: Weblate 5.13.1-dev\n" #: builtin/client/chatcommands.lua msgid "Clear the out chat queue" @@ -71,8 +71,8 @@ msgstr "Получить справку по командам (-t: вывод в msgid "" "Use '.help ' to get more information, or '.help all' to list everything." msgstr "" -"Используйте «.help » для получения дополнительной информации, или «." -"help all» для вывода всего списка." +"Используйте «.help » для получения дополнительной информации, или " +"«.help all» для вывода всего списка." #: builtin/common/chatcommands.lua msgid "[all | ] [-t]" @@ -608,9 +608,8 @@ msgid "Website" msgstr "Вебсайт" #: builtin/mainmenu/content/dlg_package.lua -#, fuzzy msgid "by $1" -msgstr "$1 из $2" +msgstr "от $1" #: builtin/mainmenu/content/dlg_package.lua msgid "by $1 — $2 downloads — +$3 / $4 / -$5" @@ -1230,10 +1229,6 @@ msgstr "" msgid "New" msgstr "Новый" -#: builtin/mainmenu/tab_local.lua -msgid "No world created or selected!" -msgstr "Мир не создан или не выбран!" - #: builtin/mainmenu/tab_local.lua msgid "Play Game" msgstr "Играть" @@ -1362,7 +1357,7 @@ msgstr "Готово!" #: src/client/client.cpp #, c-format msgid "Failed to save screenshot to \"%s\"" -msgstr "" +msgstr "Не удалось сохранить снимок экрана в \"%s\"" #: src/client/client.cpp msgid "Initializing nodes" @@ -1381,9 +1376,9 @@ msgid "Rebuilding shaders..." msgstr "Сборка шейдеров..." #: src/client/client.cpp -#, fuzzy, c-format +#, c-format msgid "Saved screenshot to \"%s\"" -msgstr "Скриншоты" +msgstr "Снимок экрана сохранён в \"%s\"" #: src/client/clientlauncher.cpp msgid "Could not find or load game: " @@ -1838,10 +1833,6 @@ msgstr "Профилировщик скрыт" 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" @@ -1872,44 +1863,19 @@ msgid "Down Arrow" msgstr "Вниз" #: src/client/keycode.cpp -msgid "End" -msgstr "End" +#, fuzzy +msgid "End Key" +msgstr "Menu" #: src/client/keycode.cpp -msgid "Erase EOF" -msgstr "Стереть EOF" +#, fuzzy +msgid "Help Key" +msgstr "Delete" #: src/client/keycode.cpp -msgid "Execute" -msgstr "Выполнить" - -#: 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" - -#: src/client/keycode.cpp -msgid "IME Convert" -msgstr "Конвертирование IME" - -#: src/client/keycode.cpp -msgid "IME Escape" -msgstr "Выход IME" - -#: src/client/keycode.cpp -msgid "IME Mode Change" -msgstr "Изменение Режима IME" - -#: src/client/keycode.cpp -msgid "IME Nonconvert" -msgstr "Неконвертирование IME" +#, fuzzy +msgid "Home Key" +msgstr "Zoom" #: src/client/keycode.cpp msgid "Insert" @@ -1920,8 +1886,9 @@ msgid "Left Arrow" msgstr "Влево" #: src/client/keycode.cpp -msgid "Left Button" -msgstr "Левая кнопка" +#, fuzzy +msgid "Left Click" +msgstr "Левый Ctrl" #: src/client/keycode.cpp msgid "Left Control" @@ -1935,18 +1902,26 @@ msgstr "Левый Alt" msgid "Left Shift" msgstr "Левый Shift" +#. ~ Name of key #: src/client/keycode.cpp msgid "Left Windows" msgstr "Левый Win" -#. ~ Key name, common on Windows keyboards #: src/client/keycode.cpp msgid "Menu Key" msgstr "Menu" #: src/client/keycode.cpp -msgid "Middle Button" -msgstr "Средняя кнопка" +msgid "Middle Click" +msgstr "" + +#: src/client/keycode.cpp +msgid "Mouse X1" +msgstr "" + +#: src/client/keycode.cpp +msgid "Mouse X2" +msgstr "" #: src/client/keycode.cpp msgid "Num Lock" @@ -2012,10 +1987,6 @@ msgstr "Цифровая клавиатура 8" msgid "Numpad 9" msgstr "Цифровая клавиатура 9" -#: src/client/keycode.cpp -msgid "OEM Clear" -msgstr "Отчистка OEM" - #: src/client/keycode.cpp msgid "Page Down" msgstr "Page Down" @@ -2047,8 +2018,9 @@ msgid "Right Arrow" msgstr "Вправо" #: src/client/keycode.cpp -msgid "Right Button" -msgstr "Правая кнопка" +#, fuzzy +msgid "Right Click" +msgstr "Правый Ctrl" #: src/client/keycode.cpp msgid "Right Control" @@ -2062,6 +2034,7 @@ msgstr "Правый Alt" msgid "Right Shift" msgstr "Правый Shift" +#. ~ Name of key #: src/client/keycode.cpp msgid "Right Windows" msgstr "Правый Win" @@ -2070,47 +2043,28 @@ msgstr "Правый Win" msgid "Scroll Lock" msgstr "Scroll Lock" -#. ~ Key name #: src/client/keycode.cpp -msgid "Select" -msgstr "Выбор" +#, fuzzy +msgid "Select Key" +msgstr "Delete" #: src/client/keycode.cpp msgid "Shift Key" msgstr "Shift" -#: src/client/keycode.cpp -msgid "Sleep" -msgstr "Сон" - -#: src/client/keycode.cpp -msgid "Snapshot" -msgstr "Snapshot" - #: src/client/keycode.cpp msgid "Space" msgstr "Пробел" #: src/client/keycode.cpp -msgid "Tab" -msgstr "Tab" +#, fuzzy +msgid "Tab Key" +msgstr "Break" #: src/client/keycode.cpp msgid "Up Arrow" msgstr "Вверх" -#: src/client/keycode.cpp -msgid "X Button 1" -msgstr "Доп. кнопка 1" - -#: src/client/keycode.cpp -msgid "X Button 2" -msgstr "Доп. кнопка 2" - -#: src/client/keycode.cpp -msgid "Zoom Key" -msgstr "Zoom" - #: src/client/minimap.cpp msgid "Minimap hidden" msgstr "Миникарта скрыта" @@ -2539,15 +2493,15 @@ msgid "3D noise that determines number of dungeons per mapchunk." msgstr "3D-шум, определяющий количество подземелий на мапчанк карты." #: src/settings_translation_file.cpp +#, fuzzy msgid "" "3D support.\n" "Currently supported:\n" -"- none: no 3d output.\n" -"- anaglyph: cyan/magenta color 3d.\n" -"- interlaced: odd/even line based polarization screen support.\n" -"- topbottom: split screen top/bottom.\n" -"- sidebyside: split screen side by side.\n" -"- crossview: Cross-eyed 3d" +"- none: no 3D output\n" +"- anaglyph: cyan/magenta color 3D\n" +"- topbottom: split screen top/bottom\n" +"- sidebyside: split screen side-by-side\n" +"- crossview: cross-eyed 3D" msgstr "" "Поддержка 3D.\n" "Сейчас поддерживаются:\n" @@ -2657,14 +2611,12 @@ msgid "Allows liquids to be translucent." msgstr "Позволяет жидкостям быть прозрачными." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Also used for climbing down and descending in water if aux1_descends is " "disabled." msgstr "" -"Клавиша, чтобы красться.\n" -"Также используется для спуска и погружения под воду, если параметр " -"aux1_descends отключён." +"Также используется для спуска и погружения в воду, если параметр " +"aux1_descends отключен." #: src/settings_translation_file.cpp msgid "" @@ -2927,6 +2879,17 @@ msgstr "Сглаживание камеры" msgid "Camera smoothing in cinematic mode" msgstr "Сглаживание камеры в кинематографическом режиме" +#: src/settings_translation_file.cpp +msgid "Capture Tracy zones" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Capture Tracy zones with the profiler's instrumentation.\n" +"You need to build with Tracy to use this, see doc/developing/profiling.md\n" +"for details." +msgstr "" + #: src/settings_translation_file.cpp msgid "Cave noise" msgstr "Шум пещер" @@ -3094,8 +3057,8 @@ msgid "" msgstr "" "Список разделенных запятыми расширений AL и ALC, которые не следует " "использовать.\n" -"Полезно для тестирования. Подробности смотрите в разделе al_extensions.[h," -"cpp]." +"Полезно для тестирования. Подробности смотрите в разделе al_extensions." +"[h,cpp]." #: src/settings_translation_file.cpp msgid "" @@ -3429,14 +3392,13 @@ msgid "Defines tree areas and tree density." msgstr "Определяет области и плотность деревьев." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Delay between mesh updates on the client in ms. Increasing this will slow\n" "down the rate of mesh updates, which can help reduce jitter." msgstr "" -"Задержка между обновлением мешей на клиенте в мс. Увеличение этого значения\n" -"замедлит скорость обновления мешей, тем самым уменьшая проседания на " -"медленных клиентах." +"Задержка между обновлениями мешей на клиенте в мс. Увеличение этого " +"параметра\n" +"замедлит частоту обновлений мешей, что поможет уменьшить дрожание." #: src/settings_translation_file.cpp msgid "Delay in sending blocks after building" @@ -3482,6 +3444,10 @@ msgstr "" msgid "Developer Options" msgstr "Для разработчиков" +#: src/settings_translation_file.cpp +msgid "Disable if you only want to instrument with Tracy." +msgstr "" + #: src/settings_translation_file.cpp msgid "Disallow empty passwords" msgstr "Запретить пустой пароль" @@ -5430,6 +5396,11 @@ msgstr "" msgid "Maximum users" msgstr "Максимум пользователей" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Measure time samples" +msgstr "Пустынные храмы" + #: src/settings_translation_file.cpp msgid "Message of the day" msgstr "Сообщение дня" @@ -5491,6 +5462,8 @@ msgid "" "Modifier key bind for closing your world.\n" "Requires ESC + the selected key to work." msgstr "" +"Клавиша-модификатор для закрытия мира.\n" +"Требует одновременного нажатия ESC и выбранной клавиши." #: src/settings_translation_file.cpp msgid "Modifies the size of the HUD elements." @@ -5670,15 +5643,14 @@ msgstr "" "Количество сообщений, которые игрок может отправить в течении 10 секунд." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Number of threads to use for mesh generation.\n" "Value of 0 (default) will let Luanti automatically choose the number of " "threads." msgstr "" "Количество потоков, используемых для генерации мешей.\n" -"Значение 0 (по умолчанию) позволит Luanti автоматически определять " -"количество доступных потоков." +"Значение 0 (по умолчанию) позволяет Luanti автоматически выбирать количество " +"потоков." #: src/settings_translation_file.cpp msgid "Occlusion Culler" @@ -5966,9 +5938,8 @@ msgstr "" "READ_PLAYERINFO: 32 (отключить вызов get_player_names со стороны клиента)" #: src/settings_translation_file.cpp -#, fuzzy msgid "Return to Main Menu" -msgstr "Выйти в главное меню" +msgstr "Вернуться в Главное Меню" #: src/settings_translation_file.cpp msgid "Ridge mountain spread noise" @@ -6675,8 +6646,8 @@ msgstr "" "островов.\n" "Вода по умолчанию отключена и будет размещена только в том случае, если это " "значение\n" -"будет установлено выше «mgv7_floatland_ymax» - " -"«mgv7_floatland_taper» (начало\n" +"будет установлено выше «mgv7_floatland_ymax» - «mgv7_floatland_taper» " +"(начало\n" "верхнего сужения).\n" "*** ПРЕДУПРЕЖДЕНИЕ, ВЕРОЯТНАЯ ОПАСНОСТЬ ДЛЯ МИРОВ И РАБОТЫ СЕРВЕРА ***:\n" "При включении размещения воды парящих островов должны быть сконфигурированы " @@ -7081,9 +7052,8 @@ msgid "Toggle fullscreen" msgstr "Включить полноэкранный режим" #: src/settings_translation_file.cpp -#, fuzzy msgid "Toggle large chat console" -msgstr "Большая чат-консоль" +msgstr "Включить большую чат-консоль" #: src/settings_translation_file.cpp msgid "Toggle pitchmove" @@ -7094,9 +7064,8 @@ msgid "Toggle profiler" msgstr "Переключить профилировщик" #: src/settings_translation_file.cpp -#, fuzzy msgid "Toggle unlimited view range" -msgstr "Клавиша включения неограниченной дальности обзора." +msgstr "Клавиша включения неограниченной дальности обзора" #: src/settings_translation_file.cpp msgid "" @@ -7596,11 +7565,8 @@ msgid "Width of the selection box lines around nodes." msgstr "Толщина рамки выделения вокруг нод." #: src/settings_translation_file.cpp -#, fuzzy msgid "Will also disable autoforward, when active." -msgstr "" -"Клавиша для передвижения игрока назад.\n" -"При активации также отключает автобег." +msgstr "При активации также отключает автоматическое движение вперёд." #: src/settings_translation_file.cpp msgid "Window maximized" @@ -7719,195 +7685,68 @@ msgstr "Таймаут взаимодействия cURL" msgid "cURL parallel limit" msgstr "Лимит одновременных соединений cURL" -#~ msgid "Apply specular shading to nodes." -#~ msgstr "Применить зеркальное затенение к блокам." +#~ msgid "Apps" +#~ msgstr "Приложения" -#~ msgid "Key for decreasing the viewing range." -#~ msgstr "Клавиша уменьшения дальности обзора." +#~ msgid "End" +#~ msgstr "End" -#~ msgid "Key for decreasing the volume." -#~ msgstr "Клавиша уменьшения громкости." +#~ msgid "Erase EOF" +#~ msgstr "Стереть EOF" -#~ msgid "Key for dropping the currently selected item." -#~ msgstr "Клавиша выкидывания выбранного предмета." +#~ msgid "Execute" +#~ msgstr "Выполнить" -#~ msgid "Key for increasing the viewing range." -#~ msgstr "Клавиша увеличения дальности обзора." +#~ msgid "Help" +#~ msgstr "Help" -#~ msgid "Key for increasing the volume." -#~ msgstr "Клавиша увеличения громкости." +#~ msgid "Home" +#~ msgstr "Home" -#~ msgid "Key for jumping." -#~ msgstr "Клавиша прыжка." +#~ msgid "IME Accept" +#~ msgstr "Принятие IME" -#~ msgid "Key for moving the player forward." -#~ msgstr "Клавиша для передвижения игрока вперед." +#~ msgid "IME Convert" +#~ msgstr "Конвертирование IME" -#~ msgid "Key for moving the player left." -#~ msgstr "Клавиша для передвижения игрока влево." +#~ msgid "IME Escape" +#~ msgstr "Выход IME" -#~ msgid "Key for moving the player right." -#~ msgstr "Клавиша для передвижения игрока вправо." +#~ msgid "IME Mode Change" +#~ msgstr "Изменение Режима IME" -#~ msgid "Key for muting the game." -#~ msgstr "Клавиша заглушения игры." +#~ msgid "IME Nonconvert" +#~ msgstr "Неконвертирование IME" -#~ msgid "Key for opening the chat window." -#~ msgstr "Клавиша открытия окна чата." +#~ msgid "Left Button" +#~ msgstr "Левая кнопка" -#~ msgid "Key for opening the inventory." -#~ msgstr "Клавиша открытия инвентаря." +#~ msgid "Middle Button" +#~ msgstr "Средняя кнопка" -#~ msgid "Key for selecting the 11th hotbar slot." -#~ msgstr "Клавиша выбора 11-го слота для хотбара." +#~ msgid "No world created or selected!" +#~ msgstr "Мир не создан или не выбран!" -#~ msgid "Key for selecting the 12th hotbar slot." -#~ msgstr "Клавиша выбора 12-го слота для хотбара." +#~ msgid "OEM Clear" +#~ msgstr "Отчистка OEM" -#~ msgid "Key for selecting the 13th hotbar slot." -#~ msgstr "Клавиша выбора 13-го слота для хотбара." +#~ msgid "Right Button" +#~ msgstr "Правая кнопка" -#~ msgid "Key for selecting the 14th hotbar slot." -#~ msgstr "Клавиша выбора 14-го слота для хотбара." +#~ msgid "Select" +#~ msgstr "Выбор" -#~ msgid "Key for selecting the 15th hotbar slot." -#~ msgstr "Клавиша выбора 15-го слота для хотбара." +#~ msgid "Sleep" +#~ msgstr "Сон" -#~ msgid "Key for selecting the 16th hotbar slot." -#~ msgstr "Клавиша выбора 16-го слота для хотбара." +#~ msgid "Snapshot" +#~ msgstr "Snapshot" -#~ msgid "Key for selecting the 17th hotbar slot." -#~ msgstr "Клавиша выбора 17-го слота для хотбара." +#~ msgid "Tab" +#~ msgstr "Tab" -#~ msgid "Key for selecting the 18th hotbar slot." -#~ msgstr "Клавиша выбора 18-го слота для хотбара." +#~ msgid "X Button 1" +#~ msgstr "Доп. кнопка 1" -#~ msgid "Key for selecting the 19th hotbar slot." -#~ msgstr "Клавиша выбора 19-го слота для хотбара." - -#~ msgid "Key for selecting the 20th hotbar slot." -#~ msgstr "Клавиша выбора 20-го слота для хотбара." - -#~ msgid "Key for selecting the 21st hotbar slot." -#~ msgstr "Клавиша выбора 21-го слота для хотбара." - -#~ msgid "Key for selecting the 22nd hotbar slot." -#~ msgstr "Клавиша выбора 22-го слота для хотбара." - -#~ msgid "Key for selecting the 23rd hotbar slot." -#~ msgstr "Клавиша выбора 23-го слота для хотбара." - -#~ msgid "Key for selecting the 24th hotbar slot." -#~ msgstr "Клавиша выбора 24-го слота для хотбара." - -#~ msgid "Key for selecting the 25th hotbar slot." -#~ msgstr "Клавиша выбора 25-го слота для хотбара." - -#~ msgid "Key for selecting the 26th hotbar slot." -#~ msgstr "Клавиша выбора 26-го слота для хотбара." - -#~ msgid "Key for selecting the 27th hotbar slot." -#~ msgstr "Клавиша выбора 27-го слота для хотбара." - -#~ msgid "Key for selecting the 28th hotbar slot." -#~ msgstr "Клавиша выбора 28-го слота для хотбара." - -#~ msgid "Key for selecting the 29th hotbar slot." -#~ msgstr "Клавиша выбора 29-го слота для хотбара." - -#~ msgid "Key for selecting the 30th hotbar slot." -#~ msgstr "Клавиша выбора 30-го слота для хотбара." - -#~ msgid "Key for selecting the 31st hotbar slot." -#~ msgstr "Клавиша выбора 31-го слота для хотбара." - -#~ msgid "Key for selecting the 32nd hotbar slot." -#~ msgstr "Клавиша выбора 32-го слота для хотбара." - -#~ msgid "Key for selecting the eighth hotbar slot." -#~ msgstr "Клавиша выбора восьмого слота для хотбара." - -#~ msgid "Key for selecting the fifth hotbar slot." -#~ msgstr "Клавиша выбора пятого слота для хотбара." - -#~ msgid "Key for selecting the first hotbar slot." -#~ msgstr "Клавиша выбора первого слота для хотбара." - -#~ msgid "Key for selecting the fourth hotbar slot." -#~ msgstr "Клавиша выбора четвертого слота для хотбара." - -#~ msgid "Key for selecting the next item in the hotbar." -#~ msgstr "Клавиша выбора следующего предмета в хотбаре." - -#~ msgid "Key for selecting the ninth hotbar slot." -#~ msgstr "Клавиша выбора девятого слота для хотбара." - -#~ msgid "Key for selecting the previous item in the hotbar." -#~ msgstr "Клавиша выбора предыдущего предмета в хотбаре." - -#~ msgid "Key for selecting the second hotbar slot." -#~ msgstr "Клавиша выбора второго слота для хотбара." - -#~ msgid "Key for selecting the seventh hotbar slot." -#~ msgstr "Клавиша выбора седьмого слота для хотбара." - -#~ msgid "Key for selecting the sixth hotbar slot." -#~ msgstr "Клавиша выбора шестого слота для хотбара." - -#~ msgid "Key for selecting the tenth hotbar slot." -#~ msgstr "Клавиша выбора десятого слота для хотбара." - -#~ msgid "Key for selecting the third hotbar slot." -#~ msgstr "Клавиша выбора третьего слота для хотбара." - -#~ msgid "Key for switching between first- and third-person camera." -#~ msgstr "" -#~ "Клавиша для переключения между камерой от первого и от третьего лица." - -#~ msgid "Key for taking screenshots." -#~ msgstr "Клавиша для создания снимков экрана." - -#~ msgid "Key for toggling autoforward." -#~ msgstr "Клавиша для включения автобега." - -#~ msgid "Key for toggling cinematic mode." -#~ msgstr "Клавиша включения кинематографичного режима." - -#~ msgid "Key for toggling display of minimap." -#~ msgstr "Клавиша включения отображения миникарты." - -#~ msgid "Key for toggling fast mode." -#~ msgstr "Клавиша для включения режима быстрого перемещения." - -#~ msgid "Key for toggling flying." -#~ msgstr "Клавиша для включения полета." - -#~ msgid "Key for toggling fullscreen mode." -#~ msgstr "Клавиша для включения полноэкранного режима." - -#~ msgid "Key for toggling noclip mode." -#~ msgstr "Клавиша включения режима прохождения сквозь стены." - -#~ msgid "Key for toggling pitch move mode." -#~ msgstr "Клавиша включения режима движения по направлению взгляда." - -#~ msgid "Key for toggling the display of chat." -#~ msgstr "Клавиша включения отображения чата." - -#~ msgid "Key for toggling the display of debug info." -#~ msgstr "Клавиша включения отображения отладочных сведений." - -#~ msgid "Key for toggling the display of fog." -#~ msgstr "Клавиша включения отображения тумана." - -#~ msgid "Key for toggling the display of the HUD." -#~ msgstr "Клавиша включения отображения игрового интерфейса." - -#~ msgid "Key for toggling the display of the large chat console." -#~ msgstr "Клавиша включения большой чат-консоли." - -#~ msgid "Key to use view zoom when possible." -#~ msgstr "Клавиша для использования зума, когда возможно." - -#~ msgid "Node specular" -#~ msgstr "Зеркальный блок" +#~ msgid "X Button 2" +#~ msgstr "Доп. кнопка 2" diff --git a/po/sk/luanti.po b/po/sk/luanti.po index 5257914a8..673b96eea 100644 --- a/po/sk/luanti.po +++ b/po/sk/luanti.po @@ -2,9 +2,9 @@ msgid "" msgstr "" "Project-Id-Version: minetest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-07-11 19:59+0200\n" -"PO-Revision-Date: 2025-01-03 17:19+0000\n" -"Last-Translator: Lukáš Lizák \n" +"POT-Creation-Date: 2025-09-23 19:19+0200\n" +"PO-Revision-Date: 2025-09-15 10:02+0000\n" +"Last-Translator: Pexauteau Santander \n" "Language-Team: Slovak \n" "Language: sk\n" @@ -12,7 +12,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=((n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2);\n" -"X-Generator: Weblate 5.10-dev\n" +"X-Generator: Weblate 5.14-dev\n" #: builtin/client/chatcommands.lua msgid "Clear the out chat queue" @@ -83,16 +83,15 @@ msgstr "Prehliadaj" #: builtin/common/settings/components.lua msgid "Conflicts with \"$1\"" -msgstr "" +msgstr "Konflikt s \"$1\"" #: builtin/common/settings/components.lua msgid "Edit" msgstr "Upraviť" #: builtin/common/settings/components.lua -#, fuzzy msgid "Remove keybinding" -msgstr "Priradenie kláves." +msgstr "Odobrať klávesu." #: builtin/common/settings/components.lua msgid "Select directory" @@ -193,19 +192,16 @@ msgid "eased" msgstr "zjemnené (eased)" #: builtin/common/settings/dlg_settings.lua -#, fuzzy msgid "(The game will need to enable automatic exposure as well)" -msgstr "(V hre bude potrebné povoliť aj tiene)" +msgstr "(Táto hra bude potrebovať aj povolenie pre automatické odhalenie)" #: builtin/common/settings/dlg_settings.lua -#, fuzzy msgid "(The game will need to enable bloom as well)" -msgstr "(V hre bude potrebné povoliť aj tiene)" +msgstr "(Táto hra bude tiež vyžadovať povolenie pre kvitnutie)" #: builtin/common/settings/dlg_settings.lua -#, fuzzy msgid "(The game will need to enable volumetric lighting as well)" -msgstr "(V hre bude potrebné povoliť aj tiene)" +msgstr "(Táto hra bude vyžadovať aj povolenie volumetrického blesku)" #: builtin/common/settings/dlg_settings.lua msgid "(Use system language)" @@ -227,7 +223,7 @@ msgstr "Späť" #: builtin/common/settings/dlg_settings.lua msgid "Buttons with crosshair" -msgstr "" +msgstr "Tlačítka so zameriavaním" #: builtin/common/settings/dlg_settings.lua src/gui/touchscreenlayout.cpp #: src/settings_translation_file.cpp @@ -257,7 +253,7 @@ msgstr "Všeobecné" #: builtin/common/settings/dlg_settings.lua msgid "Long tap" -msgstr "" +msgstr "Dlhé podržanie" #: builtin/common/settings/dlg_settings.lua msgid "Movement" @@ -282,7 +278,7 @@ msgstr "Hľadaj" #: builtin/common/settings/dlg_settings.lua msgid "Short tap" -msgstr "" +msgstr "Krátke podržanie" #: builtin/common/settings/dlg_settings.lua msgid "Show advanced settings" @@ -293,18 +289,16 @@ msgid "Show technical names" msgstr "Zobraz technické názvy" #: builtin/common/settings/dlg_settings.lua -#, fuzzy msgid "Tap" -msgstr "Tab" +msgstr "Ťuk" #: builtin/common/settings/dlg_settings.lua msgid "Tap with crosshair" -msgstr "" +msgstr "Ťuknutie so zameriavaním" #: builtin/common/settings/dlg_settings.lua -#, fuzzy msgid "Touchscreen layout" -msgstr "Dotyková obrazovka" +msgstr "Rozloženie dotykovej obrazovky" #: builtin/common/settings/settingtypes.lua msgid "Client Mods" @@ -436,9 +430,8 @@ msgid "All" msgstr "Všetky" #: builtin/mainmenu/content/dlg_contentdb.lua -#, fuzzy msgid "ContentDB is not available when Luanti was compiled without cURL" -msgstr "ContentDB nie je k dispozícií ak bol Minetest skompilovaný bez cURL" +msgstr "ContentDB nie je k dispozícií ak bol Luanti skompilovaný bez cURL" #: builtin/mainmenu/content/dlg_contentdb.lua msgid "Downloading..." @@ -476,7 +469,6 @@ msgid "Queued" msgstr "Čaká v rade" #: builtin/mainmenu/content/dlg_contentdb.lua -#, fuzzy msgid "Texture Packs" msgstr "Balíky textúr" @@ -518,9 +510,8 @@ msgid "Dependencies:" msgstr "Nevyhnutné doplnky:" #: builtin/mainmenu/content/dlg_install.lua -#, fuzzy msgid "Error getting dependencies for package $1" -msgstr "Chyba pri zisťovaní závislostí pre balíček" +msgstr "Chyba pri zisťovaní závislostí pre balíček $1" #: builtin/mainmenu/content/dlg_install.lua #: builtin/mainmenu/content/dlg_package.lua @@ -556,14 +547,12 @@ msgid "Overwrite" msgstr "Prepísať" #: builtin/mainmenu/content/dlg_package.lua -#, fuzzy msgid "ContentDB page" -msgstr "Cesta (URL) ku ContentDB" +msgstr "Stránka ContentDB" #: builtin/mainmenu/content/dlg_package.lua -#, fuzzy msgid "Description" -msgstr "Popis servera" +msgstr "Popis" #: builtin/mainmenu/content/dlg_package.lua msgid "Donate" @@ -571,26 +560,23 @@ msgstr "Prispieť" #: builtin/mainmenu/content/dlg_package.lua msgid "Error loading package information" -msgstr "" +msgstr "Chyba pri načítaní informácií o balíku" #: builtin/mainmenu/content/dlg_package.lua -#, fuzzy msgid "Error loading reviews" -msgstr "Chyba pri vytváraní klienta: %s" +msgstr "Chyba pri načítaní komentárov" #: builtin/mainmenu/content/dlg_package.lua msgid "Forum Topic" msgstr "Téma Fóra" #: builtin/mainmenu/content/dlg_package.lua -#, fuzzy msgid "Information" -msgstr "Informácie:" +msgstr "Informácie" #: builtin/mainmenu/content/dlg_package.lua -#, fuzzy msgid "Install [$1]" -msgstr "Nainštalovať $1" +msgstr "Nainštalovať [$1]" #: builtin/mainmenu/content/dlg_package.lua msgid "Issue Tracker" @@ -598,7 +584,7 @@ msgstr "Sledovač Problémov" #: builtin/mainmenu/content/dlg_package.lua msgid "Reviews" -msgstr "" +msgstr "Recenzie" #: builtin/mainmenu/content/dlg_package.lua msgid "Source" @@ -617,18 +603,16 @@ msgid "Update" msgstr "Aktualizácia" #: builtin/mainmenu/content/dlg_package.lua -#, fuzzy msgid "Website" -msgstr "Navštív webovú stránku" +msgstr "Webstránka" #: builtin/mainmenu/content/dlg_package.lua -#, fuzzy msgid "by $1" -msgstr "$1 od $2" +msgstr "od $1" #: builtin/mainmenu/content/dlg_package.lua msgid "by $1 — $2 downloads — +$3 / $4 / -$5" -msgstr "" +msgstr "od $1 — $2 počet stiahnutí — +$3 / $4 / -$5" #: builtin/mainmenu/content/pkgmgr.lua msgid "$1 (Enabled)" @@ -663,6 +647,8 @@ msgid "" "Players connected to\n" "$1" msgstr "" +"Počet hráčov prihlásených k\n" +"$1" #: builtin/mainmenu/dlg_config_world.lua msgid "(Enabled, has error)" @@ -953,29 +939,27 @@ msgstr "Zmazať svet \"$1\"?" #: builtin/mainmenu/dlg_rebind_keys.lua msgid "As a result, your keybindings may have been changed." -msgstr "" +msgstr "Tvoje nastavenia klávesov môžu byť zmenené." #: builtin/mainmenu/dlg_rebind_keys.lua msgid "Check out the key settings or refer to the documentation:" -msgstr "" +msgstr "Skontroluj nastavenia klávesnice, alebo sa pozri do dokumentácie:" #: builtin/mainmenu/dlg_rebind_keys.lua msgid "Close" -msgstr "" +msgstr "Zatvoriť" #: builtin/mainmenu/dlg_rebind_keys.lua -#, fuzzy msgid "Keybindings changed" -msgstr "Priradenie kláves." +msgstr "Nastavenia klávesnice boli zmenené" #: builtin/mainmenu/dlg_rebind_keys.lua -#, fuzzy msgid "Open settings" -msgstr "Nastavenia" +msgstr "Otvor nastavenia" #: builtin/mainmenu/dlg_rebind_keys.lua msgid "The input handling system was reworked in Luanti 5.12.0." -msgstr "" +msgstr "Spôsob spracovania vstupov bol prepracovaný v Luanti verzii 5.12.0." #: builtin/mainmenu/dlg_register.lua src/gui/guiPasswordChange.cpp msgid "Confirm Password" @@ -1012,14 +996,12 @@ msgid "Dismiss" msgstr "Odmietnuť" #: builtin/mainmenu/dlg_reinstall_mtg.lua -#, fuzzy msgid "" "For a long time, Luanti shipped with a default game called \"Minetest " "Game\". Since version 5.8.0, Luanti ships without a default game." msgstr "" -"Po dlhú dobu sa engine Minetest dodával s predinštalovanou hrou s názvom " -"\"Minetest Game\". Od verzie 5.8.0 sa Minetest dodáva bez predinštalovanej " -"hry." +"Dlhodobo bol Luanti dodávaný so základnou hrou s názvom \"Minetest Game\". " +"Od verzie 5.8.0 sa Luanti dodáva bez základnej hry." #: builtin/mainmenu/dlg_reinstall_mtg.lua msgid "" @@ -1054,21 +1036,20 @@ msgstr "" "ktoré prepíše akékoľvek tunajšie premenovanie." #: builtin/mainmenu/dlg_server_list_mods.lua -#, fuzzy msgid "Expand all" -msgstr "Povoliť všetko" +msgstr "Rozbaliť všetko" #: builtin/mainmenu/dlg_server_list_mods.lua msgid "Group by prefix" -msgstr "" +msgstr "Zoskupiť podľa prefixu" #: builtin/mainmenu/dlg_server_list_mods.lua msgid "The $1 server uses a game called $2 and the following mods:" -msgstr "" +msgstr "Server $1 používa hru s názvom $2 a nasledujúce úpravy:" #: builtin/mainmenu/dlg_server_list_mods.lua msgid "The $1 server uses the following mods:" -msgstr "" +msgstr "Server $1 používa nasledujúce úpravy:" #: builtin/mainmenu/dlg_version_info.lua msgid "A new $1 version is available" @@ -1233,27 +1214,21 @@ msgid "Install games from ContentDB" msgstr "Inštaluj hry z ContentDB" #: builtin/mainmenu/tab_local.lua -#, fuzzy msgid "Luanti doesn't come with a game by default." -msgstr "Hra Minetest už nie je štandardne dodávaná." +msgstr "Luanti sa už nedodáva so základnou hrou." #: builtin/mainmenu/tab_local.lua -#, fuzzy msgid "" "Luanti is a game-creation platform that allows you to play many different " "games." msgstr "" -"Minetest je platforma pre vytváranie hier, čo ti umožňuje hrať mnoho " +"Luanti je platforma pre vytváranie hier, ktorá ti umožňuje hrať mnoho " "rozličných hier." #: builtin/mainmenu/tab_local.lua msgid "New" msgstr "Nový" -#: builtin/mainmenu/tab_local.lua -msgid "No world created or selected!" -msgstr "Nie je vytvorený ani zvolený svet!" - #: builtin/mainmenu/tab_local.lua msgid "Play Game" msgstr "Hraj hru" @@ -1283,9 +1258,8 @@ msgid "You need to install a game before you can create a world." msgstr "Pred vytvorením sveta musíš nainštalovať hru." #: builtin/mainmenu/tab_online.lua -#, fuzzy msgid "Add favorite" -msgstr "Odstráň z obľúbených" +msgstr "Pridať k obľúbeným" #: builtin/mainmenu/tab_online.lua msgid "Address" @@ -1305,9 +1279,8 @@ msgid "Favorites" msgstr "Obľúbené" #: builtin/mainmenu/tab_online.lua -#, fuzzy msgid "Game: $1" -msgstr "Hra" +msgstr "Hra: $1" #: builtin/mainmenu/tab_online.lua msgid "Incompatible Servers" @@ -1322,25 +1295,24 @@ msgid "Login" msgstr "Prihlásenie" #: builtin/mainmenu/tab_online.lua -#, fuzzy msgid "Number of mods: $1" -msgstr "Počet použitých vlákien" +msgstr "Počet úprav: $1" #: builtin/mainmenu/tab_online.lua -#, fuzzy msgid "Open server website" -msgstr "Určený krok servera" +msgstr "Otvoriť webstránku servera" #: builtin/mainmenu/tab_online.lua msgid "Ping" msgstr "Ping" #: builtin/mainmenu/tab_online.lua -#, fuzzy msgid "" "Players:\n" "$1" -msgstr "Klient" +msgstr "" +"Počet hráčov:\n" +"$1" #: builtin/mainmenu/tab_online.lua msgid "" @@ -1349,6 +1321,10 @@ msgid "" "mod:\n" "player:" msgstr "" +"Filtre k dispozícii\n" +"hra:\n" +"úpravy:\n" +"hráč:" #: builtin/mainmenu/tab_online.lua msgid "Public Servers" @@ -1381,7 +1357,7 @@ msgstr "Hotovo!" #: src/client/client.cpp #, c-format msgid "Failed to save screenshot to \"%s\"" -msgstr "" +msgstr "Ukladanie snímku obrazovky do \"%s\" zlyhalo" #: src/client/client.cpp msgid "Initializing nodes" @@ -1400,9 +1376,9 @@ msgid "Rebuilding shaders..." msgstr "Obnovujem shadery..." #: src/client/client.cpp -#, fuzzy, c-format +#, c-format msgid "Saved screenshot to \"%s\"" -msgstr "Fotky obrazovky" +msgstr "Snímka obrazovky bola uložená do \"%s\"" #: src/client/clientlauncher.cpp msgid "Could not find or load game: " @@ -1454,9 +1430,8 @@ msgid "Access denied. Reason: %s" msgstr "Prístup zamietnutý. Dôvod: %s" #: src/client/game.cpp -#, fuzzy msgid "All debug info hidden" -msgstr "Ladiace informácie zobrazené" +msgstr "Všetky ladiace informácie sú skryté" #: src/client/game.cpp msgid "Automatic forward disabled" @@ -1480,7 +1455,7 @@ msgstr "Hranice bloku sú zobrazené pre blízke bloky" #: src/client/game.cpp msgid "Bounding boxes shown" -msgstr "" +msgstr "Zobrazovanie hraničných rámcov" #: src/client/game.cpp msgid "Camera update disabled" @@ -1577,9 +1552,8 @@ msgid "Fog enabled" msgstr "Hmla je aktivovaná" #: src/client/game.cpp -#, fuzzy msgid "Fog enabled by game or mod" -msgstr "Zväčšenie je zakázané hrou, alebo rozšírením" +msgstr "Hmla povolená hrou alebo úpravou" #: src/client/game.cpp msgid "Item definitions..." @@ -1723,9 +1697,8 @@ msgid "Volume changed to %d%%" msgstr "Hlasitosť zmenená na %d%%" #: src/client/game.cpp -#, fuzzy msgid "Wireframe not supported by video driver" -msgstr "Tieňovanie (Shaders) je zapnuté ale GLSL nie je podporené drajverom." +msgstr "Wireframe rám nie je podporovaný video driverom" #: src/client/game.cpp msgid "Wireframe shown" @@ -1761,7 +1734,6 @@ msgid "Continue" msgstr "Pokračuj" #: src/client/game_formspec.cpp -#, fuzzy msgid "" "Controls:\n" "No menu open:\n" @@ -1776,18 +1748,18 @@ msgid "" "- touch&drag, tap 2nd finger\n" " --> place single item to slot\n" msgstr "" -"Štandardné ovládanie:\n" -"Menu nie je zobrazené:\n" -"- jeden klik: tlačidlo aktivuj\n" -"- dvojklik: polož/použi\n" -"- posun prstom: pozeraj sa dookola\n" -"Menu/Inventár je zobrazené/ý:\n" -"- dvojklik (mimo):\n" -" -->zatvor\n" -"- klik na kôpku, klik na miesto:\n" -" --> presuň kôpku \n" -"- chyť a prenes, klik druhým prstom\n" -" --> polož jednu vec na miesto\n" +"Ovládanie:\n" +"Ponuka nie je otvorená:\n" +"- potiahnutie prstom: rozhliadneš sa po okolí\n" +"- ťuk: položiť/udrieť/použiť (základné nastavenie)\n" +"- dlhšie podržanie: ťažba/použiť (základné nastavenie)\n" +"Ponuka/inventár:\n" +"- dvojité poťukanie (výber):\n" +" --> zatvorenie\n" +"- dotyk zásob, dotyk obsahu:\n" +" --> presun obsahu\n" +"- podrž a potiahni, dotyk dvoma prstami\n" +" --> položiť jednu vec do obsahu\n" #: src/client/game_formspec.cpp msgid "Exit to Menu" @@ -1862,10 +1834,6 @@ msgstr "Profilovanie je skryté" msgid "Profiler shown (page %d of %d)" msgstr "Profilovanie je zobrazené (strana %d z %d)" -#: src/client/keycode.cpp -msgid "Apps" -msgstr "Aplikácie" - #: src/client/keycode.cpp msgid "Backspace" msgstr "Backspace" @@ -1896,44 +1864,19 @@ msgid "Down Arrow" msgstr "Šípka dole" #: src/client/keycode.cpp -msgid "End" -msgstr "End" +#, fuzzy +msgid "End Key" +msgstr "Klávesa Menu" #: src/client/keycode.cpp -msgid "Erase EOF" -msgstr "Zmaž EOF" +#, fuzzy +msgid "Help Key" +msgstr "Klávesa Del" #: src/client/keycode.cpp -msgid "Execute" -msgstr "Spustiť" - -#: src/client/keycode.cpp -msgid "Help" -msgstr "Pomoc" - -#: src/client/keycode.cpp -msgid "Home" -msgstr "Home" - -#: src/client/keycode.cpp -msgid "IME Accept" -msgstr "IME Súhlas" - -#: src/client/keycode.cpp -msgid "IME Convert" -msgstr "IME Konvertuj" - -#: src/client/keycode.cpp -msgid "IME Escape" -msgstr "IME Escape" - -#: src/client/keycode.cpp -msgid "IME Mode Change" -msgstr "IME Zmena módu" - -#: src/client/keycode.cpp -msgid "IME Nonconvert" -msgstr "IME Nekonvertuj" +#, fuzzy +msgid "Home Key" +msgstr "Klávesa Zoom" #: src/client/keycode.cpp msgid "Insert" @@ -1944,8 +1887,9 @@ msgid "Left Arrow" msgstr "Ľavá šípka" #: src/client/keycode.cpp -msgid "Left Button" -msgstr "Ľavé tlačítko" +#, fuzzy +msgid "Left Click" +msgstr "Ľavý CRTL" #: src/client/keycode.cpp msgid "Left Control" @@ -1959,18 +1903,26 @@ msgstr "Ľavé Menu" msgid "Left Shift" msgstr "Ľavý Shift" +#. ~ Name of key #: src/client/keycode.cpp msgid "Left Windows" msgstr "Ľavá klávesa Windows" -#. ~ Key name, common on Windows keyboards #: src/client/keycode.cpp msgid "Menu Key" msgstr "Klávesa Menu" #: src/client/keycode.cpp -msgid "Middle Button" -msgstr "Stredné tlačítko" +msgid "Middle Click" +msgstr "" + +#: src/client/keycode.cpp +msgid "Mouse X1" +msgstr "" + +#: src/client/keycode.cpp +msgid "Mouse X2" +msgstr "" #: src/client/keycode.cpp msgid "Num Lock" @@ -2036,10 +1988,6 @@ msgstr "Numerická klávesnica 8" msgid "Numpad 9" msgstr "Numerická klávesnica 9" -#: src/client/keycode.cpp -msgid "OEM Clear" -msgstr "OEM Clear" - #: src/client/keycode.cpp msgid "Page Down" msgstr "Page down" @@ -2071,8 +2019,9 @@ msgid "Right Arrow" msgstr "Pravá šípka" #: src/client/keycode.cpp -msgid "Right Button" -msgstr "Pravé tlačítko" +#, fuzzy +msgid "Right Click" +msgstr "Pravý CRTL" #: src/client/keycode.cpp msgid "Right Control" @@ -2086,6 +2035,7 @@ msgstr "Pravé Menu" msgid "Right Shift" msgstr "Pravý Shift" +#. ~ Name of key #: src/client/keycode.cpp msgid "Right Windows" msgstr "Pravá klávesa Windows" @@ -2094,47 +2044,28 @@ msgstr "Pravá klávesa Windows" msgid "Scroll Lock" msgstr "Scroll Lock" -#. ~ Key name #: src/client/keycode.cpp -msgid "Select" -msgstr "Vybrať" +#, fuzzy +msgid "Select Key" +msgstr "Klávesa Del" #: src/client/keycode.cpp msgid "Shift Key" msgstr "Klávesa Shift" -#: src/client/keycode.cpp -msgid "Sleep" -msgstr "Spánok" - -#: src/client/keycode.cpp -msgid "Snapshot" -msgstr "Snímka" - #: src/client/keycode.cpp msgid "Space" msgstr "Medzera" #: src/client/keycode.cpp -msgid "Tab" -msgstr "Tab" +#, fuzzy +msgid "Tab Key" +msgstr "Klávesa Break" #: src/client/keycode.cpp msgid "Up Arrow" msgstr "Šípka hore" -#: src/client/keycode.cpp -msgid "X Button 1" -msgstr "X tlačidlo 1" - -#: src/client/keycode.cpp -msgid "X Button 2" -msgstr "X tlačidlo 2" - -#: src/client/keycode.cpp -msgid "Zoom Key" -msgstr "Klávesa Zoom" - #: src/client/minimap.cpp msgid "Minimap hidden" msgstr "Minimapa je skrytá" @@ -2159,9 +2090,8 @@ msgid "Failed to compile the \"%s\" shader." msgstr "Nepodarilo sa vytvoriť \"%s\" tieňovač." #: src/client/shader.cpp -#, fuzzy msgid "GLSL is not supported by the driver" -msgstr "Tieňovanie (Shaders) je zapnuté ale GLSL nie je podporené drajverom." +msgstr "GLSL nie je podporené driverom" #. ~ Error when a mod is missing dependencies. Ex: "Mod Title is missing: mod1, mod2, mod3" #: src/content/mod_configuration.cpp @@ -2189,9 +2119,8 @@ msgid "Some mods have unsatisfied dependencies:" msgstr "Niektoré rozšírenia majú nevybavené závislosti:" #: src/gui/guiButtonKey.h -#, fuzzy msgid "Press Button" -msgstr "Ľavé tlačítko" +msgstr "Stlač tlačidlo" #: src/gui/guiChatConsole.cpp msgid "Failed to open webpage" @@ -2214,9 +2143,8 @@ msgid "Open URL?" msgstr "Otvorené URL?" #: src/gui/guiOpenURL.cpp -#, fuzzy msgid "Unable to open URL" -msgstr "Nepodarilo sa otvoriť web stránku" +msgstr "Nepodarilo sa otvoriť webstránku" #: src/gui/guiPasswordChange.cpp msgid "Change" @@ -2244,35 +2172,32 @@ msgid "Sound Volume: %d%%" msgstr "Hlasitosť: %d%%" #: src/gui/touchscreeneditor.cpp -#, fuzzy msgid "Add button" -msgstr "Stredné tlačítko" +msgstr "Pridať tlačítko" #: src/gui/touchscreeneditor.cpp -#, fuzzy msgid "Done" -msgstr "Hotovo!" +msgstr "Hotovo" #: src/gui/touchscreeneditor.cpp -#, fuzzy msgid "Remove" -msgstr "Vzdialený server" +msgstr "Odstrániť" #: src/gui/touchscreeneditor.cpp msgid "Reset" -msgstr "" +msgstr "Zresetovať" #: src/gui/touchscreeneditor.cpp msgid "Start dragging a button to add. Tap outside to cancel." -msgstr "" +msgstr "Pridať potiahnutím tlačítka. Ťukni nabok ak to chceš zrušiť." #: src/gui/touchscreeneditor.cpp msgid "Tap a button to select it. Drag a button to move it." -msgstr "" +msgstr "Ťukni na tlačítko pre výber. Potiahni tlačítko pre jeho premiestnenie." #: src/gui/touchscreeneditor.cpp msgid "Tap outside to deselect." -msgstr "" +msgstr "Ťukni nabok pre zrušenie výberu." #: src/gui/touchscreenlayout.cpp src/settings_translation_file.cpp msgid "Aux1" @@ -2284,7 +2209,7 @@ msgstr "Zmeň pohľad" #: src/gui/touchscreenlayout.cpp src/settings_translation_file.cpp msgid "Dig/punch/use" -msgstr "" +msgstr "Ťažiť/udrieť/použiť" #: src/gui/touchscreenlayout.cpp msgid "Drop" @@ -2299,9 +2224,8 @@ msgid "Inventory" msgstr "Inventár" #: src/gui/touchscreenlayout.cpp -#, fuzzy msgid "Joystick" -msgstr "ID joysticku" +msgstr "Joystik" #: src/gui/touchscreenlayout.cpp src/settings_translation_file.cpp msgid "Jump" @@ -2309,12 +2233,11 @@ msgstr "Skok" #: src/gui/touchscreenlayout.cpp msgid "Overflow menu" -msgstr "" +msgstr "Predvoľby pre overflow" #: src/gui/touchscreenlayout.cpp src/settings_translation_file.cpp -#, fuzzy msgid "Place/use" -msgstr "Tlačidlo na pokladanie" +msgstr "Položiť/použiť" #: src/gui/touchscreenlayout.cpp msgid "Range select" @@ -2329,9 +2252,8 @@ msgid "Toggle chat log" msgstr "Prepni logovanie komunikácie" #: src/gui/touchscreenlayout.cpp -#, fuzzy msgid "Toggle debug" -msgstr "Prepni hmlu" +msgstr "Prepni ladenie" #: src/gui/touchscreenlayout.cpp src/settings_translation_file.cpp msgid "Toggle fast" @@ -2358,19 +2280,22 @@ msgid "" "Another client is connected with this name. If your client closed " "unexpectedly, try again in a minute." msgstr "" +"K tejto hre je pripojený iný klient s týmto menom. Ak bol tvoj klient " +"nečakane zamietnutý, skús sa pripojiť znova o pár minút neskôr." #: src/network/clientpackethandler.cpp msgid "Empty passwords are disallowed. Set a password and try again." msgstr "" +"Políčko s heslom nesmie byť prázdne. Nastav si heslo a skús sa pripojiť " +"znova." #: src/network/clientpackethandler.cpp msgid "Internal server error" -msgstr "" +msgstr "Chyba na strane servera" #: src/network/clientpackethandler.cpp -#, fuzzy msgid "Invalid password" -msgstr "Staré heslo" +msgstr "Nesprávne heslo" #. ~ DO NOT TRANSLATE THIS LITERALLY! #. This is a special string which needs to contain the translation's @@ -2393,46 +2318,48 @@ msgstr "Meno už je použité. Prosím zvoľ si iné meno" #: src/network/clientpackethandler.cpp msgid "Player name contains disallowed characters" -msgstr "" +msgstr "Meno hráča obsahuje nepovolené znaky" #: src/network/clientpackethandler.cpp -#, fuzzy msgid "Player name not allowed" -msgstr "Meno hráča je príliš dlhé." +msgstr "Meno hráča nie je povolené" #: src/network/clientpackethandler.cpp -#, fuzzy msgid "Server shutting down" -msgstr "Vypínam..." +msgstr "Server sa vypína" #: src/network/clientpackethandler.cpp msgid "" "The server has experienced an internal error. You will now be disconnected." -msgstr "" +msgstr "Na serveri sa vyskytla vnútorná chyba. Budeš odpojený." #: src/network/clientpackethandler.cpp msgid "The server is running in singleplayer mode. You cannot connect." -msgstr "" +msgstr "Tento server je spustený pre jedného hráča. Nemôžeš sa pripojiť." #: src/network/clientpackethandler.cpp msgid "Too many users" -msgstr "" +msgstr "Priveľa užívateľov" #: src/network/clientpackethandler.cpp msgid "Unknown disconnect reason." -msgstr "" +msgstr "Dôvod odpojenia neznámy." #: src/network/clientpackethandler.cpp msgid "" "Your client sent something the server didn't expect. Try reconnecting or " "updating your client." msgstr "" +"Tvoj klient odoslal na server niečo neočakávané. Skús sa pripojiť znovu " +"alebo nainštaluj novšiu verziu klienta." #: src/network/clientpackethandler.cpp msgid "" "Your client's version is not supported.\n" "Please contact the server administrator." msgstr "" +"Verzia tvojho klienta nie je podporovaná.\n" +"Prosím, spoj sa so správcom servera." #: src/server.cpp #, c-format @@ -2567,23 +2494,21 @@ msgstr "3D šum definujúci počet kobiek na časť mapy (mapchunk)." msgid "" "3D support.\n" "Currently supported:\n" -"- none: no 3d output.\n" -"- anaglyph: cyan/magenta color 3d.\n" -"- interlaced: odd/even line based polarization screen support.\n" -"- topbottom: split screen top/bottom.\n" -"- sidebyside: split screen side by side.\n" -"- crossview: Cross-eyed 3d" +"- none: no 3D output\n" +"- anaglyph: cyan/magenta color 3D\n" +"- topbottom: split screen top/bottom\n" +"- sidebyside: split screen side-by-side\n" +"- crossview: cross-eyed 3D" msgstr "" -"Podpora 3D.\n" -"Aktuálne sú podporované:\n" -"- none: bez 3D režimu.\n" -"- anaglyph: tyrkysovo/purpurová farba 3D.\n" -"- interlaced: podpora polarizácie založenej na párnych/nepárnych riadkoch " -"obrazu.\n" -"- topbottom: rozdelená obrazovka hore/dole.\n" -"- sidebyside: rozdelená obrazovka vedľa seba.\n" -"- crossview: 3D prekrížených očí (Cross-eyed)\n" -"Režim interlaced požaduje, aby boli aktivované shadery." +"Podporuje 3D.\n" +"Práve podporované:\n" +"- žiadne: bez 3d výstupov.\n" +"- anaglyf: 3d farby azúrová/purpurová.\n" +"- prekrývanie: nepárna/párna linka na základe podporovanej polarizácie " +"obrazovky.\n" +"- zhora-nadol: rozdelenie obrazovky zhora-nadol.\n" +"- vedľa seba: rozdelenie obrazovky vedľa seba.\n" +"- priečny pohľad: 3d priečny pohľad" #: src/settings_translation_file.cpp msgid "" @@ -2672,6 +2597,9 @@ msgid "" "All mesh buffers with less than this number of vertices will be merged\n" "during map rendering. This improves rendering performance." msgstr "" +"Všetky posilnenia zmiešavania s hodnotou menšou, než je vrcholová hodnota, " +"budú spojené\n" +"pri ladení mapy. Zlepšuje to výkon ladenia." #: src/settings_translation_file.cpp #, fuzzy @@ -2680,7 +2608,7 @@ msgstr "Použi 3D mraky namiesto plochých." #: src/settings_translation_file.cpp msgid "Allows liquids to be translucent." -msgstr "" +msgstr "Povoľuje priehľadné kvapaliny." #: src/settings_translation_file.cpp #, fuzzy @@ -2691,8 +2619,8 @@ msgstr "" "Tlačidlo pre utajený pohyb (zakrádanie) hráča.\n" "Tiež sa používa pre zliezanie a ponáranie vo vode ak aux1_descends je " "vypnutý.\n" -"Viď. http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" +"Viď. http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2742,11 +2670,11 @@ msgstr "Metóda vyhladzovania" #: src/settings_translation_file.cpp msgid "Anticheat flags" -msgstr "" +msgstr "Výstrahy proti cheatom" #: src/settings_translation_file.cpp msgid "Anticheat movement tolerance" -msgstr "" +msgstr "Proticheatová tolerancia pohybu" #: src/settings_translation_file.cpp msgid "Append item name" @@ -2770,6 +2698,14 @@ msgid "" "With OpenGL ES, dithering only works if the shader supports high\n" "floating-point precision and it may have a higher performance impact." msgstr "" +"Použi rozkladacie pre redukciu artefaktov s farebným pruhovaním.\n" +"Rozkladacie výrazne zvyšuje veľkosť bezstratovo kompresovaných\n" +"snímok obrazovky a nefunguje správne, ak display alebo operačný systém\n" +"vykonáva dodatočné rozkladacie, alebo ak kanály farieb nie sú uložené\n" +"po 8 hitoch.\n" +"Rozkladanie, spolu s OpenGL ES, funguje iba ak shader podporuje vysoko " +"presné\n" +"Desetinné čísla, a môže mať vyšší dopad na výkon." #: src/settings_translation_file.cpp msgid "Arm inertia" @@ -2827,7 +2763,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Audio" -msgstr "Zvuk" +msgstr "Zvuky" #: src/settings_translation_file.cpp msgid "Automatic jumping" @@ -2943,6 +2879,17 @@ msgstr "Plynulý pohyb kamery" msgid "Camera smoothing in cinematic mode" msgstr "Plynulý pohyb kamery vo filmovom režime" +#: src/settings_translation_file.cpp +msgid "Capture Tracy zones" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Capture Tracy zones with the profiler's instrumentation.\n" +"You need to build with Tracy to use this, see doc/developing/profiling.md\n" +"for details." +msgstr "" + #: src/settings_translation_file.cpp msgid "Cave noise" msgstr "Šum jaskyne" @@ -3094,7 +3041,7 @@ msgstr "Mraky v menu" #: src/settings_translation_file.cpp msgid "Color depth for post-processing texture" -msgstr "" +msgstr "Farená hĺbka pre textúry post-processingu" #: src/settings_translation_file.cpp msgid "Colored fog" @@ -3109,6 +3056,9 @@ msgid "" "Comma-separated list of AL and ALC extensions that should not be used.\n" "Useful for testing. See al_extensions.[h,cpp] for details." msgstr "" +"Čiarkou oddelený zoznam AL a ACL rozšírení, ktoré by sa nemali používať.\n" +"Užitočné pre testovanie. Pre viac detailov pozri parameter al_extensions." +"[h,cop]." #: src/settings_translation_file.cpp #, fuzzy @@ -3351,7 +3301,6 @@ msgstr "" "zároveň ale spotrebováva viac zdrojov." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Define the oldest clients allowed to connect.\n" "Older clients are compatible in the sense that they will not crash when " @@ -3363,9 +3312,12 @@ msgid "" "Luanti still enforces its own internal minimum, and enabling\n" "strict_protocol_version_checking will effectively override this." msgstr "" -"Aktivuj zakázanie pripojenia starých klientov.\n" +"Urči najstaršiu možnú verziu klienta pre pripojenie.\n" "Starší klienti sú kompatibilný v tom zmysle, že nepadnú pri pripájaní\n" -"k novým serverom, ale nemusia podporovať nové funkcie, ktoré očakávaš." +"k novým serverom, ale nemusia podporovať nové funkcie, ktoré očakávaš.\n" +"To umožňuje precíznejšiu kontrolu než strict_protocol_version_checking.\n" +"Luanti i tak vynucuje svoju vlastnú internú politiku a pri povolení\n" +"strict_protocol_version_checking toto nastavenie efektívne prepíše." #: src/settings_translation_file.cpp msgid "Defines areas where trees have apples." @@ -3430,14 +3382,14 @@ msgid "Defines tree areas and tree density." msgstr "Definuje oblasti so stromami a hustotu stromov." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Delay between mesh updates on the client in ms. Increasing this will slow\n" "down the rate of mesh updates, which can help reduce jitter." msgstr "" -"Oneskorenie, kým sa Mesh aktualizuje na strane klienta v ms.\n" -"Zvýšenie spomalí množstvo aktualizácie Mesh objektov, teda zníži chvenie na " -"pomalších klientoch." +"Oneskorenie medzi aktualizáciami zmiešavania na strane klienta v " +"milisekúndách.\n" +"Zvýšenie tejto hodnoty spomalí rozsah aktualizácie zmiešavania, čo pomáha " +"redukovať chvenie." #: src/settings_translation_file.cpp msgid "Delay in sending blocks after building" @@ -3483,6 +3435,10 @@ msgstr "" msgid "Developer Options" msgstr "Nastavenia pre vývojárov" +#: src/settings_translation_file.cpp +msgid "Disable if you only want to instrument with Tracy." +msgstr "" + #: src/settings_translation_file.cpp msgid "Disallow empty passwords" msgstr "Zakáž prázdne heslá" @@ -3492,14 +3448,14 @@ msgid "Display Density Scaling Factor" msgstr "Faktor škálovania hustoty zobrazenia" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Distance in nodes at which transparency depth sorting is enabled.\n" "Use this to limit the performance impact of transparency depth sorting.\n" "Set to 0 to disable it entirely." msgstr "" -"Vzdialenosť v kockách do ktorej sa ešte spracúva hĺbka priesvitnosti\n" -"Používa sa obmedzenie dopadu na výkon pri spracovaní hĺbky priesvitnosti" +"Vzdialenosť v kockách do ktorej sa ešte spracúva hĺbka priesvitnosti.\n" +"Použi na obmedzenie dopadu na výkon pri spracovaní hĺbky priesvitnosti.\n" +"Hodnota 0 toto nastavenie zakáže úplne." #: src/settings_translation_file.cpp msgid "Domain name of server, to be displayed in the serverlist." @@ -3522,9 +3478,8 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Drop item" -msgstr "Tlačidlo Zahoď vec" +msgstr "Zahoďte vec" #: src/settings_translation_file.cpp msgid "Dump the mapgen debug information." @@ -3543,9 +3498,8 @@ msgid "Dungeon noise" msgstr "Šum kobky" #: src/settings_translation_file.cpp -#, fuzzy msgid "Effects" -msgstr "Grafické efekty" +msgstr "Efekty" #: src/settings_translation_file.cpp msgid "Enable Automatic Exposure" @@ -3560,9 +3514,8 @@ msgid "Enable Bloom Debug" msgstr "Povoliť ladenie žiary" #: src/settings_translation_file.cpp -#, fuzzy msgid "Enable Debanding" -msgstr "Aktivuj zranenie" +msgstr "Povoliť zranenie" #: src/settings_translation_file.cpp msgid "" @@ -3578,6 +3531,9 @@ msgid "" "Note that clients will be able to connect with both IPv4 and IPv6.\n" "Ignored if bind_address is set." msgstr "" +"Povoliť podporu IPv6 pre server.\n" +"Klienti budú schopní pripojiť sa aj pomocou IPv4 aj IPv6.\n" +"Toto je ignorované ak je nastavený parameter bind_address." #: src/settings_translation_file.cpp msgid "" @@ -3598,9 +3554,8 @@ msgstr "" "opačnom prípade sa použije PCF filtrovanie." #: src/settings_translation_file.cpp -#, fuzzy msgid "Enable Post Processing" -msgstr "Následné spracovanie" +msgstr "Povoliť Post Procesaing" #: src/settings_translation_file.cpp msgid "Enable Raytraced Culling" @@ -3619,13 +3574,12 @@ msgstr "" "simulujúc správanie sa ľudského oka." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Enable colored shadows for transculent nodes.\n" "This is expensive." msgstr "" -"Aktivuje farebné tiene.\n" -"Ak je aktivovaný, tak priesvitné kocky dávajú farebné tiene. Toto je náročné." +"Povoliť farebné tiene pre presvitné kocky.\n" +"Toto nastavenie je náročné." #: src/settings_translation_file.cpp msgid "Enable console window" @@ -3661,11 +3615,8 @@ msgid "Enable random user input (only used for testing)." msgstr "Aktivuje náhodný užívateľský vstup (používa sa len pre testovanie)." #: src/settings_translation_file.cpp -#, fuzzy msgid "Enable smooth lighting with simple ambient occlusion." -msgstr "" -"Aktivuj jemné nasvietenie pomocou jednoduchej \"ambient occlusion\".\n" -"Vypni pre zrýchlenie, alebo iný vzhľad." +msgstr "Povoliť jemné nasvietenie pomocou jednoduchej \"ambient occlusion\"." #: src/settings_translation_file.cpp msgid "Enable split login/register" @@ -3685,7 +3636,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Enable updates available indicator on content tab" -msgstr "" +msgstr "Povoliť indikátor dostupných aktualizácií na záložke obsahu" #: src/settings_translation_file.cpp msgid "" @@ -3725,7 +3676,7 @@ msgstr "Aktivuje animáciu vecí v inventári." #: src/settings_translation_file.cpp msgid "Enables debug and error-checking in the OpenGL driver." -msgstr "" +msgstr "Povoliť ladenie a vyhľadávanie chýb v OpenGL driveri." #: src/settings_translation_file.cpp #, fuzzy @@ -4790,15 +4741,15 @@ msgstr "Júlia w" #: src/settings_translation_file.cpp msgid "Julia x" -msgstr "Julia x" +msgstr "Júlia x" #: src/settings_translation_file.cpp msgid "Julia y" -msgstr "Julia y" +msgstr "Júlia y" #: src/settings_translation_file.cpp msgid "Julia z" -msgstr "Julia z" +msgstr "Júlia z" #: src/settings_translation_file.cpp msgid "Jumping speed" @@ -5452,6 +5403,11 @@ msgstr "" msgid "Maximum users" msgstr "Maximálny počet hráčov" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Measure time samples" +msgstr "Púštne chrámy" + #: src/settings_translation_file.cpp msgid "Message of the day" msgstr "Správa dňa" @@ -5890,9 +5846,8 @@ msgid "Proportion of large caves that contain liquid." msgstr "Pomer častí veľkých jaskýň, ktoré obsahujú tekutinu." #: src/settings_translation_file.cpp -#, fuzzy msgid "Protocol version minimum" -msgstr "Verzie protokolov sa nezhodujú. " +msgstr "Minimálna verzia ptokolu" #: src/settings_translation_file.cpp msgid "Punch gesture" @@ -7595,8 +7550,8 @@ msgid "Will also disable autoforward, when active." msgstr "" "Tlačidlo pre pohyb hráča vzad.\n" "Zároveň vypne automatický pohyb hráča dopredu, ak je aktívny.\n" -"Viď. http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" +"Viď. http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "Window maximized" @@ -7715,14 +7670,68 @@ msgstr "Časový rámec interakcie cURL" msgid "cURL parallel limit" msgstr "Paralelný limit cURL" -#, fuzzy -#~ msgid "Key for taking screenshots." -#~ msgstr "Formát obrázkov snímok obrazovky." +#~ msgid "Apps" +#~ msgstr "Aplikácie" -#, fuzzy -#~ msgid "Key for toggling cinematic mode." -#~ msgstr "Plynulý pohyb kamery vo filmovom režime" +#~ msgid "End" +#~ msgstr "End" -#, fuzzy -#~ msgid "Key for toggling fullscreen mode." -#~ msgstr "Režim celej obrazovky." +#~ msgid "Erase EOF" +#~ msgstr "Zmaž EOF" + +#~ msgid "Execute" +#~ msgstr "Spustiť" + +#~ msgid "Help" +#~ msgstr "Pomoc" + +#~ msgid "Home" +#~ msgstr "Home" + +#~ msgid "IME Accept" +#~ msgstr "IME Súhlas" + +#~ msgid "IME Convert" +#~ msgstr "IME Konvertuj" + +#~ msgid "IME Escape" +#~ msgstr "IME Escape" + +#~ msgid "IME Mode Change" +#~ msgstr "IME Zmena módu" + +#~ msgid "IME Nonconvert" +#~ msgstr "IME Nekonvertuj" + +#~ msgid "Left Button" +#~ msgstr "Ľavé tlačítko" + +#~ msgid "Middle Button" +#~ msgstr "Stredné tlačítko" + +#~ msgid "No world created or selected!" +#~ msgstr "Nie je vytvorený ani zvolený svet!" + +#~ msgid "OEM Clear" +#~ msgstr "OEM Clear" + +#~ msgid "Right Button" +#~ msgstr "Pravé tlačítko" + +#~ msgid "Select" +#~ msgstr "Vybrať" + +#~ msgid "Sleep" +#~ msgstr "Spánok" + +#~ msgid "Snapshot" +#~ msgstr "Snímka" + +#~ msgid "Tab" +#~ msgstr "Tab" + +#~ msgid "X Button 1" +#~ msgstr "X tlačidlo 1" + +#~ msgid "X Button 2" +#~ msgstr "X tlačidlo 2" diff --git a/po/sl/luanti.po b/po/sl/luanti.po index b98f0f54a..3cc3bbf55 100644 --- a/po/sl/luanti.po +++ b/po/sl/luanti.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Slovenian (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-07-11 19:59+0200\n" +"POT-Creation-Date: 2025-09-23 19:19+0200\n" "PO-Revision-Date: 2025-05-30 05:02+0000\n" "Last-Translator: Vesel Sem \n" "Language-Team: Slovenian \n" "Language-Team: Serbian \n" @@ -18,7 +18,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " "n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -"X-Generator: Weblate 5.13-dev\n" +"X-Generator: Weblate 5.13\n" #: builtin/client/chatcommands.lua msgid "Clear the out chat queue" @@ -1236,10 +1236,6 @@ msgstr "" msgid "New" msgstr "Нови" -#: builtin/mainmenu/tab_local.lua -msgid "No world created or selected!" -msgstr "Нема створених или одабраних светова!" - #: builtin/mainmenu/tab_local.lua msgid "Play Game" msgstr "Играј игру" @@ -1387,9 +1383,9 @@ msgid "Rebuilding shaders..." msgstr "Преобликујем сенчење..." #: src/client/client.cpp -#, fuzzy, c-format +#, c-format msgid "Saved screenshot to \"%s\"" -msgstr "Снимци радне површи" +msgstr "Слика радне површи је сачувана у „%s“" #: src/client/clientlauncher.cpp msgid "Could not find or load game: " @@ -1844,10 +1840,6 @@ msgstr "Профилер је скривен" msgid "Profiler shown (page %d of %d)" msgstr "Приказан је профилер (страна %d од %d)" -#: src/client/keycode.cpp -msgid "Apps" -msgstr "Програми" - #: src/client/keycode.cpp msgid "Backspace" msgstr "Пребриши" @@ -1878,44 +1870,19 @@ msgid "Down Arrow" msgstr "Стрелица доле" #: src/client/keycode.cpp -msgid "End" -msgstr "Kraj" +#, fuzzy +msgid "End Key" +msgstr "Дугме изборника" #: src/client/keycode.cpp -msgid "Erase EOF" -msgstr "Избирши ЕОФ" +#, fuzzy +msgid "Help Key" +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 "ИМЕ Непретвори" +#, fuzzy +msgid "Home Key" +msgstr "Дугме приближавања" #: src/client/keycode.cpp msgid "Insert" @@ -1926,8 +1893,9 @@ msgid "Left Arrow" msgstr "Стрелица лево" #: src/client/keycode.cpp -msgid "Left Button" -msgstr "Лево дугме" +#, fuzzy +msgid "Left Click" +msgstr "Леви управљач" #: src/client/keycode.cpp msgid "Left Control" @@ -1941,18 +1909,26 @@ msgstr "Леви изборник" msgid "Left Shift" msgstr "Леви помак" +#. ~ Name of key #: src/client/keycode.cpp msgid "Left Windows" msgstr "Леви прозор" -#. ~ Key name, common on Windows keyboards #: src/client/keycode.cpp msgid "Menu Key" msgstr "Дугме изборника" #: src/client/keycode.cpp -msgid "Middle Button" -msgstr "Средње дугме" +msgid "Middle Click" +msgstr "" + +#: src/client/keycode.cpp +msgid "Mouse X1" +msgstr "" + +#: src/client/keycode.cpp +msgid "Mouse X2" +msgstr "" #: src/client/keycode.cpp msgid "Num Lock" @@ -2018,10 +1994,6 @@ msgstr "Бројчано дугме 8" msgid "Numpad 9" msgstr "Бројчано дугме 9" -#: src/client/keycode.cpp -msgid "OEM Clear" -msgstr "Очисти ЕОФ" - #: src/client/keycode.cpp msgid "Page Down" msgstr "Страница доле" @@ -2053,8 +2025,9 @@ msgid "Right Arrow" msgstr "Стрелица десно" #: src/client/keycode.cpp -msgid "Right Button" -msgstr "Десно дугме" +#, fuzzy +msgid "Right Click" +msgstr "Десни управљач" #: src/client/keycode.cpp msgid "Right Control" @@ -2068,6 +2041,7 @@ msgstr "Десни изборник" msgid "Right Shift" msgstr "Десни помак" +#. ~ Name of key #: src/client/keycode.cpp msgid "Right Windows" msgstr "Десни прозор" @@ -2076,47 +2050,28 @@ msgstr "Десни прозор" msgid "Scroll Lock" msgstr "Закључавање клизања" -#. ~ Key name #: src/client/keycode.cpp -msgid "Select" -msgstr "Означи" +#, fuzzy +msgid "Select Key" +msgstr "Дугме бриши" #: src/client/keycode.cpp msgid "Shift Key" 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 "Лист" +#, fuzzy +msgid "Tab Key" +msgstr "Дугме прелома" #: src/client/keycode.cpp msgid "Up Arrow" msgstr "Стрелица навише" -#: src/client/keycode.cpp -msgid "X Button 1" -msgstr "Х дугме 1" - -#: src/client/keycode.cpp -msgid "X Button 2" -msgstr "Х дугме 2" - -#: src/client/keycode.cpp -msgid "Zoom Key" -msgstr "Дугме приближавања" - #: src/client/minimap.cpp msgid "Minimap hidden" msgstr "Мала карта је скривена" @@ -2353,7 +2308,7 @@ msgstr "Неисправна лозинка" #: src/network/clientpackethandler.cpp src/script/lua_api/l_client.cpp #: src/script/lua_api/l_mainmenu.cpp msgid "LANG_CODE" -msgstr "LANG_CODE" +msgstr "sr" #: src/network/clientpackethandler.cpp msgid "" @@ -2522,12 +2477,11 @@ msgstr "" msgid "" "3D support.\n" "Currently supported:\n" -"- none: no 3d output.\n" -"- anaglyph: cyan/magenta color 3d.\n" -"- interlaced: odd/even line based polarization screen support.\n" -"- topbottom: split screen top/bottom.\n" -"- sidebyside: split screen side by side.\n" -"- crossview: Cross-eyed 3d" +"- none: no 3D output\n" +"- anaglyph: cyan/magenta color 3D\n" +"- topbottom: split screen top/bottom\n" +"- sidebyside: split screen side-by-side\n" +"- crossview: cross-eyed 3D" msgstr "" "3Д подршка.\n" "Тренутно су подржани:\n" @@ -2608,7 +2562,6 @@ msgid "Admin name" msgstr "Име руковаоца" #: src/settings_translation_file.cpp -#, fuzzy msgid "Advanced" msgstr "Напредно" @@ -2627,14 +2580,12 @@ msgid "Allows liquids to be translucent." msgstr "Омогућава течностима да буду прозирне." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Also used for climbing down and descending in water if aux1_descends is " "disabled." msgstr "" -"Дугме за шуњање.\n" "Такође се користи за силазак и спуштање у воду уколико је онемогућено дугме " -"спољње1_силазак." +"aux1_descend." #: src/settings_translation_file.cpp msgid "" @@ -2864,6 +2815,17 @@ msgstr "Глачање камере" msgid "Camera smoothing in cinematic mode" msgstr "Глачање камере у погледу трећег лица" +#: src/settings_translation_file.cpp +msgid "Capture Tracy zones" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Capture Tracy zones with the profiler's instrumentation.\n" +"You need to build with Tracy to use this, see doc/developing/profiling.md\n" +"for details." +msgstr "" + #: src/settings_translation_file.cpp msgid "Cave noise" msgstr "" @@ -3176,7 +3138,6 @@ msgid "Debug log level" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Debugging" msgstr "Уклањање грешака" @@ -3363,6 +3324,10 @@ msgstr "" msgid "Developer Options" msgstr "" +#: src/settings_translation_file.cpp +msgid "Disable if you only want to instrument with Tracy." +msgstr "" + #: src/settings_translation_file.cpp msgid "Disallow empty passwords" msgstr "Онемогући празне лозинке" @@ -5119,6 +5084,11 @@ msgstr "" msgid "Maximum users" msgstr "Највећи број играча" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Measure time samples" +msgstr "Пустињски дворци" + #: src/settings_translation_file.cpp msgid "Message of the day" msgstr "Порука дана" @@ -5160,7 +5130,6 @@ msgid "Mipmapping" msgstr "Мала карта" #: src/settings_translation_file.cpp -#, fuzzy msgid "Miscellaneous" msgstr "Разно" @@ -5274,7 +5243,8 @@ msgid "" msgstr "" "Име играча.\n" "Приликом рада служитеља, странка које се повезује са оваквим именом је " -"руковалац." +"руковалац.\n" +"Приликом покретања из главног изборника, ово се премошћује." #: src/settings_translation_file.cpp msgid "" @@ -5829,7 +5799,6 @@ msgid "Send player names to the server list" msgstr "Пошаљи имена играча на списак служитеља" #: src/settings_translation_file.cpp -#, fuzzy msgid "Server" msgstr "Служитељ" @@ -6129,7 +6098,6 @@ msgid "Soft shadow radius" msgstr "Меки пречник сене" #: src/settings_translation_file.cpp -#, fuzzy msgid "Sound" msgstr "Звук" @@ -6563,7 +6531,6 @@ msgid "Toggle profiler" msgstr "Прекидач профилера" #: src/settings_translation_file.cpp -#, fuzzy msgid "Toggle unlimited view range" msgstr "Дугме прекидач неограниченог опсега погледа." @@ -6668,8 +6635,13 @@ msgid "" "set\n" "to a non-default value." msgstr "" -"Подузорковање је слично коришћењу ниже размере заслона, али се примењуј\n" -"само на свет игре, држећи цртежно сучеље нетакнутим." +"Подузорковање је слично коришћењу ниже размере заслона, али се примењује\n" +"само на свет игре, држећи цртежно сучеље нетакнутим.\n" +"Требало би да значајно побољша учинак по цену губљења појединости на слици.\n" +"Већа вредност исходи у лошију слику.\n" +"Примедба: Подузроковање тренутно није подржано уколико је постављено " +"„3d_mode“\n" +"на вредност која није подразумевана." #: src/settings_translation_file.cpp msgid "Unlimited player transfer distance" @@ -7011,11 +6983,8 @@ msgid "Width of the selection box lines around nodes." msgstr "Ширина линија около чворова кутија означавања." #: src/settings_translation_file.cpp -#, fuzzy msgid "Will also disable autoforward, when active." -msgstr "" -"Дугме за кретање играча уназад.\n" -"Такође онемогућава самостално уназад, када делује." +msgstr "Такође онемогућава самостално уназад, када делује." #: src/settings_translation_file.cpp msgid "Window maximized" @@ -7114,188 +7083,68 @@ msgstr "" msgid "cURL parallel limit" msgstr "" -#~ msgid "Key for decreasing the viewing range." -#~ msgstr "Дугме за смањивање опсега погледа." +#~ msgid "Apps" +#~ msgstr "Програми" -#~ msgid "Key for decreasing the volume." -#~ msgstr "Дугме за смањивање јачине звука." +#~ msgid "End" +#~ msgstr "Kraj" -#~ msgid "Key for dropping the currently selected item." -#~ msgstr "Дугме за испуштање тренутно означене ставке." +#~ msgid "Erase EOF" +#~ msgstr "Избирши ЕОФ" -#~ msgid "Key for increasing the viewing range." -#~ msgstr "Дугме за повећање опсега погледа." +#~ msgid "Execute" +#~ msgstr "Изврши" -#~ msgid "Key for increasing the volume." -#~ msgstr "Дугме за појачавање звука." +#~ msgid "Help" +#~ msgstr "Помоћ" -#~ msgid "Key for jumping." -#~ msgstr "Дугме за рипање." +#~ msgid "Home" +#~ msgstr "Матица" -#~ msgid "Key for moving the player forward." -#~ msgstr "Дугме за кретање играча напред." +#~ msgid "IME Accept" +#~ msgstr "ИМЕ Прихвати" -#~ msgid "Key for moving the player left." -#~ msgstr "Дугме за кретање играча улево." +#~ msgid "IME Convert" +#~ msgstr "ИМЕ Претвори" -#~ msgid "Key for moving the player right." -#~ msgstr "Дугме за кретање играча удесно." +#~ msgid "IME Escape" +#~ msgstr "ИМЕ Излаз" -#~ msgid "Key for muting the game." -#~ msgstr "Дугме за умукнути игру." +#~ msgid "IME Mode Change" +#~ msgstr "ИМЕ Измена измене" -#~ msgid "Key for opening the chat window." -#~ msgstr "Дугме за отварање прозора ћаскања." +#~ msgid "IME Nonconvert" +#~ msgstr "ИМЕ Непретвори" -#~ msgid "Key for opening the inventory." -#~ msgstr "Дугме за отварање иметка." +#~ msgid "Left Button" +#~ msgstr "Лево дугме" -#~ msgid "Key for selecting the 11th hotbar slot." -#~ msgstr "Дугме за означавање једанаестог брзог поља." +#~ msgid "Middle Button" +#~ msgstr "Средње дугме" -#~ msgid "Key for selecting the 12th hotbar slot." -#~ msgstr "Дугме за означавање дванаестог брзог поља." +#~ msgid "No world created or selected!" +#~ msgstr "Нема створених или одабраних светова!" -#~ msgid "Key for selecting the 13th hotbar slot." -#~ msgstr "Дугме за означавање тринаестог брзог поља." +#~ msgid "OEM Clear" +#~ msgstr "Очисти ЕОФ" -#~ msgid "Key for selecting the 14th hotbar slot." -#~ msgstr "Дугме за означавање четрнаестог брзог поља." +#~ msgid "Right Button" +#~ msgstr "Десно дугме" -#~ msgid "Key for selecting the 15th hotbar slot." -#~ msgstr "Дугме за означавање петнаестог брзог поља." +#~ msgid "Select" +#~ msgstr "Означи" -#~ msgid "Key for selecting the 16th hotbar slot." -#~ msgstr "Дугме за означавање шестнаестог брзог поља." +#~ msgid "Sleep" +#~ msgstr "Спавање" -#~ msgid "Key for selecting the 17th hotbar slot." -#~ msgstr "Дугме за означавање седамнаестог брзог поља." +#~ msgid "Snapshot" +#~ msgstr "Снимак" -#~ msgid "Key for selecting the 18th hotbar slot." -#~ msgstr "Дугме за означавање осамнаестог брзог поља." +#~ msgid "Tab" +#~ msgstr "Лист" -#~ msgid "Key for selecting the 19th hotbar slot." -#~ msgstr "Дугме за означавање деветнаестог брзог поља." +#~ msgid "X Button 1" +#~ msgstr "Х дугме 1" -#~ msgid "Key for selecting the 20th hotbar slot." -#~ msgstr "Дугме за означавање двадесетог брзог поља." - -#~ msgid "Key for selecting the 21st hotbar slot." -#~ msgstr "Дугме за означавање двадесет првог брзог поља." - -#~ msgid "Key for selecting the 22nd hotbar slot." -#~ msgstr "Дугме за означавање двадесет другог брзог поља." - -#~ msgid "Key for selecting the 23rd hotbar slot." -#~ msgstr "Дугме за означавање двадесет трећег брзог поља." - -#~ msgid "Key for selecting the 24th hotbar slot." -#~ msgstr "Дугме за означавање двадесет четвртог брзог поља." - -#~ msgid "Key for selecting the 25th hotbar slot." -#~ msgstr "Дугме за означавање двадесет петог брзог поља." - -#~ msgid "Key for selecting the 26th hotbar slot." -#~ msgstr "Дугме за означавање двадесет шестог брзог поља." - -#~ msgid "Key for selecting the 27th hotbar slot." -#~ msgstr "Дугме за означавање двадесет седмог брзог поља." - -#~ msgid "Key for selecting the 28th hotbar slot." -#~ msgstr "Дугме за означавање двадесет осмог брзог поља." - -#~ msgid "Key for selecting the 29th hotbar slot." -#~ msgstr "Дугме за означавање двадесет деветог брзог поља." - -#~ msgid "Key for selecting the 30th hotbar slot." -#~ msgstr "Дугме за означавање тридесетог брзог поља." - -#~ msgid "Key for selecting the 31st hotbar slot." -#~ msgstr "Дугме за означавање тридесет првог брзог поља." - -#~ msgid "Key for selecting the 32nd hotbar slot." -#~ msgstr "Дугме за означавање тридесет другог брзог поља." - -#~ msgid "Key for selecting the eighth hotbar slot." -#~ msgstr "Дугме за означавање осмог брзог поља." - -#~ msgid "Key for selecting the fifth hotbar slot." -#~ msgstr "Дугме за означавање петог брзог поља." - -#~ msgid "Key for selecting the first hotbar slot." -#~ msgstr "Дугме за означавање првог брзог поља." - -#~ msgid "Key for selecting the fourth hotbar slot." -#~ msgstr "Дугме за означавање четвртог брзог поља." - -#~ msgid "Key for selecting the next item in the hotbar." -#~ msgstr "Дугме за означавање следеће ставке у врућој траци." - -#~ msgid "Key for selecting the ninth hotbar slot." -#~ msgstr "Дугме за означавање деветог брзог поља." - -#~ msgid "Key for selecting the previous item in the hotbar." -#~ msgstr "Дугме за означавање претходне ставке у врућој траци." - -#~ msgid "Key for selecting the second hotbar slot." -#~ msgstr "Дугме за означавање другог брзог поља." - -#~ msgid "Key for selecting the seventh hotbar slot." -#~ msgstr "Дугме за означавање седмог брзог поља." - -#~ msgid "Key for selecting the sixth hotbar slot." -#~ msgstr "Дугме за означавање шестог брзог поља." - -#~ msgid "Key for selecting the tenth hotbar slot." -#~ msgstr "Дугме за означавање десетог брзог поља." - -#~ msgid "Key for selecting the third hotbar slot." -#~ msgstr "Дугме за означавање трећег брзог поља." - -#~ msgid "Key for switching between first- and third-person camera." -#~ msgstr "Дугме за прелаз погледа из првог и трећег лица." - -#~ msgid "Key for taking screenshots." -#~ msgstr "Дугме за сликање заслона радне површи." - -#~ msgid "Key for toggling autoforward." -#~ msgstr "Дугме прекидач самосталног кретања напред." - -#~ msgid "Key for toggling cinematic mode." -#~ msgstr "Дугме прекидач приказа погледа из трећег лица." - -#~ msgid "Key for toggling display of minimap." -#~ msgstr "Дугме прекидач приказа мале карте." - -#~ msgid "Key for toggling fast mode." -#~ msgstr "Дугме прекидач брзог кретања." - -#~ msgid "Key for toggling flying." -#~ msgstr "Дугме прекидач летења." - -#~ msgid "Key for toggling fullscreen mode." -#~ msgstr "Дугме прекидач за пуни приказ прозора игре." - -#~ msgid "Key for toggling noclip mode." -#~ msgstr "Дугме прекидач кретања скрозирањем." - -#~ msgid "Key for toggling pitch move mode." -#~ msgstr "Дугме прекидач за нагибно кретање." - -#~ msgid "Key for toggling the display of chat." -#~ msgstr "Дугме прекидач приказа ћаскања." - -#~ msgid "Key for toggling the display of debug info." -#~ msgstr "Дугме прекидач приказа података о исправкама грешака." - -#~ msgid "Key for toggling the display of fog." -#~ msgstr "Дугме прекидач приказа магле." - -#~ msgid "Key for toggling the display of the HUD." -#~ msgstr "Дугме прекидач приказа ХУД-а." - -#~ msgid "Key for toggling the display of the large chat console." -#~ msgstr "Дугме прекидач приказа великог прозора ћаскања." - -#~ msgid "Key to use view zoom when possible." -#~ msgstr "Дугме за приближен поглед када је могуће." +#~ msgid "X Button 2" +#~ msgstr "Х дугме 2" diff --git a/po/sr_Cyrl/luanti.po b/po/sr_Cyrl/luanti.po index c082a5f82..88d64c41f 100644 --- a/po/sr_Cyrl/luanti.po +++ b/po/sr_Cyrl/luanti.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: Serbian (cyrillic) (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-07-11 19:59+0200\n" -"PO-Revision-Date: 2025-06-19 14:04+0000\n" +"POT-Creation-Date: 2025-09-23 19:19+0200\n" +"PO-Revision-Date: 2025-08-30 20:02+0000\n" "Last-Translator: Саша Петровић \n" "Language-Team: Serbian (Cyrillic script) \n" @@ -13,7 +13,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && " "n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" -"X-Generator: Weblate 5.12.1\n" +"X-Generator: Weblate 5.13.1-dev\n" #: builtin/client/chatcommands.lua msgid "Clear the out chat queue" @@ -566,9 +566,8 @@ msgid "ContentDB page" msgstr "Настави" #: builtin/mainmenu/content/dlg_package.lua -#, fuzzy msgid "Description" -msgstr "Серверски порт" +msgstr "Опис" #: builtin/mainmenu/content/dlg_package.lua msgid "Donate" @@ -588,9 +587,8 @@ msgid "Forum Topic" msgstr "" #: builtin/mainmenu/content/dlg_package.lua -#, fuzzy msgid "Information" -msgstr "Информације о моду:" +msgstr "Обавештење" #: builtin/mainmenu/content/dlg_package.lua #, fuzzy @@ -635,9 +633,8 @@ msgid "by $1 — $2 downloads — +$3 / $4 / -$5" msgstr "" #: builtin/mainmenu/content/pkgmgr.lua -#, fuzzy msgid "$1 (Enabled)" -msgstr "Омогућено" +msgstr "$1 (омогућено)" #: builtin/mainmenu/content/pkgmgr.lua #, fuzzy @@ -979,9 +976,8 @@ msgid "Keybindings changed" msgstr "" #: builtin/mainmenu/dlg_rebind_keys.lua -#, fuzzy msgid "Open settings" -msgstr "Поставке" +msgstr "Отвори поставке" #: builtin/mainmenu/dlg_rebind_keys.lua msgid "The input handling system was reworked in Luanti 5.12.0." @@ -1006,14 +1002,12 @@ msgstr "" #: builtin/mainmenu/dlg_register.lua builtin/mainmenu/tab_local.lua #: builtin/mainmenu/tab_online.lua -#, fuzzy msgid "Password" -msgstr "Нова шифра" +msgstr "Лозинка" #: builtin/mainmenu/dlg_register.lua -#, fuzzy msgid "Passwords do not match" -msgstr "Шифре се не поклапају!" +msgstr "Лозинке се не подударају" #: builtin/mainmenu/dlg_register.lua builtin/mainmenu/tab_online.lua msgid "Register" @@ -1060,9 +1054,8 @@ msgstr "" "преписати било које име дато овде." #: builtin/mainmenu/dlg_server_list_mods.lua -#, fuzzy msgid "Expand all" -msgstr "Укључи све" +msgstr "Прошири све" #: builtin/mainmenu/dlg_server_list_mods.lua msgid "Group by prefix" @@ -1167,14 +1160,12 @@ msgid "Browse online content [$1]" msgstr "" #: builtin/mainmenu/tab_content.lua -#, fuzzy msgid "Content" -msgstr "Настави" +msgstr "Садржај" #: builtin/mainmenu/tab_content.lua -#, fuzzy msgid "Content [$1]" -msgstr "Настави" +msgstr "Садржај [$1]" #: builtin/mainmenu/tab_content.lua #, fuzzy @@ -1182,27 +1173,24 @@ msgid "Disable Texture Pack" msgstr "Одабери сет текстура:" #: builtin/mainmenu/tab_content.lua -#, fuzzy msgid "Installed Packages:" -msgstr "Инсталирани модови:" +msgstr "Уграђени пакети:" #: builtin/mainmenu/tab_content.lua msgid "No dependencies." msgstr "Нема зависности." #: builtin/mainmenu/tab_content.lua -#, fuzzy msgid "No package description available" -msgstr "Није доступан опис мода" +msgstr "Нема доступних описа пакета" #: builtin/mainmenu/tab_content.lua msgid "Rename" msgstr "Преименуј" #: builtin/mainmenu/tab_content.lua -#, fuzzy msgid "Update available?" -msgstr "<ни једна није доступна>" +msgstr "Доступна надградња?" #: builtin/mainmenu/tab_content.lua #, fuzzy @@ -1234,9 +1222,8 @@ msgid "Host Server" msgstr "Направи сервер" #: builtin/mainmenu/tab_local.lua -#, fuzzy msgid "Install a game" -msgstr "Инсталирај $1" +msgstr "Угради игру" #: builtin/mainmenu/tab_local.lua msgid "Install games from ContentDB" @@ -1257,13 +1244,8 @@ msgid "New" msgstr "Нови" #: builtin/mainmenu/tab_local.lua -msgid "No world created or selected!" -msgstr "Ниједан свет није направљен или изабран!" - -#: builtin/mainmenu/tab_local.lua -#, fuzzy msgid "Play Game" -msgstr "Почни игру" +msgstr "Играј игру" #: builtin/mainmenu/tab_local.lua builtin/mainmenu/tab_online.lua msgid "Port" @@ -1283,23 +1265,20 @@ msgid "Server Port" msgstr "Серверски порт" #: builtin/mainmenu/tab_local.lua -#, fuzzy msgid "Start Game" -msgstr "Направи игру" +msgstr "Почни игру" #: builtin/mainmenu/tab_local.lua msgid "You need to install a game before you can create a world." msgstr "" #: builtin/mainmenu/tab_online.lua -#, fuzzy msgid "Add favorite" -msgstr "Обриши Омиљени" +msgstr "Додај омиљеног" #: builtin/mainmenu/tab_online.lua -#, fuzzy msgid "Address" -msgstr "- Адреса: " +msgstr "Адреса" #: builtin/mainmenu/tab_online.lua msgid "Creative mode" @@ -1309,26 +1288,23 @@ msgstr "Слободни мод" #: builtin/mainmenu/tab_online.lua #, fuzzy msgid "Damage / PvP" -msgstr "Штета" +msgstr "Штета / ПвП" #: builtin/mainmenu/tab_online.lua -#, fuzzy msgid "Favorites" msgstr "Омиљени" #: builtin/mainmenu/tab_online.lua -#, fuzzy msgid "Game: $1" -msgstr "Игра" +msgstr "Игра: $1" #: builtin/mainmenu/tab_online.lua msgid "Incompatible Servers" msgstr "" #: builtin/mainmenu/tab_online.lua -#, fuzzy msgid "Join Game" -msgstr "Направи игру" +msgstr "Придружи се игри" #: builtin/mainmenu/tab_online.lua msgid "Login" @@ -1339,20 +1315,20 @@ msgid "Number of mods: $1" msgstr "" #: builtin/mainmenu/tab_online.lua -#, fuzzy msgid "Open server website" -msgstr "Корак на посвећеном серверу" +msgstr "Отвори страницу служитеља" #: builtin/mainmenu/tab_online.lua msgid "Ping" msgstr "Одзив" #: builtin/mainmenu/tab_online.lua -#, fuzzy msgid "" "Players:\n" "$1" -msgstr "Клијент" +msgstr "" +"Играчи:\n" +"$1" #: builtin/mainmenu/tab_online.lua msgid "" @@ -1363,28 +1339,24 @@ msgid "" msgstr "" #: builtin/mainmenu/tab_online.lua -#, fuzzy msgid "Public Servers" -msgstr "Пријави сервер" +msgstr "Јавни служитељ" #: builtin/mainmenu/tab_online.lua msgid "Refresh" msgstr "" #: builtin/mainmenu/tab_online.lua -#, fuzzy msgid "Remove favorite" -msgstr "Обриши Омиљени" +msgstr "Уклони омиљеног" #: builtin/mainmenu/tab_online.lua -#, fuzzy msgid "Server Description" -msgstr "Серверски порт" +msgstr "Опис служитеља" #: src/client/client.cpp -#, fuzzy msgid "Connection aborted (protocol error?)." -msgstr "Грешка у конекцији (истекло време?)" +msgstr "Веза је прекинута (грешка у правилнику приступа?)." #: src/client/client.cpp src/client/game.cpp msgid "Connection timed out." @@ -1416,9 +1388,9 @@ msgid "Rebuilding shaders..." msgstr "Обнављам шејдере..." #: src/client/client.cpp -#, fuzzy, c-format +#, c-format msgid "Saved screenshot to \"%s\"" -msgstr "Екран:" +msgstr "Слика заслона је сачувана у „%s“" #: src/client/clientlauncher.cpp #, fuzzy @@ -1465,7 +1437,7 @@ msgstr "" #: src/client/game.cpp #, fuzzy msgid "A serialization error occurred:" -msgstr "Догодила се грешка:" +msgstr "Догодила се грешка стварања низа" #: src/client/game.cpp #, c-format @@ -1890,10 +1862,6 @@ msgstr "" msgid "Profiler shown (page %d of %d)" msgstr "" -#: src/client/keycode.cpp -msgid "Apps" -msgstr "Апликације" - #: src/client/keycode.cpp #, fuzzy msgid "Backspace" @@ -1928,44 +1896,19 @@ msgid "Down Arrow" msgstr "" #: src/client/keycode.cpp -msgid "End" -msgstr "Крај" +#, fuzzy +msgid "End Key" +msgstr "Мени" #: src/client/keycode.cpp -msgid "Erase EOF" -msgstr "Избриши до краја поља" +#, fuzzy +msgid "Help Key" +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 "ИМЕ Не конвертуј" +#, fuzzy +msgid "Home Key" +msgstr "Зумирај" #: src/client/keycode.cpp msgid "Insert" @@ -1977,8 +1920,9 @@ msgid "Left Arrow" msgstr "Леви Control" #: src/client/keycode.cpp -msgid "Left Button" -msgstr "Лево дугме" +#, fuzzy +msgid "Left Click" +msgstr "Леви Control" #: src/client/keycode.cpp msgid "Left Control" @@ -1992,19 +1936,27 @@ msgstr "Леви мени" msgid "Left Shift" msgstr "Леви Shift" +#. ~ Name of key #: src/client/keycode.cpp msgid "Left Windows" msgstr "Леви Windows" -#. ~ Key name, common on Windows keyboards #: src/client/keycode.cpp #, fuzzy msgid "Menu Key" msgstr "Мени" #: src/client/keycode.cpp -msgid "Middle Button" -msgstr "Средње дугме" +msgid "Middle Click" +msgstr "" + +#: src/client/keycode.cpp +msgid "Mouse X1" +msgstr "" + +#: src/client/keycode.cpp +msgid "Mouse X2" +msgstr "" #: src/client/keycode.cpp msgid "Num Lock" @@ -2071,10 +2023,6 @@ msgstr "Нумеричка тастатура 8" msgid "Numpad 9" msgstr "Нумеричка тастатура 9" -#: src/client/keycode.cpp -msgid "OEM Clear" -msgstr "ОЕМ очисти" - #: src/client/keycode.cpp #, fuzzy msgid "Page Down" @@ -2110,8 +2058,9 @@ msgid "Right Arrow" msgstr "Десни Control" #: src/client/keycode.cpp -msgid "Right Button" -msgstr "Десно дугме" +#, fuzzy +msgid "Right Click" +msgstr "Десни Control" #: src/client/keycode.cpp msgid "Right Control" @@ -2125,6 +2074,7 @@ msgstr "Десни мени" msgid "Right Shift" msgstr "Десни Shift" +#. ~ Name of key #: src/client/keycode.cpp msgid "Right Windows" msgstr "Десни Windows" @@ -2133,49 +2083,29 @@ msgstr "Десни Windows" msgid "Scroll Lock" msgstr "Закључавање скроловања" -#. ~ Key name #: src/client/keycode.cpp -msgid "Select" -msgstr "Одабери" +#, fuzzy +msgid "Select Key" +msgstr "Обриши" #: src/client/keycode.cpp #, fuzzy msgid "Shift Key" 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 "Таб" +#, fuzzy +msgid "Tab Key" +msgstr "Очисти" #: src/client/keycode.cpp msgid "Up Arrow" msgstr "" -#: src/client/keycode.cpp -msgid "X Button 1" -msgstr "X Дугме 1" - -#: src/client/keycode.cpp -msgid "X Button 2" -msgstr "X Дугме 2" - -#: src/client/keycode.cpp -#, fuzzy -msgid "Zoom Key" -msgstr "Зумирај" - #: src/client/minimap.cpp msgid "Minimap hidden" msgstr "" @@ -2592,12 +2522,11 @@ msgstr "" msgid "" "3D support.\n" "Currently supported:\n" -"- none: no 3d output.\n" -"- anaglyph: cyan/magenta color 3d.\n" -"- interlaced: odd/even line based polarization screen support.\n" -"- topbottom: split screen top/bottom.\n" -"- sidebyside: split screen side by side.\n" -"- crossview: Cross-eyed 3d" +"- none: no 3D output\n" +"- anaglyph: cyan/magenta color 3D\n" +"- topbottom: split screen top/bottom\n" +"- sidebyside: split screen side-by-side\n" +"- crossview: cross-eyed 3D" msgstr "" "3D подршка.\n" "Тренутно подржано:\n" @@ -2961,6 +2890,17 @@ msgstr "Изглађивање камере" msgid "Camera smoothing in cinematic mode" msgstr "Изглађивање камере у синематском моду" +#: src/settings_translation_file.cpp +msgid "Capture Tracy zones" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Capture Tracy zones with the profiler's instrumentation.\n" +"You need to build with Tracy to use this, see doc/developing/profiling.md\n" +"for details." +msgstr "" + #: src/settings_translation_file.cpp msgid "Cave noise" msgstr "Семе пећина" @@ -3470,6 +3410,10 @@ msgstr "" msgid "Developer Options" msgstr "Украси" +#: src/settings_translation_file.cpp +msgid "Disable if you only want to instrument with Tracy." +msgstr "" + #: src/settings_translation_file.cpp msgid "Disallow empty passwords" msgstr "" @@ -5170,6 +5114,10 @@ msgstr "" msgid "Maximum users" msgstr "" +#: src/settings_translation_file.cpp +msgid "Measure time samples" +msgstr "" + #: src/settings_translation_file.cpp msgid "Message of the day" msgstr "" @@ -7105,6 +7053,68 @@ msgstr "" msgid "cURL parallel limit" msgstr "" -#, fuzzy -#~ msgid "Key for toggling cinematic mode." -#~ msgstr "Изглађивање камере у синематском моду" +#~ msgid "Apps" +#~ msgstr "Апликације" + +#~ msgid "End" +#~ msgstr "Крај" + +#~ msgid "Erase EOF" +#~ msgstr "Избриши до краја поља" + +#~ msgid "Execute" +#~ msgstr "Изврши" + +#~ msgid "Help" +#~ msgstr "Помоћ" + +#~ msgid "Home" +#~ msgstr "Кућа" + +#~ msgid "IME Accept" +#~ msgstr "ИМЕ Прихвати" + +#~ msgid "IME Convert" +#~ msgstr "ИМЕ Конвертуј" + +#~ msgid "IME Escape" +#~ msgstr "ИМЕ Побегни" + +#~ msgid "IME Mode Change" +#~ msgstr "ИМЕ Промена мода" + +#~ msgid "IME Nonconvert" +#~ msgstr "ИМЕ Не конвертуј" + +#~ msgid "Left Button" +#~ msgstr "Лево дугме" + +#~ msgid "Middle Button" +#~ msgstr "Средње дугме" + +#~ msgid "No world created or selected!" +#~ msgstr "Ниједан свет није направљен или изабран!" + +#~ msgid "OEM Clear" +#~ msgstr "ОЕМ очисти" + +#~ msgid "Right Button" +#~ msgstr "Десно дугме" + +#~ msgid "Select" +#~ msgstr "Одабери" + +#~ msgid "Sleep" +#~ msgstr "Спавај" + +#~ msgid "Snapshot" +#~ msgstr "Сачувана слика" + +#~ msgid "Tab" +#~ msgstr "Таб" + +#~ msgid "X Button 1" +#~ msgstr "X Дугме 1" + +#~ msgid "X Button 2" +#~ msgstr "X Дугме 2" diff --git a/po/sr_Latn/luanti.po b/po/sr_Latn/luanti.po index 8c4750e83..4643141a1 100644 --- a/po/sr_Latn/luanti.po +++ b/po/sr_Latn/luanti.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: minetest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-07-11 19:59+0200\n" +"POT-Creation-Date: 2025-09-23 19:19+0200\n" "PO-Revision-Date: 2023-05-06 20:50+0000\n" "Last-Translator: Sava Kujundžić \n" "Language-Team: Serbian (latin) \n" "Language-Team: Swedish \n" "Language-Team: Swahili \n" +"POT-Creation-Date: 2025-09-23 19:19+0200\n" +"PO-Revision-Date: 2025-08-02 09:02+0000\n" +"Last-Translator: Krock \n" "Language-Team: Tamil \n" "Language: ta\n" @@ -1232,10 +1232,6 @@ msgstr "" msgid "New" msgstr "புதிய" -#: builtin/mainmenu/tab_local.lua -msgid "No world created or selected!" -msgstr "எந்த உலகமும் உருவாக்கப்படவில்லை அல்லது தேர்ந்தெடுக்கப்படவில்லை!" - #: builtin/mainmenu/tab_local.lua msgid "Play Game" msgstr "விளையாட்டு விளையாடுங்கள்" @@ -1843,10 +1839,6 @@ msgstr "விவரக்குறிப்பு மறைக்கப்ப msgid "Profiler shown (page %d of %d)" msgstr "சுயவிவரக் காட்டப்பட்டுள்ளது ( %d இன் பக்கம் %d)" -#: src/client/keycode.cpp -msgid "Apps" -msgstr "பயன்பாடுகள்" - #: src/client/keycode.cpp msgid "Backspace" msgstr "பேக்ச்பேச்" @@ -1877,44 +1869,19 @@ msgid "Down Arrow" msgstr "கீழ் அம்பு" #: src/client/keycode.cpp -msgid "End" -msgstr "முடிவு" +#, fuzzy +msgid "End Key" +msgstr "பட்டி விசை" #: src/client/keycode.cpp -msgid "Erase EOF" -msgstr "EOF ஐ அழிக்கவும்" +#, fuzzy +msgid "Help Key" +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 "Ime ஏற்றுக்கொள்ளுங்கள்" - -#: src/client/keycode.cpp -msgid "IME Convert" -msgstr "IME மாற்ற" - -#: src/client/keycode.cpp -msgid "IME Escape" -msgstr "எச்பேப் செய்ய" - -#: src/client/keycode.cpp -msgid "IME Mode Change" -msgstr "IME பயன்முறை மாற்றம்" - -#: src/client/keycode.cpp -msgid "IME Nonconvert" -msgstr "Ime non convert" +#, fuzzy +msgid "Home Key" +msgstr "பெரிதாக்க விசை" #: src/client/keycode.cpp msgid "Insert" @@ -1925,8 +1892,9 @@ msgid "Left Arrow" msgstr "இடது அம்பு" #: src/client/keycode.cpp -msgid "Left Button" -msgstr "இடது பொத்தான்" +#, fuzzy +msgid "Left Click" +msgstr "இடது கட்டுப்பாடு" #: src/client/keycode.cpp msgid "Left Control" @@ -1940,18 +1908,26 @@ msgstr "இடது பட்டியல்" msgid "Left Shift" msgstr "இடது மாற்றம்" +#. ~ Name of key #: src/client/keycode.cpp msgid "Left Windows" msgstr "இடது சன்னல்கள்" -#. ~ Key name, common on Windows keyboards #: src/client/keycode.cpp msgid "Menu Key" msgstr "பட்டி விசை" #: src/client/keycode.cpp -msgid "Middle Button" -msgstr "நடுத்தர பொத்தான்" +msgid "Middle Click" +msgstr "" + +#: src/client/keycode.cpp +msgid "Mouse X1" +msgstr "" + +#: src/client/keycode.cpp +msgid "Mouse X2" +msgstr "" #: src/client/keycode.cpp msgid "Num Lock" @@ -2017,10 +1993,6 @@ msgstr "நம்பட் 8" msgid "Numpad 9" msgstr "நம்பட் 9" -#: src/client/keycode.cpp -msgid "OEM Clear" -msgstr "ஒஇஎம் தெளிவாக" - #: src/client/keycode.cpp msgid "Page Down" msgstr "பக்கம் கீழே" @@ -2052,8 +2024,9 @@ msgid "Right Arrow" msgstr "வலது அம்பு" #: src/client/keycode.cpp -msgid "Right Button" -msgstr "வலது பொத்தான்" +#, fuzzy +msgid "Right Click" +msgstr "சரியான கட்டுப்பாடு" #: src/client/keycode.cpp msgid "Right Control" @@ -2067,6 +2040,7 @@ msgstr "வலது பட்டியல்" msgid "Right Shift" msgstr "சரியான மாற்றம்" +#. ~ Name of key #: src/client/keycode.cpp msgid "Right Windows" msgstr "வலது சாளரங்கள்" @@ -2075,47 +2049,28 @@ msgstr "வலது சாளரங்கள்" msgid "Scroll Lock" msgstr "உருள் பூட்டு" -#. ~ Key name #: src/client/keycode.cpp -msgid "Select" -msgstr "தேர்ந்தெடு" +#, fuzzy +msgid "Select Key" +msgstr "விசையை நீக்கு" #: src/client/keycode.cpp msgid "Shift Key" 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 "தாவல்" +#, fuzzy +msgid "Tab Key" +msgstr "உடைக்கும் விசை" #: src/client/keycode.cpp msgid "Up Arrow" msgstr "அம்பு" -#: src/client/keycode.cpp -msgid "X Button 1" -msgstr "ஃச் பொத்தான் 1" - -#: src/client/keycode.cpp -msgid "X Button 2" -msgstr "ஃச் பொத்தான் 2" - -#: src/client/keycode.cpp -msgid "Zoom Key" -msgstr "பெரிதாக்க விசை" - #: src/client/minimap.cpp msgid "Minimap hidden" msgstr "மினிமாப் மறைக்கப்பட்டுள்ளது" @@ -2351,7 +2306,7 @@ msgstr "தவறான கடவுச்சொல்" #: src/network/clientpackethandler.cpp src/script/lua_api/l_client.cpp #: src/script/lua_api/l_mainmenu.cpp msgid "LANG_CODE" -msgstr "Lang_code" +msgstr "ta" #: src/network/clientpackethandler.cpp msgid "" @@ -2538,15 +2493,15 @@ msgid "3D noise that determines number of dungeons per mapchunk." msgstr "3 டி ஒலி ஒரு மேப்சங்கிற்கு நிலவறைகளின் எண்ணிக்கையை நிர்ணயிக்கும்." #: src/settings_translation_file.cpp +#, fuzzy msgid "" "3D support.\n" "Currently supported:\n" -"- none: no 3d output.\n" -"- anaglyph: cyan/magenta color 3d.\n" -"- interlaced: odd/even line based polarization screen support.\n" -"- topbottom: split screen top/bottom.\n" -"- sidebyside: split screen side by side.\n" -"- crossview: Cross-eyed 3d" +"- none: no 3D output\n" +"- anaglyph: cyan/magenta color 3D\n" +"- topbottom: split screen top/bottom\n" +"- sidebyside: split screen side-by-side\n" +"- crossview: cross-eyed 3D" msgstr "" "3D உதவி. \n" "தற்போது ஆதரிக்கப்படுகிறது: \n" @@ -2920,6 +2875,17 @@ msgstr "கேமரா மென்மையாக்குதல்" msgid "Camera smoothing in cinematic mode" msgstr "சினிமா பயன்முறையில் கேமரா மென்மையாக்குகிறது" +#: src/settings_translation_file.cpp +msgid "Capture Tracy zones" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Capture Tracy zones with the profiler's instrumentation.\n" +"You need to build with Tracy to use this, see doc/developing/profiling.md\n" +"for details." +msgstr "" + #: src/settings_translation_file.cpp msgid "Cave noise" msgstr "குகை ஒலி" @@ -3476,6 +3442,10 @@ msgstr "" msgid "Developer Options" msgstr "உருவாக்குபவர் விருப்பங்கள்" +#: src/settings_translation_file.cpp +msgid "Disable if you only want to instrument with Tracy." +msgstr "" + #: src/settings_translation_file.cpp msgid "Disallow empty passwords" msgstr "வெற்று கடவுச்சொற்களை அனுமதிக்காதீர்கள்" @@ -3691,8 +3661,8 @@ msgid "" "when connecting to the server." msgstr "" "தொலை ஊடக சேவையகத்தின் பயன்பாட்டை இயக்கவும் (சேவையகத்தால் வழங்கப்பட்டால்).\n" -" தொலை சேவையகங்கள் மீடியாவைப் பதிவிறக்குவதற்கு கணிசமாக விரைவான வழியை வழங்குகின்றன (எ." -"கா. அமைப்பு)\n" +" தொலை சேவையகங்கள் மீடியாவைப் பதிவிறக்குவதற்கு கணிசமாக விரைவான வழியை வழங்குகின்றன " +"(எ.கா. அமைப்பு)\n" " சேவையகத்துடன் இணைக்கும்போது." #: src/settings_translation_file.cpp @@ -5421,6 +5391,11 @@ msgstr "" msgid "Maximum users" msgstr "அதிகபட்ச பயனர்கள்" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Measure time samples" +msgstr "பாலைவன கோயில்கள்" + #: src/settings_translation_file.cpp msgid "Message of the day" msgstr "அன்றைய செய்தி" @@ -7680,194 +7655,68 @@ msgstr "ஊடாடும் காலக்கெடுவை சுருட msgid "cURL parallel limit" msgstr "இணையான வரம்பை சுருட்டுங்கள்" -#~ msgid "Apply specular shading to nodes." -#~ msgstr "முனைகளுக்கு ஏகப்பட்ட நிழலைப் பயன்படுத்துங்கள்." +#~ msgid "Apps" +#~ msgstr "பயன்பாடுகள்" -#~ msgid "Key for decreasing the viewing range." -#~ msgstr "பார்க்கும் வரம்பைக் குறைப்பதற்கான விசை." +#~ msgid "End" +#~ msgstr "முடிவு" -#~ msgid "Key for decreasing the volume." -#~ msgstr "அளவைக் குறைப்பதற்கான திறவுகோல்." +#~ msgid "Erase EOF" +#~ msgstr "EOF ஐ அழிக்கவும்" -#~ msgid "Key for dropping the currently selected item." -#~ msgstr "தற்போது தேர்ந்தெடுக்கப்பட்ட உருப்படியைக் கைவிடுவதற்கான திறவுகோல்." +#~ msgid "Execute" +#~ msgstr "செயல்படுத்தவும்" -#~ msgid "Key for increasing the viewing range." -#~ msgstr "பார்க்கும் வரம்பை அதிகரிப்பதற்கான திறவுகோல்." +#~ msgid "Help" +#~ msgstr "உதவி" -#~ msgid "Key for increasing the volume." -#~ msgstr "அளவை அதிகரிப்பதற்கான திறவுகோல்." +#~ msgid "Home" +#~ msgstr "வீடு" -#~ msgid "Key for jumping." -#~ msgstr "குதிப்பதற்கான திறவுகோல்." +#~ msgid "IME Accept" +#~ msgstr "Ime ஏற்றுக்கொள்ளுங்கள்" -#~ msgid "Key for moving the player forward." -#~ msgstr "பிளேயரை முன்னோக்கி நகர்த்துவதற்கான திறவுகோல்." +#~ msgid "IME Convert" +#~ msgstr "IME மாற்ற" -#~ msgid "Key for moving the player left." -#~ msgstr "வீரரை இடதுபுறமாக நகர்த்துவதற்கான திறவுகோல்." +#~ msgid "IME Escape" +#~ msgstr "எச்பேப் செய்ய" -#~ msgid "Key for moving the player right." -#~ msgstr "பிளேயரை சரியாக நகர்த்துவதற்கான திறவுகோல்." +#~ msgid "IME Mode Change" +#~ msgstr "IME பயன்முறை மாற்றம்" -#~ msgid "Key for muting the game." -#~ msgstr "விளையாட்டை முடக்குவதற்கான திறவுகோல்." +#~ msgid "IME Nonconvert" +#~ msgstr "Ime non convert" -#~ msgid "Key for opening the chat window." -#~ msgstr "அரட்டை சாளரத்தைத் திறப்பதற்கான விசை." +#~ msgid "Left Button" +#~ msgstr "இடது பொத்தான்" -#~ msgid "Key for opening the inventory." -#~ msgstr "சரக்குகளைத் திறப்பதற்கான திறவுகோல்." +#~ msgid "Middle Button" +#~ msgstr "நடுத்தர பொத்தான்" -#~ msgid "Key for selecting the 11th hotbar slot." -#~ msgstr "11 வது ஆட்பார் ச்லாட்டைத் தேர்ந்தெடுப்பதற்கான திறவுகோல்." +#~ msgid "No world created or selected!" +#~ msgstr "எந்த உலகமும் உருவாக்கப்படவில்லை அல்லது தேர்ந்தெடுக்கப்படவில்லை!" -#~ msgid "Key for selecting the 12th hotbar slot." -#~ msgstr "12 வது ஆட்பார் ச்லாட்டைத் தேர்ந்தெடுப்பதற்கான திறவுகோல்." +#~ msgid "OEM Clear" +#~ msgstr "ஒஇஎம் தெளிவாக" -#~ msgid "Key for selecting the 13th hotbar slot." -#~ msgstr "13 வது ஆட்பார் ச்லாட்டைத் தேர்ந்தெடுப்பதற்கான திறவுகோல்." +#~ msgid "Right Button" +#~ msgstr "வலது பொத்தான்" -#~ msgid "Key for selecting the 14th hotbar slot." -#~ msgstr "14 வது ஆட்பார் ச்லாட்டைத் தேர்ந்தெடுப்பதற்கான திறவுகோல்." +#~ msgid "Select" +#~ msgstr "தேர்ந்தெடு" -#~ msgid "Key for selecting the 15th hotbar slot." -#~ msgstr "15 வது ஆட்பார் ச்லாட்டைத் தேர்ந்தெடுப்பதற்கான திறவுகோல்." +#~ msgid "Sleep" +#~ msgstr "தூங்கு" -#~ msgid "Key for selecting the 16th hotbar slot." -#~ msgstr "16 வது ஆட்பார் ச்லாட்டைத் தேர்ந்தெடுப்பதற்கான திறவுகோல்." +#~ msgid "Snapshot" +#~ msgstr "ச்னாப்சாட்" -#~ msgid "Key for selecting the 17th hotbar slot." -#~ msgstr "17 வது ஆட்பார் ச்லாட்டைத் தேர்ந்தெடுப்பதற்கான திறவுகோல்." +#~ msgid "Tab" +#~ msgstr "தாவல்" -#~ msgid "Key for selecting the 18th hotbar slot." -#~ msgstr "18 வது ஆட்பார் ச்லாட்டைத் தேர்ந்தெடுப்பதற்கான திறவுகோல்." +#~ msgid "X Button 1" +#~ msgstr "ஃச் பொத்தான் 1" -#~ msgid "Key for selecting the 19th hotbar slot." -#~ msgstr "19 வது ஆட்பார் ச்லாட்டைத் தேர்ந்தெடுப்பதற்கான திறவுகோல்." - -#~ msgid "Key for selecting the 20th hotbar slot." -#~ msgstr "20 வது ஆட்பார் ச்லாட்டைத் தேர்ந்தெடுப்பதற்கான திறவுகோல்." - -#~ msgid "Key for selecting the 21st hotbar slot." -#~ msgstr "21 வது ஆட்பார் ச்லாட்டைத் தேர்ந்தெடுப்பதற்கான திறவுகோல்." - -#~ msgid "Key for selecting the 22nd hotbar slot." -#~ msgstr "22 வது ஆட்பார் ச்லாட்டைத் தேர்ந்தெடுப்பதற்கான திறவுகோல்." - -#~ msgid "Key for selecting the 23rd hotbar slot." -#~ msgstr "23 வது ஆட்பார் ச்லாட்டைத் தேர்ந்தெடுப்பதற்கான திறவுகோல்." - -#~ msgid "Key for selecting the 24th hotbar slot." -#~ msgstr "24 வது ஆட்பார் ச்லாட்டைத் தேர்ந்தெடுப்பதற்கான திறவுகோல்." - -#~ msgid "Key for selecting the 25th hotbar slot." -#~ msgstr "25 வது ஆட்பார் ச்லாட்டைத் தேர்ந்தெடுப்பதற்கான திறவுகோல்." - -#~ msgid "Key for selecting the 26th hotbar slot." -#~ msgstr "26 வது ஆட்பார் ச்லாட்டைத் தேர்ந்தெடுப்பதற்கான திறவுகோல்." - -#~ msgid "Key for selecting the 27th hotbar slot." -#~ msgstr "27 வது ஆட்பார் ச்லாட்டைத் தேர்ந்தெடுப்பதற்கான திறவுகோல்." - -#~ msgid "Key for selecting the 28th hotbar slot." -#~ msgstr "28 வது ஆட்பார் ச்லாட்டைத் தேர்ந்தெடுப்பதற்கான திறவுகோல்." - -#~ msgid "Key for selecting the 29th hotbar slot." -#~ msgstr "29 வது ஆட்பார் ச்லாட்டைத் தேர்ந்தெடுப்பதற்கான திறவுகோல்." - -#~ msgid "Key for selecting the 30th hotbar slot." -#~ msgstr "30 வது ஆட்பார் ச்லாட்டைத் தேர்ந்தெடுப்பதற்கான திறவுகோல்." - -#~ msgid "Key for selecting the 31st hotbar slot." -#~ msgstr "31 வது ஆட்பார் ச்லாட்டைத் தேர்ந்தெடுப்பதற்கான திறவுகோல்." - -#~ msgid "Key for selecting the 32nd hotbar slot." -#~ msgstr "32 வது ஆட்பார் ச்லாட்டைத் தேர்ந்தெடுப்பதற்கான திறவுகோல்." - -#~ msgid "Key for selecting the eighth hotbar slot." -#~ msgstr "எட்டாவது ஆட்பார் ச்லாட்டைத் தேர்ந்தெடுப்பதற்கான திறவுகோல்." - -#~ msgid "Key for selecting the fifth hotbar slot." -#~ msgstr "ஐந்தாவது ஆட்பார் ச்லாட்டைத் தேர்ந்தெடுப்பதற்கான திறவுகோல்." - -#~ msgid "Key for selecting the first hotbar slot." -#~ msgstr "முதல் ஆட்பார் ச்லாட்டைத் தேர்ந்தெடுப்பதற்கான திறவுகோல்." - -#~ msgid "Key for selecting the fourth hotbar slot." -#~ msgstr "நான்காவது ஆட்பார் ச்லாட்டைத் தேர்ந்தெடுப்பதற்கான திறவுகோல்." - -#~ msgid "Key for selecting the next item in the hotbar." -#~ msgstr "ஆட்பாரில் அடுத்த உருப்படியைத் தேர்ந்தெடுப்பதற்கான விசை." - -#~ msgid "Key for selecting the ninth hotbar slot." -#~ msgstr "ஒன்பதாவது ஆட்பார் ச்லாட்டைத் தேர்ந்தெடுப்பதற்கான திறவுகோல்." - -#~ msgid "Key for selecting the previous item in the hotbar." -#~ msgstr "ஆட்பாரில் முந்தைய உருப்படியைத் தேர்ந்தெடுப்பதற்கான விசை." - -#~ msgid "Key for selecting the second hotbar slot." -#~ msgstr "இரண்டாவது ஆட்பார் ச்லாட்டைத் தேர்ந்தெடுப்பதற்கான திறவுகோல்." - -#~ msgid "Key for selecting the seventh hotbar slot." -#~ msgstr "ஏழாவது ஆட்பார் ச்லாட்டைத் தேர்ந்தெடுப்பதற்கான திறவுகோல்." - -#~ msgid "Key for selecting the sixth hotbar slot." -#~ msgstr "ஆறாவது ஆட்பார் ச்லாட்டைத் தேர்ந்தெடுப்பதற்கான திறவுகோல்." - -#~ msgid "Key for selecting the tenth hotbar slot." -#~ msgstr "பத்தாவது ஆட்பார் ச்லாட்டைத் தேர்ந்தெடுப்பதற்கான திறவுகோல்." - -#~ msgid "Key for selecting the third hotbar slot." -#~ msgstr "மூன்றாவது ஆட்பார் ச்லாட்டைத் தேர்ந்தெடுப்பதற்கான திறவுகோல்." - -#~ msgid "Key for switching between first- and third-person camera." -#~ msgstr "முதல் மற்றும் மூன்றாம் நபர் கேமராவுக்கு இடையில் மாறுவதற்கான திறவுகோல்." - -#~ msgid "Key for taking screenshots." -#~ msgstr "திரை சாட்களை எடுப்பதற்கான திறவுகோல்." - -#~ msgid "Key for toggling autoforward." -#~ msgstr "ஆட்டோஃபார்வார்ட்டை மாற்றுவதற்கான திறவுகோல்." - -#~ msgid "Key for toggling cinematic mode." -#~ msgstr "சினிமா பயன்முறையை மாற்றுவதற்கான திறவுகோல்." - -#~ msgid "Key for toggling display of minimap." -#~ msgstr "மினிமேப்பின் காட்சியை மாற்றுவதற்கான திறவுகோல்." - -#~ msgid "Key for toggling fast mode." -#~ msgstr "வேகமான பயன்முறையை மாற்றுவதற்கான திறவுகோல்." - -#~ msgid "Key for toggling flying." -#~ msgstr "பறப்பதை மாற்றுவதற்கான திறவுகோல்." - -#~ msgid "Key for toggling fullscreen mode." -#~ msgstr "முழுத்திரை பயன்முறையை மாற்றுவதற்கான திறவுகோல்." - -#~ msgid "Key for toggling noclip mode." -#~ msgstr "NOCLIP பயன்முறையை மாற்றுவதற்கான திறவுகோல்." - -#~ msgid "Key for toggling pitch move mode." -#~ msgstr "பிட்ச் மூவ் பயன்முறையை மாற்றுவதற்கான திறவுகோல்." - -#~ msgid "Key for toggling the display of chat." -#~ msgstr "அரட்டையின் காட்சியை மாற்றுவதற்கான திறவுகோல்." - -#~ msgid "Key for toggling the display of debug info." -#~ msgstr "பிழைத்திருத்த தகவலின் காட்சியை மாற்றுவதற்கான திறவுகோல்." - -#~ msgid "Key for toggling the display of fog." -#~ msgstr "மூடுபனியின் காட்சியை மாற்றுவதற்கான திறவுகோல்." - -#~ msgid "Key for toggling the display of the HUD." -#~ msgstr "HUD இன் காட்சியை மாற்றுவதற்கான திறவுகோல்." - -#~ msgid "Key for toggling the display of the large chat console." -#~ msgstr "பெரிய அரட்டை கன்சோலின் காட்சியை மாற்றுவதற்கான திறவுகோல்." - -#~ msgid "Key to use view zoom when possible." -#~ msgstr "பார்வை பெரிதாக்க முடிந்தவரை பயன்படுத்த விசை." - -#~ msgid "Node specular" -#~ msgstr "முனை ஏகப்பட்ட" +#~ msgid "X Button 2" +#~ msgstr "ஃச் பொத்தான் 2" diff --git a/po/th/luanti.po b/po/th/luanti.po index 398db7fe3..fc0abc20b 100644 --- a/po/th/luanti.po +++ b/po/th/luanti.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Thai (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-07-11 19:59+0200\n" +"POT-Creation-Date: 2025-09-23 19:19+0200\n" "PO-Revision-Date: 2022-03-18 01:05+0000\n" "Last-Translator: Thomas Wiegand \n" "Language-Team: Thai , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: luanti\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-09-23 19:19+0200\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: Automatically generated\n" +"Language-Team: none\n" +"Language: tl\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" + +#: 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/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 (-t: output in chat)" +msgstr "" + +#: builtin/common/chatcommands.lua +msgid "" +"Use '.help ' to get more information, or '.help all' to list everything." +msgstr "" + +#: builtin/common/chatcommands.lua +msgid "[all | ] [-t]" +msgstr "" + +#: builtin/common/settings/components.lua +msgid "Browse" +msgstr "" + +#: builtin/common/settings/components.lua +msgid "Conflicts with \"$1\"" +msgstr "" + +#: builtin/common/settings/components.lua +msgid "Edit" +msgstr "" + +#: builtin/common/settings/components.lua +msgid "Remove keybinding" +msgstr "" + +#: builtin/common/settings/components.lua +msgid "Select directory" +msgstr "" + +#: builtin/common/settings/components.lua +msgid "Select file" +msgstr "" + +#: builtin/common/settings/components.lua +msgid "Set" +msgstr "" + +#: builtin/common/settings/dlg_change_mapgen_flags.lua +msgid "(No description of setting given)" +msgstr "" + +#: builtin/common/settings/dlg_change_mapgen_flags.lua +msgid "2D Noise" +msgstr "" + +#: builtin/common/settings/dlg_change_mapgen_flags.lua +#: builtin/mainmenu/content/dlg_install.lua +#: builtin/mainmenu/content/dlg_overwrite.lua +#: builtin/mainmenu/dlg_config_world.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 src/gui/guiOpenURL.cpp +#: src/gui/guiPasswordChange.cpp +msgid "Cancel" +msgstr "" + +#: builtin/common/settings/dlg_change_mapgen_flags.lua +msgid "Lacunarity" +msgstr "" + +#: builtin/common/settings/dlg_change_mapgen_flags.lua +msgid "Octaves" +msgstr "" + +#: builtin/common/settings/dlg_change_mapgen_flags.lua +#: src/settings_translation_file.cpp +msgid "Offset" +msgstr "" + +#: builtin/common/settings/dlg_change_mapgen_flags.lua +msgid "Persistence" +msgstr "" + +#: builtin/common/settings/dlg_change_mapgen_flags.lua +#: builtin/mainmenu/dlg_config_world.lua +msgid "Save" +msgstr "" + +#: builtin/common/settings/dlg_change_mapgen_flags.lua +#: src/settings_translation_file.cpp +msgid "Scale" +msgstr "" + +#: builtin/common/settings/dlg_change_mapgen_flags.lua +#: builtin/mainmenu/dlg_create_world.lua +msgid "Seed" +msgstr "" + +#: builtin/common/settings/dlg_change_mapgen_flags.lua +msgid "X spread" +msgstr "" + +#: builtin/common/settings/dlg_change_mapgen_flags.lua +msgid "Y spread" +msgstr "" + +#: builtin/common/settings/dlg_change_mapgen_flags.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 +#. the settings menu. +#: builtin/common/settings/dlg_change_mapgen_flags.lua +msgid "absvalue" +msgstr "" + +#. ~ "defaults" is a noise parameter flag. +#. It describes the default processing options +#. for noise settings in the settings menu. +#: builtin/common/settings/dlg_change_mapgen_flags.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 +#. the settings menu. +#: builtin/common/settings/dlg_change_mapgen_flags.lua +msgid "eased" +msgstr "" + +#: builtin/common/settings/dlg_settings.lua +msgid "(The game will need to enable automatic exposure as well)" +msgstr "" + +#: builtin/common/settings/dlg_settings.lua +msgid "(The game will need to enable bloom as well)" +msgstr "" + +#: builtin/common/settings/dlg_settings.lua +msgid "(The game will need to enable volumetric lighting as well)" +msgstr "" + +#: builtin/common/settings/dlg_settings.lua +msgid "(Use system language)" +msgstr "" + +#: builtin/common/settings/dlg_settings.lua +msgid "Accessibility" +msgstr "" + +#: builtin/common/settings/dlg_settings.lua +msgid "Auto" +msgstr "" + +#: builtin/common/settings/dlg_settings.lua +#: builtin/mainmenu/content/dlg_contentdb.lua +#: builtin/mainmenu/content/dlg_package.lua src/gui/guiVolumeChange.cpp +msgid "Back" +msgstr "" + +#: builtin/common/settings/dlg_settings.lua +msgid "Buttons with crosshair" +msgstr "" + +#: builtin/common/settings/dlg_settings.lua src/gui/touchscreenlayout.cpp +#: src/settings_translation_file.cpp +msgid "Chat" +msgstr "" + +#: builtin/common/settings/dlg_settings.lua builtin/mainmenu/tab_online.lua +msgid "Clear" +msgstr "" + +#: builtin/common/settings/dlg_settings.lua src/settings_translation_file.cpp +msgid "Controls" +msgstr "" + +#: builtin/common/settings/dlg_settings.lua +#: builtin/common/settings/shadows_component.lua +msgid "Disabled" +msgstr "" + +#: builtin/common/settings/dlg_settings.lua +msgid "Enabled" +msgstr "" + +#: builtin/common/settings/dlg_settings.lua src/settings_translation_file.cpp +msgid "General" +msgstr "" + +#: builtin/common/settings/dlg_settings.lua +msgid "Long tap" +msgstr "" + +#: builtin/common/settings/dlg_settings.lua +msgid "Movement" +msgstr "" + +#: builtin/common/settings/dlg_settings.lua +#: builtin/mainmenu/content/dlg_contentdb.lua +msgid "No results" +msgstr "" + +#: builtin/common/settings/dlg_settings.lua +msgid "Reset setting to default" +msgstr "" + +#: builtin/common/settings/dlg_settings.lua +msgid "Reset setting to default ($1)" +msgstr "" + +#: builtin/common/settings/dlg_settings.lua builtin/mainmenu/tab_online.lua +msgid "Search" +msgstr "" + +#: builtin/common/settings/dlg_settings.lua +msgid "Short tap" +msgstr "" + +#: builtin/common/settings/dlg_settings.lua +msgid "Show advanced settings" +msgstr "" + +#: builtin/common/settings/dlg_settings.lua +msgid "Show technical names" +msgstr "" + +#: builtin/common/settings/dlg_settings.lua +msgid "Tap" +msgstr "" + +#: builtin/common/settings/dlg_settings.lua +msgid "Tap with crosshair" +msgstr "" + +#: builtin/common/settings/dlg_settings.lua +msgid "Touchscreen layout" +msgstr "" + +#: builtin/common/settings/settingtypes.lua +msgid "Client Mods" +msgstr "" + +#: builtin/common/settings/settingtypes.lua +msgid "Content: Games" +msgstr "" + +#: builtin/common/settings/settingtypes.lua +msgid "Content: Mods" +msgstr "" + +#: builtin/common/settings/shadows_component.lua +msgid "(The game will need to enable shadows as well)" +msgstr "" + +#: builtin/common/settings/shadows_component.lua +msgid "Custom" +msgstr "" + +#: builtin/common/settings/shadows_component.lua +#: src/settings_translation_file.cpp +msgid "Dynamic shadows" +msgstr "" + +#: builtin/common/settings/shadows_component.lua +msgid "High" +msgstr "" + +#: builtin/common/settings/shadows_component.lua +msgid "Low" +msgstr "" + +#: builtin/common/settings/shadows_component.lua +msgid "Medium" +msgstr "" + +#: builtin/common/settings/shadows_component.lua +msgid "Very High" +msgstr "" + +#: builtin/common/settings/shadows_component.lua +msgid "Very Low" +msgstr "" + +#: builtin/fstk/ui.lua +msgid "" +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 "OK" +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 "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 "We only support protocol version $1." +msgstr "" + +#: builtin/mainmenu/common.lua +msgid "We support protocol versions between version $1 and $2." +msgstr "" + +#: builtin/mainmenu/content/contentdb.lua +msgid "Error installing \"$1\": $2" +msgstr "" + +#: builtin/mainmenu/content/contentdb.lua +msgid "Failed to download \"$1\"" +msgstr "" + +#: builtin/mainmenu/content/contentdb.lua +msgid "Failed to download $1" +msgstr "" + +#: builtin/mainmenu/content/contentdb.lua +msgid "" +"Failed to extract \"$1\" (insufficient disk space, unsupported file type or " +"broken archive)" +msgstr "" + +#: builtin/mainmenu/content/dlg_contentdb.lua +msgid "" +"$1 downloading,\n" +"$2 queued" +msgstr "" + +#: builtin/mainmenu/content/dlg_contentdb.lua +msgid "$1 downloading..." +msgstr "" + +#: builtin/mainmenu/content/dlg_contentdb.lua +msgid "All" +msgstr "" + +#: builtin/mainmenu/content/dlg_contentdb.lua +msgid "ContentDB is not available when Luanti was compiled without cURL" +msgstr "" + +#: builtin/mainmenu/content/dlg_contentdb.lua +msgid "Downloading..." +msgstr "" + +#: builtin/mainmenu/content/dlg_contentdb.lua +msgid "Featured" +msgstr "" + +#: builtin/mainmenu/content/dlg_contentdb.lua +msgid "Games" +msgstr "" + +#: builtin/mainmenu/content/dlg_contentdb.lua +#: builtin/mainmenu/content/dlg_install.lua +#: builtin/mainmenu/content/dlg_package.lua builtin/mainmenu/serverlistmgr.lua +#: src/client/game.cpp +msgid "Loading..." +msgstr "" + +#: builtin/mainmenu/content/dlg_contentdb.lua +msgid "Mods" +msgstr "" + +#: builtin/mainmenu/content/dlg_contentdb.lua +msgid "No packages could be retrieved" +msgstr "" + +#: builtin/mainmenu/content/dlg_contentdb.lua +msgid "No updates" +msgstr "" + +#: builtin/mainmenu/content/dlg_contentdb.lua +msgid "Queued" +msgstr "" + +#: builtin/mainmenu/content/dlg_contentdb.lua +msgid "Texture Packs" +msgstr "" + +#: builtin/mainmenu/content/dlg_contentdb.lua +msgid "The package $1 was not found." +msgstr "" + +#: builtin/mainmenu/content/dlg_contentdb.lua +msgid "Update All [$1]" +msgstr "" + +#: builtin/mainmenu/content/dlg_install.lua +msgid "$1 and $2 dependencies will be installed." +msgstr "" + +#: builtin/mainmenu/content/dlg_install.lua +msgid "$1 by $2" +msgstr "" + +#: builtin/mainmenu/content/dlg_install.lua +msgid "$1 required dependencies could not be found." +msgstr "" + +#: builtin/mainmenu/content/dlg_install.lua +msgid "$1 will be installed, and $2 dependencies will be skipped." +msgstr "" + +#: builtin/mainmenu/content/dlg_install.lua +msgid "Already installed" +msgstr "" + +#: builtin/mainmenu/content/dlg_install.lua +msgid "Base Game:" +msgstr "" + +#: builtin/mainmenu/content/dlg_install.lua +#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/tab_content.lua +msgid "Dependencies:" +msgstr "" + +#: builtin/mainmenu/content/dlg_install.lua +msgid "Error getting dependencies for package $1" +msgstr "" + +#: builtin/mainmenu/content/dlg_install.lua +#: builtin/mainmenu/content/dlg_package.lua +msgid "Install" +msgstr "" + +#: builtin/mainmenu/content/dlg_install.lua +msgid "Install $1" +msgstr "" + +#: builtin/mainmenu/content/dlg_install.lua +msgid "Install missing dependencies" +msgstr "" + +#: builtin/mainmenu/content/dlg_install.lua +msgid "Not found" +msgstr "" + +#: builtin/mainmenu/content/dlg_install.lua +msgid "Please check that the base game is correct." +msgstr "" + +#: builtin/mainmenu/content/dlg_install.lua +msgid "You need to install a game before you can install a mod" +msgstr "" + +#: builtin/mainmenu/content/dlg_overwrite.lua +msgid "\"$1\" already exists. Would you like to overwrite it?" +msgstr "" + +#: builtin/mainmenu/content/dlg_overwrite.lua +msgid "Overwrite" +msgstr "" + +#: builtin/mainmenu/content/dlg_package.lua +msgid "ContentDB page" +msgstr "" + +#: builtin/mainmenu/content/dlg_package.lua +msgid "Description" +msgstr "" + +#: builtin/mainmenu/content/dlg_package.lua +msgid "Donate" +msgstr "" + +#: builtin/mainmenu/content/dlg_package.lua +msgid "Error loading package information" +msgstr "" + +#: builtin/mainmenu/content/dlg_package.lua +msgid "Error loading reviews" +msgstr "" + +#: builtin/mainmenu/content/dlg_package.lua +msgid "Forum Topic" +msgstr "" + +#: builtin/mainmenu/content/dlg_package.lua +msgid "Information" +msgstr "" + +#: builtin/mainmenu/content/dlg_package.lua +msgid "Install [$1]" +msgstr "" + +#: builtin/mainmenu/content/dlg_package.lua +msgid "Issue Tracker" +msgstr "" + +#: builtin/mainmenu/content/dlg_package.lua +msgid "Reviews" +msgstr "" + +#: builtin/mainmenu/content/dlg_package.lua +msgid "Source" +msgstr "" + +#: builtin/mainmenu/content/dlg_package.lua +msgid "Translate" +msgstr "" + +#: builtin/mainmenu/content/dlg_package.lua builtin/mainmenu/tab_content.lua +msgid "Uninstall" +msgstr "" + +#: builtin/mainmenu/content/dlg_package.lua builtin/mainmenu/tab_content.lua +msgid "Update" +msgstr "" + +#: builtin/mainmenu/content/dlg_package.lua +msgid "Website" +msgstr "" + +#: builtin/mainmenu/content/dlg_package.lua +msgid "by $1" +msgstr "" + +#: builtin/mainmenu/content/dlg_package.lua +msgid "by $1 — $2 downloads — +$3 / $4 / -$5" +msgstr "" + +#: builtin/mainmenu/content/pkgmgr.lua +msgid "$1 (Enabled)" +msgstr "" + +#: builtin/mainmenu/content/pkgmgr.lua +msgid "$1 mods" +msgstr "" + +#: builtin/mainmenu/content/pkgmgr.lua +msgid "Failed to install $1 to $2" +msgstr "" + +#: builtin/mainmenu/content/pkgmgr.lua +msgid "Install: Unable to find suitable folder name for $1" +msgstr "" + +#: builtin/mainmenu/content/pkgmgr.lua +msgid "Unable to find a valid mod, modpack, or game" +msgstr "" + +#: builtin/mainmenu/content/pkgmgr.lua +msgid "Unable to install a $1 as a $2" +msgstr "" + +#: builtin/mainmenu/content/pkgmgr.lua +msgid "Unable to install a $1 as a texture pack" +msgstr "" + +#: builtin/mainmenu/dlg_clients_list.lua +msgid "" +"Players connected to\n" +"$1" +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 +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 +msgid "World:" +msgstr "" + +#: builtin/mainmenu/dlg_config_world.lua +msgid "enabled" +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 "Desert temples" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Development Test is meant for developers." +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "" +"Different dungeon variant generated in desert biomes (only if dungeons " +"enabled)" +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 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 +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_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 +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_rebind_keys.lua +msgid "As a result, your keybindings may have been changed." +msgstr "" + +#: builtin/mainmenu/dlg_rebind_keys.lua +msgid "Check out the key settings or refer to the documentation:" +msgstr "" + +#: builtin/mainmenu/dlg_rebind_keys.lua +msgid "Close" +msgstr "" + +#: builtin/mainmenu/dlg_rebind_keys.lua +msgid "Keybindings changed" +msgstr "" + +#: builtin/mainmenu/dlg_rebind_keys.lua +msgid "Open settings" +msgstr "" + +#: builtin/mainmenu/dlg_rebind_keys.lua +msgid "The input handling system was reworked in Luanti 5.12.0." +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_reinstall_mtg.lua +msgid "Dismiss" +msgstr "" + +#: builtin/mainmenu/dlg_reinstall_mtg.lua +msgid "" +"For a long time, Luanti shipped with a default game called \"Minetest " +"Game\". Since version 5.8.0, Luanti ships without a default game." +msgstr "" + +#: builtin/mainmenu/dlg_reinstall_mtg.lua +msgid "" +"If you want to continue playing in your Minetest Game worlds, you need to " +"reinstall Minetest Game." +msgstr "" + +#: builtin/mainmenu/dlg_reinstall_mtg.lua +msgid "Minetest Game is no longer installed by default" +msgstr "" + +#: builtin/mainmenu/dlg_reinstall_mtg.lua +msgid "Reinstall Minetest Game" +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_server_list_mods.lua +msgid "Expand all" +msgstr "" + +#: builtin/mainmenu/dlg_server_list_mods.lua +msgid "Group by prefix" +msgstr "" + +#: builtin/mainmenu/dlg_server_list_mods.lua +msgid "The $1 server uses a game called $2 and the following mods:" +msgstr "" + +#: builtin/mainmenu/dlg_server_list_mods.lua +msgid "The $1 server uses the following mods:" +msgstr "" + +#: builtin/mainmenu/dlg_version_info.lua +msgid "A new $1 version is available" +msgstr "" + +#: builtin/mainmenu/dlg_version_info.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/dlg_version_info.lua +msgid "Later" +msgstr "" + +#: builtin/mainmenu/dlg_version_info.lua +msgid "Never" +msgstr "" + +#: builtin/mainmenu/dlg_version_info.lua +msgid "Visit website" +msgstr "" + +#: builtin/mainmenu/init.lua src/client/game_formspec.cpp +msgid "Settings" +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 "Core Team" +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 "Browse online content [$1]" +msgstr "" + +#: builtin/mainmenu/tab_content.lua +msgid "Content" +msgstr "" + +#: builtin/mainmenu/tab_content.lua +msgid "Content [$1]" +msgstr "" + +#: builtin/mainmenu/tab_content.lua +msgid "Disable Texture Pack" +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 "Update available?" +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 a game" +msgstr "" + +#: builtin/mainmenu/tab_local.lua +msgid "Install games from ContentDB" +msgstr "" + +#: builtin/mainmenu/tab_local.lua +msgid "Luanti doesn't come with a game by default." +msgstr "" + +#: builtin/mainmenu/tab_local.lua +msgid "" +"Luanti is a game-creation platform that allows you to play many different " +"games." +msgstr "" + +#: builtin/mainmenu/tab_local.lua +msgid "New" +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_local.lua +msgid "You need to install a game before you can create a world." +msgstr "" + +#: builtin/mainmenu/tab_online.lua +msgid "Add favorite" +msgstr "" + +#: builtin/mainmenu/tab_online.lua +msgid "Address" +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 "Game: $1" +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 "Number of mods: $1" +msgstr "" + +#: builtin/mainmenu/tab_online.lua +msgid "Open server website" +msgstr "" + +#: builtin/mainmenu/tab_online.lua +msgid "Ping" +msgstr "" + +#: builtin/mainmenu/tab_online.lua +msgid "" +"Players:\n" +"$1" +msgstr "" + +#: builtin/mainmenu/tab_online.lua +msgid "" +"Possible filters\n" +"game:\n" +"mod:\n" +"player:" +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 "" + +#: 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 +#, c-format +msgid "Failed to save screenshot to \"%s\"" +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/client.cpp +#, c-format +msgid "Saved screenshot to \"%s\"" +msgstr "" + +#: src/client/clientlauncher.cpp +msgid "Could not find or load game: " +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/clientmedia.cpp src/client/game.cpp +msgid "Media..." +msgstr "" + +#: src/client/game.cpp src/client/shader.cpp src/server.cpp +msgid "" +"\n" +"Check debug.txt for details." +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 "All debug info hidden" +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 current block" +msgstr "" + +#: src/client/game.cpp +msgid "Block bounds shown for nearby blocks" +msgstr "" + +#: src/client/game.cpp +msgid "Bounding boxes shown" +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 game or mod)" +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 error (timed out?)" +msgstr "" + +#: src/client/game.cpp +msgid "Connection failed for unknown reason" +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 shown" +msgstr "" + +#: src/client/game.cpp +#, c-format +msgid "Error creating client: %s" +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 "Fog enabled by game or mod" +msgstr "" + +#: src/client/game.cpp +msgid "Item definitions..." +msgstr "" + +#: src/client/game.cpp +msgid "KiB/s" +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 "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 "Resolving address..." +msgstr "" + +#: src/client/game.cpp +msgid "Shutting down..." +msgstr "" + +#: src/client/game.cpp src/client/game_formspec.cpp +msgid "Singleplayer" +msgstr "" + +#: src/client/game.cpp +msgid "Sound muted" +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 +msgid "Unlimited viewing range disabled" +msgstr "" + +#: src/client/game.cpp +msgid "Unlimited viewing range enabled" +msgstr "" + +#: src/client/game.cpp +msgid "Unlimited viewing range enabled, but forbidden by game or mod" +msgstr "" + +#: src/client/game.cpp +#, c-format +msgid "Viewing changed to %d (the minimum)" +msgstr "" + +#: src/client/game.cpp +#, c-format +msgid "Viewing changed to %d (the minimum), but limited to %d by game or mod" +msgstr "" + +#: src/client/game.cpp +#, c-format +msgid "Viewing range changed to %d" +msgstr "" + +#: src/client/game.cpp +#, c-format +msgid "Viewing range changed to %d (the maximum)" +msgstr "" + +#: src/client/game.cpp +#, c-format +msgid "" +"Viewing range changed to %d (the maximum), but limited to %d by game or mod" +msgstr "" + +#: src/client/game.cpp +#, c-format +msgid "Viewing range changed to %d, but limited to %d by game or mod" +msgstr "" + +#: src/client/game.cpp +#, c-format +msgid "Volume changed to %d%%" +msgstr "" + +#: src/client/game.cpp +msgid "Wireframe not supported by video driver" +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_formspec.cpp +msgid "- Mode: " +msgstr "" + +#: src/client/game_formspec.cpp +msgid "- Public: " +msgstr "" + +#. ~ PvP = Player versus Player +#: src/client/game_formspec.cpp +msgid "- PvP: " +msgstr "" + +#: src/client/game_formspec.cpp +msgid "- Server Name: " +msgstr "" + +#: src/client/game_formspec.cpp +msgid "Change Password" +msgstr "" + +#: src/client/game_formspec.cpp +msgid "Continue" +msgstr "" + +#: src/client/game_formspec.cpp +msgid "" +"Controls:\n" +"No menu open:\n" +"- slide finger: look around\n" +"- tap: place/punch/use (default)\n" +"- long tap: dig/use (default)\n" +"Menu/inventory open:\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_formspec.cpp +msgid "Exit to Menu" +msgstr "" + +#: src/client/game_formspec.cpp +msgid "Exit to OS" +msgstr "" + +#: src/client/game_formspec.cpp +msgid "Game info:" +msgstr "" + +#: src/client/game_formspec.cpp +msgid "Game paused" +msgstr "" + +#: src/client/game_formspec.cpp +msgid "Hosting server" +msgstr "" + +#: src/client/game_formspec.cpp +msgid "Off" +msgstr "" + +#: src/client/game_formspec.cpp +msgid "On" +msgstr "" + +#: src/client/game_formspec.cpp +msgid "Remote server" +msgstr "" + +#: src/client/game_formspec.cpp +msgid "Respawn" +msgstr "" + +#: src/client/game_formspec.cpp +msgid "Sound Volume" +msgstr "" + +#: src/client/game_formspec.cpp +msgid "You died" +msgstr "" + +#: src/client/gameui.cpp +msgid "Chat currently disabled by game or mod" +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 "Backspace" +msgstr "" + +#. ~ Usually paired with the Pause key +#: src/client/keycode.cpp +msgid "Break Key" +msgstr "" + +#: src/client/keycode.cpp +msgid "Caps Lock" +msgstr "" + +#: src/client/keycode.cpp +msgid "Clear Key" +msgstr "" + +#: src/client/keycode.cpp +msgid "Control Key" +msgstr "" + +#: src/client/keycode.cpp +msgid "Delete Key" +msgstr "" + +#: src/client/keycode.cpp +msgid "Down Arrow" +msgstr "" + +#: src/client/keycode.cpp +msgid "End Key" +msgstr "" + +#: src/client/keycode.cpp +msgid "Help Key" +msgstr "" + +#: src/client/keycode.cpp +msgid "Home Key" +msgstr "" + +#: src/client/keycode.cpp +msgid "Insert" +msgstr "" + +#: src/client/keycode.cpp +msgid "Left Arrow" +msgstr "" + +#: src/client/keycode.cpp +msgid "Left Click" +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 "" + +#. ~ Name of key +#: src/client/keycode.cpp +msgid "Left Windows" +msgstr "" + +#: src/client/keycode.cpp +msgid "Menu Key" +msgstr "" + +#: src/client/keycode.cpp +msgid "Middle Click" +msgstr "" + +#: src/client/keycode.cpp +msgid "Mouse X1" +msgstr "" + +#: src/client/keycode.cpp +msgid "Mouse X2" +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 "Page Down" +msgstr "" + +#: src/client/keycode.cpp +msgid "Page Up" +msgstr "" + +#. ~ Usually paired with the Break key +#: src/client/keycode.cpp +msgid "Pause Key" +msgstr "" + +#: src/client/keycode.cpp +msgid "Play" +msgstr "" + +#. ~ "Print screen" key +#: src/client/keycode.cpp +msgid "Print" +msgstr "" + +#: src/client/keycode.cpp +msgid "Return Key" +msgstr "" + +#: src/client/keycode.cpp +msgid "Right Arrow" +msgstr "" + +#: src/client/keycode.cpp +msgid "Right Click" +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 "" + +#. ~ Name of key +#: src/client/keycode.cpp +msgid "Right Windows" +msgstr "" + +#: src/client/keycode.cpp +msgid "Scroll Lock" +msgstr "" + +#: src/client/keycode.cpp +msgid "Select Key" +msgstr "" + +#: src/client/keycode.cpp +msgid "Shift Key" +msgstr "" + +#: src/client/keycode.cpp +msgid "Space" +msgstr "" + +#: src/client/keycode.cpp +msgid "Tab Key" +msgstr "" + +#: src/client/keycode.cpp +msgid "Up Arrow" +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/client/shader.cpp +#, c-format +msgid "Failed to compile the \"%s\" shader." +msgstr "" + +#: src/client/shader.cpp +msgid "GLSL is not supported by the driver" +msgstr "" + +#. ~ Error when a mod is missing dependencies. Ex: "Mod Title is missing: mod1, mod2, mod3" +#: src/content/mod_configuration.cpp +#, c-format +msgid "%s is missing:" +msgstr "" + +#: src/content/mod_configuration.cpp +msgid "" +"Install and enable the required mods, or disable the mods causing errors." +msgstr "" + +#: src/content/mod_configuration.cpp +msgid "" +"Note: this may be caused by a dependency cycle, in which case try updating " +"the mods." +msgstr "" + +#: src/content/mod_configuration.cpp +msgid "Some mods have unsatisfied dependencies:" +msgstr "" + +#: src/gui/guiButtonKey.h +msgid "Press Button" +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/guiOpenURL.cpp +msgid "Open" +msgstr "" + +#: src/gui/guiOpenURL.cpp +msgid "Open URL?" +msgstr "" + +#: src/gui/guiOpenURL.cpp +msgid "Unable to open URL" +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 "Muted" +msgstr "" + +#: src/gui/guiVolumeChange.cpp +#, c-format +msgid "Sound Volume: %d%%" +msgstr "" + +#: src/gui/touchscreeneditor.cpp +msgid "Add button" +msgstr "" + +#: src/gui/touchscreeneditor.cpp +msgid "Done" +msgstr "" + +#: src/gui/touchscreeneditor.cpp +msgid "Remove" +msgstr "" + +#: src/gui/touchscreeneditor.cpp +msgid "Reset" +msgstr "" + +#: src/gui/touchscreeneditor.cpp +msgid "Start dragging a button to add. Tap outside to cancel." +msgstr "" + +#: src/gui/touchscreeneditor.cpp +msgid "Tap a button to select it. Drag a button to move it." +msgstr "" + +#: src/gui/touchscreeneditor.cpp +msgid "Tap outside to deselect." +msgstr "" + +#: src/gui/touchscreenlayout.cpp src/settings_translation_file.cpp +msgid "Aux1" +msgstr "" + +#: src/gui/touchscreenlayout.cpp +msgid "Change camera" +msgstr "" + +#: src/gui/touchscreenlayout.cpp src/settings_translation_file.cpp +msgid "Dig/punch/use" +msgstr "" + +#: src/gui/touchscreenlayout.cpp +msgid "Drop" +msgstr "" + +#: src/gui/touchscreenlayout.cpp +msgid "Exit" +msgstr "" + +#: src/gui/touchscreenlayout.cpp +msgid "Inventory" +msgstr "" + +#: src/gui/touchscreenlayout.cpp +msgid "Joystick" +msgstr "" + +#: src/gui/touchscreenlayout.cpp src/settings_translation_file.cpp +msgid "Jump" +msgstr "" + +#: src/gui/touchscreenlayout.cpp +msgid "Overflow menu" +msgstr "" + +#: src/gui/touchscreenlayout.cpp src/settings_translation_file.cpp +msgid "Place/use" +msgstr "" + +#: src/gui/touchscreenlayout.cpp +msgid "Range select" +msgstr "" + +#: src/gui/touchscreenlayout.cpp src/settings_translation_file.cpp +msgid "Sneak" +msgstr "" + +#: src/gui/touchscreenlayout.cpp src/settings_translation_file.cpp +msgid "Toggle chat log" +msgstr "" + +#: src/gui/touchscreenlayout.cpp +msgid "Toggle debug" +msgstr "" + +#: src/gui/touchscreenlayout.cpp src/settings_translation_file.cpp +msgid "Toggle fast" +msgstr "" + +#: src/gui/touchscreenlayout.cpp src/settings_translation_file.cpp +msgid "Toggle fly" +msgstr "" + +#: src/gui/touchscreenlayout.cpp src/settings_translation_file.cpp +msgid "Toggle minimap" +msgstr "" + +#: src/gui/touchscreenlayout.cpp src/settings_translation_file.cpp +msgid "Toggle noclip" +msgstr "" + +#: src/gui/touchscreenlayout.cpp src/settings_translation_file.cpp +msgid "Zoom" +msgstr "" + +#: src/network/clientpackethandler.cpp +msgid "" +"Another client is connected with this name. If your client closed " +"unexpectedly, try again in a minute." +msgstr "" + +#: src/network/clientpackethandler.cpp +msgid "Empty passwords are disallowed. Set a password and try again." +msgstr "" + +#: src/network/clientpackethandler.cpp +msgid "Internal server error" +msgstr "" + +#: src/network/clientpackethandler.cpp +msgid "Invalid password" +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 +#: src/script/lua_api/l_mainmenu.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/network/clientpackethandler.cpp +msgid "Player name contains disallowed characters" +msgstr "" + +#: src/network/clientpackethandler.cpp +msgid "Player name not allowed" +msgstr "" + +#: src/network/clientpackethandler.cpp +msgid "Server shutting down" +msgstr "" + +#: src/network/clientpackethandler.cpp +msgid "" +"The server has experienced an internal error. You will now be disconnected." +msgstr "" + +#: src/network/clientpackethandler.cpp +msgid "The server is running in singleplayer mode. You cannot connect." +msgstr "" + +#: src/network/clientpackethandler.cpp +msgid "Too many users" +msgstr "" + +#: src/network/clientpackethandler.cpp +msgid "Unknown disconnect reason." +msgstr "" + +#: src/network/clientpackethandler.cpp +msgid "" +"Your client sent something the server didn't expect. Try reconnecting or " +"updating your client." +msgstr "" + +#: src/network/clientpackethandler.cpp +msgid "" +"Your client's version is not supported.\n" +"Please contact the server administrator." +msgstr "" + +#: src/server.cpp +#, c-format +msgid "%s while shutting down: " +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" +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" +"- topbottom: split screen top/bottom\n" +"- sidebyside: split screen side-by-side\n" +"- crossview: cross-eyed 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 "Adjust the detected display density, used for scaling UI elements." +msgstr "" + +#: src/settings_translation_file.cpp +#, no-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 "" +"All mesh buffers with less than this number of vertices will be merged\n" +"during map rendering. This improves rendering performance." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Allow clouds to look 3D instead of flat." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Allows liquids to be translucent." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Also used for climbing down and descending in water if aux1_descends is " +"disabled." +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 "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 "Anti-aliasing scale" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Antialiasing method" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Anticheat flags" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Anticheat movement tolerance" +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 "" +"Apply dithering to reduce color banding artifacts.\n" +"Dithering significantly increases the size of losslessly-compressed\n" +"screenshots and it works incorrectly if the display or operating system\n" +"performs additional dithering or if the color channels are not quantized\n" +"to 8 bits.\n" +"With OpenGL ES, dithering only works if the shader supports high\n" +"floating-point precision and it may have a higher performance impact." +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 might not be rendered correctly in caves).\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 "" +"At this distance the server will perform a simpler and cheaper occlusion " +"check.\n" +"Smaller values potentially improve performance, at the expense of " +"temporarily visible\n" +"rendering glitches (missing blocks).\n" +"This is especially useful for very large viewing range (upwards of 500).\n" +"Stated in MapBlocks (16 nodes)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Audio" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Automatic jumping" +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 "Autoscaling mode" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Aux1 key for climbing/descending" +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 "Base texture size" +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" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Biome noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Block bounds HUD radius" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Block cull optimize distance" +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 smoothing" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Camera smoothing in cinematic mode" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Capture Tracy zones" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Capture Tracy zones with the profiler's instrumentation.\n" +"You need to build with Tracy to use this, see doc/developing/profiling.md\n" +"for details." +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 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 weblinks" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Chunk size" +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 Debugging" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Client Mesh Chunksize" +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 Modding" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Client-side node lookup range restriction" +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 in menu" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Color depth for post-processing texture" +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 AL and ALC extensions that should not be used.\n" +"Useful for testing. See al_extensions.[h,cpp] for details." +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 Luanti versions,\n" +"so see a full list at https://content.luanti.org/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" +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 "" +"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 "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 "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 "" +"Decide the color depth of the texture used for the post-processing " +"pipeline.\n" +"Reducing this can improve performance, but some effects (e.g. debanding)\n" +"require more than 8 bits to work." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Decrease view range" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Decrease volume" +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 maximum number of forceloaded mapblocks.\n" +"Set this to -1 to disable the limit." +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 "" +"Define the oldest clients allowed to connect.\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.\n" +"This allows for more fine-grained control than " +"strict_protocol_version_checking.\n" +"Luanti still enforces its own internal minimum, and enabling\n" +"strict_protocol_version_checking will effectively override this." +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 size of the sampling grid for FSAA and SSAA antialiasing " +"methods.\n" +"Value of 2 means taking 2x2 = 4 samples." +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, which can help reduce jitter." +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 "Developer Options" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Disable if you only want to instrument with Tracy." +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.\n" +"Set to 0 to disable it entirely." +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 "" +"Draw transparency sorted triangles grouped by their mesh buffers.\n" +"This breaks transparency sorting between mesh buffers, but avoids " +"situations\n" +"where transparency sorting would be very slow otherwise." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Drop item" +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 "Effects" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Enable Automatic Exposure" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Enable Bloom" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Enable Bloom Debug" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Enable Debanding" +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 IPv6 support for server.\n" +"Note that clients will be able to connect with both IPv4 and IPv6.\n" +"Ignored if bind_address is set." +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 Post Processing" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Enable Raytraced Culling" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Enable automatic exposure correction\n" +"When enabled, the post-processing engine will\n" +"automatically adjust to the brightness of the scene,\n" +"simulating the behavior of human eye." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Enable colored shadows for transculent nodes.\n" +"This is expensive." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Enable console window" +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 mouse wheel (scroll) for item selection in hotbar." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Enable random mod loading (mainly used for testing)." +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." +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 updates available indicator on content tab" +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 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 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 debug and error-checking in the OpenGL driver." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Enables smooth scrolling." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Enables the post processing pipeline." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Enables the touchscreen controls, allowing you to play the game with a " +"touchscreen.\n" +"\"auto\" means that the touchscreen controls will be enabled and disabled\n" +"automatically depending on the last used input method." +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 behavior.\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 "Exposure compensation" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "FPS" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "FPS when unfocused" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Factor noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fallback font path" +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 "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 "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 "" +"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 "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 "Fog" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fog start" +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 Full-Screen Background Color" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Formspec Full-Screen Background Opacity" +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 "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" +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 "Gamepads" +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 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 "" +"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." +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 slot 1" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 10" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 11" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 12" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 13" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 14" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 15" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 16" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 17" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 18" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 19" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 2" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 20" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 21" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 22" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 23" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 24" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 25" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 26" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 27" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 28" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 29" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 30" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 31" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 32" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 4" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 5" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 6" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 7" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 8" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 9" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar: Enable mouse wheel for selection" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar: Invert mouse wheel direction" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar: select next item" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar: select previous item" +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." +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 and you have ContentDB packages installed, Luanti may contact " +"ContentDB to\n" +"check for package updates when opening the mainmenu." +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, actions are recorded for rollback.\n" +"This option is only read when server starts." +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, players cannot join without a password or change theirs to an " +"empty password." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"If enabled, server account registration is separate from login in the UI.\n" +"If disabled, connecting to a server will automatically register a new " +"account." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "If enabled, the \"Aux1\" key will toggle when pressed." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"If enabled, the \"Sneak\" key will toggle when pressed.\n" +"This functionality is ignored when fly is enabled." +msgstr "" + +#: src/settings_translation_file.cpp +#, no-c-format +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 by 50-80%. Clients will no longer receive most\n" +"invisible blocks, so that the utility of noclip mode is reduced." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"If enabled, you can place nodes 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 +#, no-c-format +msgid "In-game chat console height, between 0.1 (10%) and 1.0 (100%)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Increase view range" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Increase volume" +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 core.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 "Interaction style" +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 "Inventory items animations" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Invert mouse" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Invert mouse wheel (scroll) direction for item selection in hotbar." +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 "Jumping speed" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Key for decrementing the selected value in Quicktune." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for digging, punching or using something.\n" +"(Note: The actual meaning might vary on a per-game basis.)" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Key for incrementing the selected value in Quicktune." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Key for moving fast in fast mode." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Key for opening the chat window to type commands." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Key for opening the chat window to type local commands." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for placing an item/block or for using something.\n" +"(Note: The actual meaning might vary on a per-game basis.)" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Key for switching to the next entry in Quicktune." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Key for switching to the previous entry in Quicktune." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Key for toggling the camera update. Only usable with 'debug' privilege." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Key for toggling the display of mapblock boundaries." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Key for toggling the display of the profiler. Used for development." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Keybindings" +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 "Leaves style" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Leaves style:\n" +"- Fancy: all faces visible\n" +"- Simple: only outer faces\n" +"- Opaque: disable transparency" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Length of a server tick (the interval at which everything is generally " +"updated),\n" +"stated in seconds.\n" +"Does not apply to sessions hosted from the client menu.\n" +"This is a lower bound, i.e. server steps may not be shorter than this, but\n" +"they are often longer." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Length of liquid waves." +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" +"- (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 reflections" +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 "Local command" +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 "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.\n" +"The 'temples' flag disables generation of desert temples. Normal dungeons " +"will appear instead." +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 generation threads" +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." +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 mapblocks for client to be kept in memory.\n" +"Note that there is an internal dynamic minimum number of blocks that\n" +"won't be deleted, depending on the current view range.\n" +"Set to -1 for no limit." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Maximum number of packets sent per send step in the low-level networking " +"code.\n" +"You generally don't need to change this, however busy servers may benefit " +"from a higher 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 client's outgoing chat queue" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Maximum size of the client's outgoing 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 "Measure time samples" +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 scan height" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Minimum dig repetition interval" +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 vertex count for mesh buffers" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mipmapping" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Miscellaneous" +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 "" +"Modifier key bind for closing your world.\n" +"Requires ESC + the selected key to work." +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 "Move backward" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Move forward" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Move left" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Move right" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Movement threshold" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mud noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mute" +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, a client connecting with this name is admin.\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 "" +"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 "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 "Number of messages a player may send per 10 seconds." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Number of threads to use for mesh generation.\n" +"Value of 0 (default) will let Luanti automatically choose the number of " +"threads." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Occlusion Culler" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Occlusion Culling" +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 chat" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Open inventory" +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 "OpenGL debug" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Optimize GUI for touchscreens" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Optional override for chat weblink color." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Other Effects" +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 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 "Place repetition interval" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Player transfer distance" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Poisson filtering" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Post Processing" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Prevent digging and placing from repeating when holding the respective " +"buttons.\n" +"Enable this when you dig or place too often by accident.\n" +"On touchscreens, this only affects digging." +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 "Prometheus listener address" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Prometheus listener address.\n" +"If Luanti is compiled with Prometheus support, this setting\n" +"enables the metrics listener for Prometheus on that address.\n" +"By default you can fetch metrics from http://127.0.0.1:30000/metrics.\n" +"An empty value disables the metrics listener." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Proportion of large caves that contain liquid." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Protocol version minimum" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Punch gesture" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Quicktune: decrement value" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Quicktune: increment value" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Quicktune: select next entry" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Quicktune: select previous entry" +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 "Radius to use when the block bounds HUD feature is set to near blocks." +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 "Random mod load order" +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 "Remember screen size" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Remote media" +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 "Return to Main Menu" +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 "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 "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.\n" +"If true, screen size is saved in screen_w and screen_h, and whether the " +"window\n" +"is maximized is stored in window_maximized.\n" +"(Autosaving window_maximized only works if compiled with SDL.)" +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" +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 "" +"Select the antialiasing method to apply.\n" +"\n" +"* None - No antialiasing (default)\n" +"\n" +"* FSAA - Hardware-provided full-screen antialiasing\n" +"A.K.A multi-sample antialiasing (MSAA)\n" +"Smoothens out block edges but does not affect the insides of textures.\n" +"\n" +"If Post Processing is disabled, changing FSAA requires a restart.\n" +"Also, if Post Processing is disabled, FSAA will not work together with\n" +"undersampling or a non-default \"3d_mode\" setting.\n" +"\n" +"* FXAA - Fast approximate antialiasing\n" +"Applies a post-processing filter to detect and smoothen high-contrast " +"edges.\n" +"Provides balance between speed and image quality.\n" +"\n" +"* SSAA - Super-sampling antialiasing\n" +"Renders higher-resolution image of the scene, then scales down to reduce\n" +"the aliasing effects. This is the slowest and the most accurate method." +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 "" +"Send names of online players to the serverlist. If disabled only the player " +"count is revealed." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Send player names to the server list" +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 anticheat configuration.\n" +"Flags are positive. Uncheck the flag to disable corresponding anticheat " +"module." +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 default tilt of Sun/Moon orbit in degrees.\n" +"Games may change orbit tilt via API.\n" +"Value of 0 means no tilt / vertical orbit." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Set the exposure compensation in EV units.\n" +"Value of 0.0 (default) means no exposure compensation.\n" +"Range: from -1 to 1.0" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Set the language. By default, the system language is used.\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 to true to enable Shadow Mapping." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Set to true to enable bloom effect.\n" +"Bright colors will bleed over the neighboring objects." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Set to true to enable volumetric lighting effect (a.k.a. \"Godrays\")." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Set to true to enable waving leaves." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Set to true to enable waving liquids (like water)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Set to true to enable waving plants." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Set to true to render debugging breakdown of the bloom effect.\n" +"In debug mode, the screen is split into 4 quadrants:\n" +"top-left - processed base image, top-right - final image\n" +"bottom-left - raw base image, bottom-right - bloom texture." +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 "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 "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 "" +"Side length of a cube of map blocks that the client will consider together\n" +"when generating meshes.\n" +"Larger values increase the utilization of the GPU by reducing the number of\n" +"draw calls, benefiting especially high-end GPUs.\n" +"Systems with a low-end GPU (or no GPU) would benefit from smaller values." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Simulate translucency when looking at foliage in the sunlight." +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 "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 "Smooth scrolling" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Smooths rotation of camera when in cinematic mode, 0 to disable. Enter " +"cinematic mode by using the key set in Controls." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Smooths rotation of camera, also called look or mouse smoothing. 0 to " +"disable." +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 clouds" +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 "Sound Extensions Blacklist" +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 the shadow map over a given number of frames.\n" +"Higher values might make shadows laggy, lower values\n" +"will consume more resources." +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 spawn point" +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, 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 "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 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 delay in milliseconds after which a touch interaction is considered a " +"long tap." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"The file path relative to your world path in which profiles will be saved to." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"The gesture for punching players/entities.\n" +"This can be overridden by games and mods.\n" +"\n" +"* Short tap\n" +"Easy to use and well-known from other games that shall not be named.\n" +"\n" +"* Long tap\n" +"Known from the classic Luanti mobile controls.\n" +"Combat is more or less impossible." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "The identifier of the joystick to use" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"The kind of digging/placing controls used.\n" +"\n" +"* Tap\n" +"Long/short tap anywhere on the screen to interact.\n" +"Interaction happens at finger position.\n" +"\n" +"* Tap with crosshair\n" +"Long/short tap anywhere on the screen to interact.\n" +"Interaction happens at crosshair position.\n" +"\n" +"* Buttons with crosshair\n" +"Use dedicated dig/place buttons to interact.\n" +"Interaction happens at crosshair position." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"The length in pixels after which a touch interaction is considered movement." +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)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"The minimum time in seconds it takes between digging nodes when holding\n" +"the dig button." +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" +"Note: A restart is required after changing this!\n" +"OpenGL is the default for desktop, and OGLES2 for Android." +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 "Threshold for long taps" +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 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 Aux1 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Toggle HUD" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Toggle Sneak key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Toggle automatic forward" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Toggle block bounds" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Toggle camera mode" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Toggle camera update" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Toggle cinematic mode" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Toggle debug info" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Toggle fog" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Toggle fullscreen" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Toggle large chat console" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Toggle pitchmove" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Toggle profiler" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Toggle unlimited view range" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Tolerance of movement cheat detector.\n" +"Increase the value if players experience stuttery movement." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Tooltip delay" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Touchscreen" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Touchscreen controls" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Touchscreen sensitivity" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Touchscreen sensitivity multiplier." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Tradeoffs for performance" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Translucent foliage" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Translucent liquids" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Transparency Sorting Distance" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Transparency Sorting Group by Buffers" +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 "" +"Type of occlusion_culler\n" +"\n" +"\"loops\" is the legacy algorithm with nested loops and O(n³) complexity\n" +"\"bfs\" is the new algorithm based on breadth-first-search and side culling\n" +"\n" +"This setting should only be changed if you have performance problems." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"URL to JSON file which provides information about the newest Luanti " +"release.\n" +"If this is empty the engine will never check for updates." +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.\n" +"Note: Undersampling is currently not supported if the \"3d_mode\" setting is " +"set\n" +"to a non-default value." +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 "Update information URL" +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 a cloud animation for the main menu background." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Use anisotropic filtering when looking at textures from an angle.\n" +"This provides a significant improvement when used together with mipmapping." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Use bilinear filtering when scaling textures." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Use mipmaps when scaling 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 raytraced occlusion culling in the new culler.\n" +"This flag enables use of raytraced occlusion culling test for\n" +"client mesh sizes smaller than 4x4x4 map blocks." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Use smooth cloud shading." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Use trilinear filtering when scaling textures.\n" +"If both bilinear and trilinear filtering are enabled, trilinear filtering\n" +"is applied." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"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 "User Interfaces" +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. Your system may still force VSync on even " +"if this is disabled." +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 "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 multiplier when the window is unfocused." +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 "Volume when unfocused" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Volumetric lighting" +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 enabled, liquid reflections are simulated." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"When enabled, the GUI is optimized to be more usable on touchscreens.\n" +"Whether this is enabled by default depends on your hardware form-factor." +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 using bilinear/trilinear filtering, low-resolution textures\n" +"can be blurred, so this option automatically upscales them to preserve\n" +"crisp pixels. This defines the minimum texture size for the upscaled " +"textures;\n" +"higher values look sharper, but require more memory.\n" +"This setting is ONLY applied if any of the mentioned filters are 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 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 the window is maximized." +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.\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)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Width component of the initial window size." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Width of the selection box lines around nodes." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Will also disable autoforward, when active." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Window maximized" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Windows systems only: Start Luanti 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 based 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/tok/luanti.po b/po/tok/luanti.po index 6bc67c814..5550ab3ea 100644 --- a/po/tok/luanti.po +++ b/po/tok/luanti.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: minetest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-07-11 19:59+0200\n" +"POT-Creation-Date: 2025-09-23 19:19+0200\n" "PO-Revision-Date: 2024-08-12 16:09+0000\n" "Last-Translator: rubenwardy \n" "Language-Team: Toki Pona \n" "Language-Team: Turkish ' to get more information, or '.help all' to list everything." msgstr "" -"Daha fazla bilgi almak için '.help ' veya her şeyi listelemek için '." -"help all' kullanın." +"Daha fazla bilgi almak için '.help ' veya her şeyi listelemek için " +"'.help all' kullanın." #: builtin/common/chatcommands.lua #, fuzzy @@ -1048,8 +1048,8 @@ msgid "" "This modpack has an explicit name given in its modpack.conf which will " "override any renaming here." msgstr "" -"Bu mod paketinin buradaki yeniden adlandırmayı geçersiz kılacak, modpack." -"conf dosyasında verilen açık bir adı var." +"Bu mod paketinin buradaki yeniden adlandırmayı geçersiz kılacak, " +"modpack.conf dosyasında verilen açık bir adı var." #: builtin/mainmenu/dlg_server_list_mods.lua #, fuzzy @@ -1246,10 +1246,6 @@ msgstr "" msgid "New" msgstr "Yeni" -#: builtin/mainmenu/tab_local.lua -msgid "No world created or selected!" -msgstr "Dünya seçilmedi ya da yaratılmadı!" - #: builtin/mainmenu/tab_local.lua msgid "Play Game" msgstr "Oyunu Oyna" @@ -1862,10 +1858,6 @@ msgstr "Profilci gizli" msgid "Profiler shown (page %d of %d)" msgstr "Profilci gösteriliyor (sayfa %d / %d)" -#: src/client/keycode.cpp -msgid "Apps" -msgstr "Uygulamalar" - #: src/client/keycode.cpp msgid "Backspace" msgstr "Backspace" @@ -1897,44 +1889,19 @@ msgid "Down Arrow" msgstr "Aşağı Ok" #: src/client/keycode.cpp -msgid "End" -msgstr "Son" +#, fuzzy +msgid "End Key" +msgstr "Menü Tuşu" #: src/client/keycode.cpp -msgid "Erase EOF" -msgstr "EOF'yi Sil" +#, fuzzy +msgid "Help Key" +msgstr "Sil Tuşu" #: src/client/keycode.cpp -msgid "Execute" -msgstr "Çalıştır" - -#: src/client/keycode.cpp -msgid "Help" -msgstr "Yardım" - -#: src/client/keycode.cpp -msgid "Home" -msgstr "Ev" - -#: src/client/keycode.cpp -msgid "IME Accept" -msgstr "IME Kabul" - -#: src/client/keycode.cpp -msgid "IME Convert" -msgstr "IME Dönüştür" - -#: src/client/keycode.cpp -msgid "IME Escape" -msgstr "IME Çıkış" - -#: src/client/keycode.cpp -msgid "IME Mode Change" -msgstr "IME Kip Değiştir" - -#: src/client/keycode.cpp -msgid "IME Nonconvert" -msgstr "IME Dönüştürme" +#, fuzzy +msgid "Home Key" +msgstr "Yakınlaştır Tuşu" #: src/client/keycode.cpp msgid "Insert" @@ -1945,8 +1912,9 @@ msgid "Left Arrow" msgstr "Sol Ok" #: src/client/keycode.cpp -msgid "Left Button" -msgstr "Sol Tuş" +#, fuzzy +msgid "Left Click" +msgstr "Sol CTRL" #: src/client/keycode.cpp msgid "Left Control" @@ -1960,18 +1928,26 @@ msgstr "Sol Menü" msgid "Left Shift" msgstr "Sol Shift" +#. ~ Name of key #: src/client/keycode.cpp msgid "Left Windows" msgstr "Sol Windows" -#. ~ Key name, common on Windows keyboards #: src/client/keycode.cpp msgid "Menu Key" msgstr "Menü Tuşu" #: src/client/keycode.cpp -msgid "Middle Button" -msgstr "Orta Tuş" +msgid "Middle Click" +msgstr "" + +#: src/client/keycode.cpp +msgid "Mouse X1" +msgstr "" + +#: src/client/keycode.cpp +msgid "Mouse X2" +msgstr "" #: src/client/keycode.cpp msgid "Num Lock" @@ -2037,10 +2013,6 @@ msgstr "Sayısal Tuş Takımı 8" msgid "Numpad 9" msgstr "Sayısal Tuş Takımı 9" -#: src/client/keycode.cpp -msgid "OEM Clear" -msgstr "OEM Temizle" - #: src/client/keycode.cpp #, fuzzy msgid "Page Down" @@ -2074,8 +2046,9 @@ msgid "Right Arrow" msgstr "Sağ Ok" #: src/client/keycode.cpp -msgid "Right Button" -msgstr "Sağ Tuş" +#, fuzzy +msgid "Right Click" +msgstr "Sağ CTRL" #: src/client/keycode.cpp msgid "Right Control" @@ -2089,6 +2062,7 @@ msgstr "Sağ Menü" msgid "Right Shift" msgstr "Sağ Shift" +#. ~ Name of key #: src/client/keycode.cpp msgid "Right Windows" msgstr "Sağ Windows" @@ -2097,47 +2071,28 @@ msgstr "Sağ Windows" msgid "Scroll Lock" msgstr "Scroll Lock" -#. ~ Key name #: src/client/keycode.cpp -msgid "Select" -msgstr "Seç" +#, fuzzy +msgid "Select Key" +msgstr "Sil Tuşu" #: src/client/keycode.cpp msgid "Shift Key" msgstr "Shift Tuşu" -#: src/client/keycode.cpp -msgid "Sleep" -msgstr "Uyku" - -#: src/client/keycode.cpp -msgid "Snapshot" -msgstr "Ekran Resmi" - #: src/client/keycode.cpp msgid "Space" msgstr "Boşluk" #: src/client/keycode.cpp -msgid "Tab" -msgstr "Tab" +#, fuzzy +msgid "Tab Key" +msgstr "Sızma tuşu" #: src/client/keycode.cpp msgid "Up Arrow" msgstr "Yukarı Ok" -#: src/client/keycode.cpp -msgid "X Button 1" -msgstr "X Düğme 1" - -#: src/client/keycode.cpp -msgid "X Button 2" -msgstr "X Düğme 2" - -#: src/client/keycode.cpp -msgid "Zoom Key" -msgstr "Yakınlaştır Tuşu" - #: src/client/minimap.cpp msgid "Minimap hidden" msgstr "Mini harita gizli" @@ -2573,12 +2528,11 @@ msgstr "Harita yığını başına zindan sayısını belirleyen 3B gürültü." msgid "" "3D support.\n" "Currently supported:\n" -"- none: no 3d output.\n" -"- anaglyph: cyan/magenta color 3d.\n" -"- interlaced: odd/even line based polarization screen support.\n" -"- topbottom: split screen top/bottom.\n" -"- sidebyside: split screen side by side.\n" -"- crossview: Cross-eyed 3d" +"- none: no 3D output\n" +"- anaglyph: cyan/magenta color 3D\n" +"- topbottom: split screen top/bottom\n" +"- sidebyside: split screen side-by-side\n" +"- crossview: cross-eyed 3D" msgstr "" "3D desteği.\n" "Şu an desteklenen:\n" @@ -2698,8 +2652,8 @@ msgstr "" "Sızma tuşu.\n" "Aynı zamanda aşağı inmek ve, aux1_descends kapalı ise, suda alçalmak için " "kullanılır.\n" -"Bakın: http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" +"Bakın: http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2967,6 +2921,17 @@ msgstr "Kamera yumuşatma" msgid "Camera smoothing in cinematic mode" msgstr "Sinematik kipte kamera yumuşatma" +#: src/settings_translation_file.cpp +msgid "Capture Tracy zones" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Capture Tracy zones with the profiler's instrumentation.\n" +"You need to build with Tracy to use this, see doc/developing/profiling.md\n" +"for details." +msgstr "" + #: src/settings_translation_file.cpp msgid "Cave noise" msgstr "Mağara gürültüsü" @@ -3516,6 +3481,10 @@ msgstr "" msgid "Developer Options" msgstr "Geliştirici Seçenekleri" +#: src/settings_translation_file.cpp +msgid "Disable if you only want to instrument with Tracy." +msgstr "" + #: src/settings_translation_file.cpp msgid "Disallow empty passwords" msgstr "Boş parolalara izin verme" @@ -5478,6 +5447,11 @@ msgstr "" msgid "Maximum users" msgstr "Maksimum kullanıcı" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Measure time samples" +msgstr "Çöl Tapınakları" + #: src/settings_translation_file.cpp msgid "Message of the day" msgstr "Günün iletisi" @@ -7623,8 +7597,8 @@ msgid "Will also disable autoforward, when active." msgstr "" "Oyuncuyu geriye hareket ettirme tuşu.\n" "Etkinken, kendiliğinden ileriyi de devre dışı kılar\n" -"Bakın: http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" +"Bakın: http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "Window maximized" @@ -7742,17 +7716,68 @@ msgstr "cURL etkileşimli zaman aşımı" msgid "cURL parallel limit" msgstr "cURL paralel sınırı" -#~ msgid "Apply specular shading to nodes." -#~ msgstr "Düğümlere speküler gölgelendirme uygulayın." +#~ msgid "Apps" +#~ msgstr "Uygulamalar" -#, fuzzy -#~ msgid "Key for taking screenshots." -#~ msgstr "Ekran yakalama biçimi." +#~ msgid "End" +#~ msgstr "Son" -#, fuzzy -#~ msgid "Key for toggling cinematic mode." -#~ msgstr "Sinematik kipte kamera yumuşatma" +#~ msgid "Erase EOF" +#~ msgstr "EOF'yi Sil" -#, fuzzy -#~ msgid "Key for toggling fullscreen mode." -#~ msgstr "Tam ekran kipi." +#~ msgid "Execute" +#~ msgstr "Çalıştır" + +#~ msgid "Help" +#~ msgstr "Yardım" + +#~ msgid "Home" +#~ msgstr "Ev" + +#~ msgid "IME Accept" +#~ msgstr "IME Kabul" + +#~ msgid "IME Convert" +#~ msgstr "IME Dönüştür" + +#~ msgid "IME Escape" +#~ msgstr "IME Çıkış" + +#~ msgid "IME Mode Change" +#~ msgstr "IME Kip Değiştir" + +#~ msgid "IME Nonconvert" +#~ msgstr "IME Dönüştürme" + +#~ msgid "Left Button" +#~ msgstr "Sol Tuş" + +#~ msgid "Middle Button" +#~ msgstr "Orta Tuş" + +#~ msgid "No world created or selected!" +#~ msgstr "Dünya seçilmedi ya da yaratılmadı!" + +#~ msgid "OEM Clear" +#~ msgstr "OEM Temizle" + +#~ msgid "Right Button" +#~ msgstr "Sağ Tuş" + +#~ msgid "Select" +#~ msgstr "Seç" + +#~ msgid "Sleep" +#~ msgstr "Uyku" + +#~ msgid "Snapshot" +#~ msgstr "Ekran Resmi" + +#~ msgid "Tab" +#~ msgstr "Tab" + +#~ msgid "X Button 1" +#~ msgstr "X Düğme 1" + +#~ msgid "X Button 2" +#~ msgstr "X Düğme 2" diff --git a/po/tt/luanti.po b/po/tt/luanti.po index db0c7e52d..89da42f1f 100644 --- a/po/tt/luanti.po +++ b/po/tt/luanti.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: minetest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-07-11 19:59+0200\n" +"POT-Creation-Date: 2025-09-23 19:19+0200\n" "PO-Revision-Date: 2023-10-29 05:22+0000\n" "Last-Translator: Timur Seber \n" "Language-Team: Tatar \n" +"POT-Creation-Date: 2025-09-23 19:19+0200\n" +"PO-Revision-Date: 2025-08-14 09:02+0000\n" +"Last-Translator: Yof \n" "Language-Team: Ukrainian \n" "Language: uk\n" @@ -96,7 +96,7 @@ msgstr "Видалити призначення клавіші" #: builtin/common/settings/components.lua msgid "Select directory" -msgstr "Виберіть каталог" +msgstr "Вибрати теку" #: builtin/common/settings/components.lua msgid "Select file" @@ -307,11 +307,11 @@ msgstr "Клієнтські моди" #: builtin/common/settings/settingtypes.lua msgid "Content: Games" -msgstr "Вміст: Ігри" +msgstr "Контент: Ігри" #: builtin/common/settings/settingtypes.lua msgid "Content: Mods" -msgstr "Вміст: Моди" +msgstr "Контент: Моди" #: builtin/common/settings/shadows_component.lua msgid "(The game will need to enable shadows as well)" @@ -364,7 +364,7 @@ msgstr "Головне меню" #: builtin/fstk/ui.lua msgid "OK" -msgstr "Добре" +msgstr "Гаразд" #: builtin/fstk/ui.lua msgid "Reconnect" @@ -581,7 +581,7 @@ msgstr "Встановити [$1]" #: builtin/mainmenu/content/dlg_package.lua msgid "Issue Tracker" -msgstr "Трекер проблем" +msgstr "Трекер помилок" #: builtin/mainmenu/content/dlg_package.lua msgid "Reviews" @@ -608,13 +608,12 @@ msgid "Website" msgstr "Сайт" #: builtin/mainmenu/content/dlg_package.lua -#, fuzzy msgid "by $1" -msgstr "$1 з $2" +msgstr "від $1" #: builtin/mainmenu/content/dlg_package.lua msgid "by $1 — $2 downloads — +$3 / $4 / -$5" -msgstr "Автор: $1 — $2 завантажень — +$3 / $4 / -$5" +msgstr "Автор: $1 — Завантажень: $2 — +$3 / $4 / -$5" #: builtin/mainmenu/content/pkgmgr.lua msgid "$1 (Enabled)" @@ -634,7 +633,7 @@ msgstr "Встановлення: неможливо знайти відпові #: builtin/mainmenu/content/pkgmgr.lua msgid "Unable to find a valid mod, modpack, or game" -msgstr "Неможливо знайти дійсний мод, пакмод або гру" +msgstr "Неможливо знайти дійсний мод, модпак чи гру" #: builtin/mainmenu/content/pkgmgr.lua msgid "Unable to install a $1 as a $2" @@ -642,14 +641,14 @@ msgstr "Не вдалося встановити $1 як $2" #: builtin/mainmenu/content/pkgmgr.lua msgid "Unable to install a $1 as a texture pack" -msgstr "Не вдалося встановити $1 як набір текстур" +msgstr "Не вдалося встановити $1 як текстури" #: builtin/mainmenu/dlg_clients_list.lua msgid "" "Players connected to\n" "$1" msgstr "" -"Гравці приєднані до\n" +"Гравці, що приєднані до\n" "$1" #: builtin/mainmenu/dlg_config_world.lua @@ -666,7 +665,7 @@ msgstr "Вимкнути все" #: builtin/mainmenu/dlg_config_world.lua msgid "Disable modpack" -msgstr "Вимкнути пакмод" +msgstr "Вимкнути модпак" #: builtin/mainmenu/dlg_config_world.lua msgid "Enable all" @@ -674,7 +673,7 @@ msgstr "Увімкнути все" #: builtin/mainmenu/dlg_config_world.lua msgid "Enable modpack" -msgstr "Увімкнути пакмод" +msgstr "Увімкнути модпак" #: builtin/mainmenu/dlg_config_world.lua msgid "" @@ -706,7 +705,7 @@ msgstr "Відсутні обов'язкові залежності" #: builtin/mainmenu/dlg_config_world.lua msgid "No modpack description provided." -msgstr "Опис пакмода відсутній." +msgstr "Опис модпака відсутній." #: builtin/mainmenu/dlg_config_world.lua msgid "No optional dependencies" @@ -918,7 +917,7 @@ msgstr "Назва світу" #: builtin/mainmenu/dlg_delete_content.lua msgid "Are you sure you want to delete \"$1\"?" -msgstr "Ви впевнені, що бажаєте видалити \"$1\"?" +msgstr "Ви впевнені, що бажаєте видалити «$1»?" #: builtin/mainmenu/dlg_delete_content.lua #: builtin/mainmenu/dlg_delete_world.lua builtin/mainmenu/tab_local.lua @@ -935,7 +934,7 @@ msgstr "pkgmgr: недійсний шлях \"$1\"" #: builtin/mainmenu/dlg_delete_world.lua msgid "Delete World \"$1\"?" -msgstr "Видалити світ \"$1\"?" +msgstr "Видалити світ «$1»?" #: builtin/mainmenu/dlg_rebind_keys.lua msgid "As a result, your keybindings may have been changed." @@ -989,7 +988,7 @@ msgstr "Паролі не збігаються" #: builtin/mainmenu/dlg_register.lua builtin/mainmenu/tab_online.lua msgid "Register" -msgstr "Зареєструвати" +msgstr "Зареєструватися" #: builtin/mainmenu/dlg_reinstall_mtg.lua msgid "Dismiss" @@ -1000,8 +999,8 @@ msgid "" "For a long time, Luanti shipped with a default game called \"Minetest " "Game\". Since version 5.8.0, Luanti ships without a default game." msgstr "" -"Довгий час, рушій Luanti встановлювався разом зі звичайною грою під назвою " -"\"Minetest Game\". З версії 5.8.0, Luanti встановлювається без звичайної гри." +"Тривалий час рушій Luanti встановлювався разом із типовою грою під назвою " +"«Minetest Game». З версії 5.8.0, Luanti встановлюється без початкової гри." #: builtin/mainmenu/dlg_reinstall_mtg.lua msgid "" @@ -1021,18 +1020,18 @@ msgstr "Перевстановити Minetest Game" #: builtin/mainmenu/dlg_rename_modpack.lua msgid "Accept" -msgstr "Прийняти" +msgstr "Застосувати" #: builtin/mainmenu/dlg_rename_modpack.lua msgid "Rename Modpack:" -msgstr "Перейменувати пакмод:" +msgstr "Перейменувати модпак:" #: builtin/mainmenu/dlg_rename_modpack.lua msgid "" "This modpack has an explicit name given in its modpack.conf which will " "override any renaming here." msgstr "" -"Цей пакмод має явну назву в modpack.conf, на що не вплине перейменування." +"Цей модпак має явну назву в modpack.conf, на що не вплине перейменування." #: builtin/mainmenu/dlg_server_list_mods.lua msgid "Expand all" @@ -1044,7 +1043,7 @@ msgstr "Групувати за префіксом" #: builtin/mainmenu/dlg_server_list_mods.lua msgid "The $1 server uses a game called $2 and the following mods:" -msgstr "Сервер $1 використовує гру під назвою $2 і такі моди:" +msgstr "Сервер $1 використовує гру $2 і такі моди:" #: builtin/mainmenu/dlg_server_list_mods.lua msgid "The $1 server uses the following mods:" @@ -1114,15 +1113,15 @@ msgstr "Основна команда" #: builtin/mainmenu/tab_about.lua msgid "Open User Data Directory" -msgstr "Відкрити папку з даними" +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" -"і набори текстур у файловому керівнику / оглядачі." +"Відкриває теку, що містить надані користувачем світи, ігри, моди,\n" +"і текстури у файловому керівнику / оглядачі." #: builtin/mainmenu/tab_about.lua msgid "Previous Contributors" @@ -1138,23 +1137,23 @@ msgstr "Ділитися зневадженням" #: builtin/mainmenu/tab_content.lua msgid "Browse online content" -msgstr "Оглянути вміст у мережі" +msgstr "Пошук контенту в мережі" #: builtin/mainmenu/tab_content.lua msgid "Browse online content [$1]" -msgstr "Пошук вмісту в мережі [$1]" +msgstr "Пошук контенту в мережі [$1]" #: builtin/mainmenu/tab_content.lua msgid "Content" -msgstr "Вміст" +msgstr "Контент" #: builtin/mainmenu/tab_content.lua msgid "Content [$1]" -msgstr "Вміст [$1]" +msgstr "Контент [$1]" #: builtin/mainmenu/tab_content.lua msgid "Disable Texture Pack" -msgstr "Вимкнути набір текстур" +msgstr "Вимкнути текстури" #: builtin/mainmenu/tab_content.lua msgid "Installed Packages:" @@ -1178,7 +1177,7 @@ msgstr "Оновлення доступно?" #: builtin/mainmenu/tab_content.lua msgid "Use Texture Pack" -msgstr "Викор. набір текстур" +msgstr "Використати текстури" #: builtin/mainmenu/tab_local.lua msgid "Announce Server" @@ -1194,7 +1193,7 @@ msgstr "Творчий режим" #: builtin/mainmenu/tab_local.lua msgid "Enable Damage" -msgstr "Пошкодження" +msgstr "Поранення" #: builtin/mainmenu/tab_local.lua msgid "Host Game" @@ -1227,13 +1226,9 @@ msgstr "" msgid "New" msgstr "Новий" -#: builtin/mainmenu/tab_local.lua -msgid "No world created or selected!" -msgstr "Світ не створено або не обрано!" - #: builtin/mainmenu/tab_local.lua msgid "Play Game" -msgstr "Грати в гру" +msgstr "Грати" #: builtin/mainmenu/tab_local.lua builtin/mainmenu/tab_online.lua msgid "Port" @@ -1241,7 +1236,7 @@ msgstr "Порт" #: builtin/mainmenu/tab_local.lua msgid "Select Mods" -msgstr "Вибір модів" +msgstr "Моди" #: builtin/mainmenu/tab_local.lua msgid "Select World:" @@ -1274,11 +1269,11 @@ msgstr "Творчий режим" #. ~ PvP = Player versus Player #: builtin/mainmenu/tab_online.lua msgid "Damage / PvP" -msgstr "Пошкодження / PvP" +msgstr "Поранення / PvP" #: builtin/mainmenu/tab_online.lua msgid "Favorites" -msgstr "Відібрані" +msgstr "Улюблені" #: builtin/mainmenu/tab_online.lua msgid "Game: $1" @@ -1294,7 +1289,7 @@ msgstr "Долучитися до гри" #: builtin/mainmenu/tab_online.lua msgid "Login" -msgstr "Логін" +msgstr "Увійти" #: builtin/mainmenu/tab_online.lua msgid "Number of mods: $1" @@ -1302,7 +1297,7 @@ msgstr "Кількість модів: $1" #: builtin/mainmenu/tab_online.lua msgid "Open server website" -msgstr "Відкрити сайт сервера" +msgstr "Відвідати вебсайт сервера" #: builtin/mainmenu/tab_online.lua msgid "Ping" @@ -1338,7 +1333,7 @@ msgstr "Оновити" #: builtin/mainmenu/tab_online.lua msgid "Remove favorite" -msgstr "Видалити з улюблених" +msgstr "Вилучити з улюблених" #: builtin/mainmenu/tab_online.lua msgid "Server Description" @@ -1359,7 +1354,7 @@ msgstr "Готово!" #: src/client/client.cpp #, c-format msgid "Failed to save screenshot to \"%s\"" -msgstr "" +msgstr "Не вдалося зберегти скріншот до «%s»" #: src/client/client.cpp msgid "Initializing nodes" @@ -1375,12 +1370,12 @@ msgstr "Завантаження текстур..." #: src/client/client.cpp msgid "Rebuilding shaders..." -msgstr "Перебудова відтінювачів..." +msgstr "Перебудова шейдерів..." #: src/client/client.cpp -#, fuzzy, c-format +#, c-format msgid "Saved screenshot to \"%s\"" -msgstr "Знімки екрана" +msgstr "Скріншот збережено до «%s»" #: src/client/clientlauncher.cpp msgid "Could not find or load game: " @@ -1830,10 +1825,6 @@ msgstr "Профайлер приховано" 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" @@ -1864,44 +1855,19 @@ msgid "Down Arrow" msgstr "Вниз" #: src/client/keycode.cpp -msgid "End" -msgstr "End" +#, fuzzy +msgid "End Key" +msgstr "Menu" #: src/client/keycode.cpp -msgid "Erase EOF" -msgstr "Стерти EOF" +#, fuzzy +msgid "Help Key" +msgstr "Delete" #: src/client/keycode.cpp -msgid "Execute" -msgstr "Виконати" - -#: src/client/keycode.cpp -msgid "Help" -msgstr "Допомога" - -#: src/client/keycode.cpp -msgid "Home" -msgstr "Home" - -#: src/client/keycode.cpp -msgid "IME Accept" -msgstr "IME Прийняти" - -#: src/client/keycode.cpp -msgid "IME Convert" -msgstr "IME Конвертувати" - -#: src/client/keycode.cpp -msgid "IME Escape" -msgstr "IME Esc" - -#: src/client/keycode.cpp -msgid "IME Mode Change" -msgstr "IME Змінити режим" - -#: src/client/keycode.cpp -msgid "IME Nonconvert" -msgstr "IME Не обернено" +#, fuzzy +msgid "Home Key" +msgstr "Zoom" #: src/client/keycode.cpp msgid "Insert" @@ -1912,8 +1878,9 @@ msgid "Left Arrow" msgstr "Вліво" #: src/client/keycode.cpp -msgid "Left Button" -msgstr "Ліва кнопка" +#, fuzzy +msgid "Left Click" +msgstr "Лівий Ctrl" #: src/client/keycode.cpp msgid "Left Control" @@ -1927,18 +1894,26 @@ msgstr "Лівий Menu" msgid "Left Shift" msgstr "Лівий Shift" +#. ~ Name of key #: src/client/keycode.cpp msgid "Left Windows" msgstr "Лівий Win" -#. ~ Key name, common on Windows keyboards #: src/client/keycode.cpp msgid "Menu Key" msgstr "Menu" #: src/client/keycode.cpp -msgid "Middle Button" -msgstr "Середня кнопка" +msgid "Middle Click" +msgstr "" + +#: src/client/keycode.cpp +msgid "Mouse X1" +msgstr "" + +#: src/client/keycode.cpp +msgid "Mouse X2" +msgstr "" #: src/client/keycode.cpp msgid "Num Lock" @@ -2004,10 +1979,6 @@ msgstr "Num 8" msgid "Numpad 9" msgstr "Num 9" -#: src/client/keycode.cpp -msgid "OEM Clear" -msgstr "Очистити OEM" - #: src/client/keycode.cpp msgid "Page Down" msgstr "Page Down" @@ -2039,8 +2010,9 @@ msgid "Right Arrow" msgstr "Вправо" #: src/client/keycode.cpp -msgid "Right Button" -msgstr "Права кнопка" +#, fuzzy +msgid "Right Click" +msgstr "Правий Ctrl" #: src/client/keycode.cpp msgid "Right Control" @@ -2054,6 +2026,7 @@ msgstr "Правий Menu" msgid "Right Shift" msgstr "Правий Shift" +#. ~ Name of key #: src/client/keycode.cpp msgid "Right Windows" msgstr "Правий Win" @@ -2062,47 +2035,28 @@ msgstr "Правий Win" msgid "Scroll Lock" msgstr "Scroll Lock" -#. ~ Key name #: src/client/keycode.cpp -msgid "Select" -msgstr "Select" +#, fuzzy +msgid "Select Key" +msgstr "Delete" #: src/client/keycode.cpp msgid "Shift Key" msgstr "Shift" -#: 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 "Tab" +#, fuzzy +msgid "Tab Key" +msgstr "Break" #: src/client/keycode.cpp msgid "Up Arrow" msgstr "Вгору" -#: src/client/keycode.cpp -msgid "X Button 1" -msgstr "Додаткова кнопка 1" - -#: src/client/keycode.cpp -msgid "X Button 2" -msgstr "Додаткова кнопка 2" - -#: src/client/keycode.cpp -msgid "Zoom Key" -msgstr "Zoom" - #: src/client/minimap.cpp msgid "Minimap hidden" msgstr "Мінімапа вимкнена" @@ -2524,15 +2478,15 @@ msgid "3D noise that determines number of dungeons per mapchunk." msgstr "3D шум що визначає кількість підземель на фрагмент мапи." #: src/settings_translation_file.cpp +#, fuzzy msgid "" "3D support.\n" "Currently supported:\n" -"- none: no 3d output.\n" -"- anaglyph: cyan/magenta color 3d.\n" -"- interlaced: odd/even line based polarization screen support.\n" -"- topbottom: split screen top/bottom.\n" -"- sidebyside: split screen side by side.\n" -"- crossview: Cross-eyed 3d" +"- none: no 3D output\n" +"- anaglyph: cyan/magenta color 3D\n" +"- topbottom: split screen top/bottom\n" +"- sidebyside: split screen side-by-side\n" +"- crossview: cross-eyed 3D" msgstr "" "Підтримка 3D.\n" "Зараз підтримуються:\n" @@ -2643,12 +2597,10 @@ msgid "Allows liquids to be translucent." msgstr "Дозволяє рідинам бути напівпрозорими." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Also used for climbing down and descending in water if aux1_descends is " "disabled." msgstr "" -"Клавіша для підкрадання.\n" "Також використовується для спуску й підйому у воді якщо aux1_descends " "вимкнено." @@ -2733,7 +2685,7 @@ msgstr "" "і працює некоректно, якщо екран або операційна система виконує\n" "додаткове згладжування або якщо кольорові канали не квантуються\n" "до 8 бітів.\n" -"З OpenGL ES згладжування працює лише якщо відтінювач підтримує високу\n" +"З OpenGL ES згладжування працює лише якщо шейдер підтримує високу\n" "точність чисел з плаваючою комою й може більше впливати на продуктивність." #: src/settings_translation_file.cpp @@ -2906,6 +2858,17 @@ msgstr "Згладжування руху камери" msgid "Camera smoothing in cinematic mode" msgstr "Згладжування руху камери у кінорежимі" +#: src/settings_translation_file.cpp +msgid "Capture Tracy zones" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Capture Tracy zones with the profiler's instrumentation.\n" +"You need to build with Tracy to use this, see doc/developing/profiling.md\n" +"for details." +msgstr "" + #: src/settings_translation_file.cpp msgid "Cave noise" msgstr "Шум печери" @@ -2924,11 +2887,11 @@ msgstr "Ширина печери" #: src/settings_translation_file.cpp msgid "Cave1 noise" -msgstr "Шум для Печера1" +msgstr "Шум Cave1" #: src/settings_translation_file.cpp msgid "Cave2 noise" -msgstr "Шум для Печера2" +msgstr "Шум Cave2" #: src/settings_translation_file.cpp msgid "Cavern limit" @@ -3085,11 +3048,11 @@ msgid "" "so see a full list at https://content.luanti.org/help/content_flags/" msgstr "" "Розділений комами перелік міток, які треба приховувати у репозиторії " -"вмісту.\n" +"контенту.\n" "\"nonfree\" використовується для приховання пакунків, що не є \"вільним " "програмним забезпеченням\"\n" "за визначенням Фонда вільного програмного забезпечення.\n" -"Ви також можете вказувати оцінки вмісту.\n" +"Ви також можете вказувати оцінки контенту.\n" "Ці мітки незалежні від версій Luanti, тому дивіться\n" "повний перелік на https://content.luanti.org/help/content_flags/" @@ -3155,7 +3118,7 @@ msgstr "З'єднує скло, якщо підтримується вузлом #: src/settings_translation_file.cpp msgid "Console alpha" -msgstr "Нерозорість консолі" +msgstr "Непрозорість консолі" #: src/settings_translation_file.cpp msgid "Console color" @@ -3167,7 +3130,7 @@ msgstr "Висота консолі" #: src/settings_translation_file.cpp msgid "Content Repository" -msgstr "Репозиторій вмісту" +msgstr "Репозиторій контенту" #: src/settings_translation_file.cpp msgid "ContentDB Flag Blacklist" @@ -3406,7 +3369,6 @@ msgid "Defines tree areas and tree density." msgstr "Визначає області й щільність дерев." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Delay between mesh updates on the client in ms. Increasing this will slow\n" "down the rate of mesh updates, which can help reduce jitter." @@ -3459,6 +3421,10 @@ msgstr "" msgid "Developer Options" msgstr "Розробницькі налаштування" +#: src/settings_translation_file.cpp +msgid "Disable if you only want to instrument with Tracy." +msgstr "" + #: src/settings_translation_file.cpp msgid "Disallow empty passwords" msgstr "Заборонити порожні паролі" @@ -3662,7 +3628,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Enable updates available indicator on content tab" -msgstr "Індикатор доступних оновлень у вкладці \"Вміст\"" +msgstr "Індикатор доступних оновлень у вкладці «Контент»" #: src/settings_translation_file.cpp msgid "" @@ -3804,8 +3770,8 @@ msgid "" "the\n" "Multiplayer Tab." msgstr "" -"Файл у client/serverlist/, що містить ваши обрані сервери, відображені у\n" -"вкладці Багатокористувацька гра." +"Файл у client/serverlist/, що містить ваші улюблені сервери, відображені у\n" +"вкладці Долучитися до гри." #: src/settings_translation_file.cpp msgid "Filler depth" @@ -4832,7 +4798,7 @@ msgstr "Найбільша кількість великих печер" #: src/settings_translation_file.cpp msgid "Large cave minimum number" -msgstr "Найменьша кількість великих печер" +msgstr "Найменша кількість великих печер" #: src/settings_translation_file.cpp msgid "Large cave proportion flooded" @@ -5050,7 +5016,7 @@ msgstr "Рівень стиск. мап для передачі мережею" #: src/settings_translation_file.cpp msgid "Map directory" -msgstr "Каталог мапи" +msgstr "Тека мапи" #: src/settings_translation_file.cpp msgid "Map generation attributes specific to Mapgen Carpathian." @@ -5395,6 +5361,11 @@ msgstr "" msgid "Maximum users" msgstr "Найбільше користувачів" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Measure time samples" +msgstr "Пустельні храми" + #: src/settings_translation_file.cpp msgid "Message of the day" msgstr "Повідомлення дня" @@ -5456,6 +5427,8 @@ msgid "" "Modifier key bind for closing your world.\n" "Requires ESC + the selected key to work." msgstr "" +"Клавіша для закриття вашого світу.\n" +"Вимагає ESC + обрана клавіша для роботи." #: src/settings_translation_file.cpp msgid "Modifies the size of the HUD elements." @@ -5632,7 +5605,6 @@ msgid "Number of messages a player may send per 10 seconds." msgstr "Кількість повідомлень, які гравець може надіслати протягом 10 секунд." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Number of threads to use for mesh generation.\n" "Value of 0 (default) will let Luanti automatically choose the number of " @@ -5704,17 +5676,16 @@ 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 "" "Path to shader directory. If no path is defined, default location will be " "used." msgstr "" -"Шлях до каталогу відтінювачів. Якщо шлях не задано, буде використано " -"звичайне місце." +"Шлях до теки шейдерів. Якщо шлях не задано, буде використано типове місце." #: src/settings_translation_file.cpp msgid "" @@ -5927,9 +5898,8 @@ msgstr "" "READ_PLAYERINFO: 32 (вимкнути виклик get_player_names з боку клієнта)" #: src/settings_translation_file.cpp -#, fuzzy msgid "Return to Main Menu" -msgstr "Вихід в головне меню" +msgstr "Повернутися до головного меню" #: src/settings_translation_file.cpp msgid "Ridge mountain spread noise" @@ -6365,7 +6335,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Shader path" -msgstr "Шлях до відтінювачів" +msgstr "Шлях до шейдерів" #: src/settings_translation_file.cpp msgid "Shadow filter quality" @@ -6631,8 +6601,8 @@ msgstr "" "островів.\n" "Вода вимкнена за замовчуванням і буде розміщена лише у тому випадку, якщо це " "значення\n" -"буде встановлено вище за \"mgv7_floatland_ymax\" - " -"\"mgv7_floatland_taper\" (початок\n" +"буде встановлено вище за \"mgv7_floatland_ymax\" - \"mgv7_floatland_taper\" " +"(початок\n" "верхнього звуження).\n" "***УВАГА, ПОТЕНЦІЙНА ЗАГРОЗА СВІТАМ І ПРОДУКТИВНОСТІ СЕРВЕРУ***:\n" "При увімкненні розміщення води висячі острови повинні бути налаштовані й " @@ -6727,7 +6697,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "The URL for the content repository" -msgstr "Адреса репозиторію вмісту" +msgstr "URL репозиторію контенту" #: src/settings_translation_file.cpp msgid "The dead zone of the joystick" @@ -7032,9 +7002,8 @@ msgid "Toggle fullscreen" msgstr "Перемкнути повноекранний режим" #: src/settings_translation_file.cpp -#, fuzzy msgid "Toggle large chat console" -msgstr "Велика консоль чату" +msgstr "Перемикнути велику консоль чату" #: src/settings_translation_file.cpp msgid "Toggle pitchmove" @@ -7045,9 +7014,8 @@ msgid "Toggle profiler" msgstr "Перемкнути профайлер" #: src/settings_translation_file.cpp -#, fuzzy msgid "Toggle unlimited view range" -msgstr "Клавіша перемкнення необмеженої видимості." +msgstr "Перемикання необмеженої видимості" #: src/settings_translation_file.cpp msgid "" @@ -7217,8 +7185,7 @@ msgid "" msgstr "" "Використовувати міп-текстурування при зміненні масштабу текстур. Може трохи " "збільшити\n" -"продуктивність, особливо при використанні набору текстур високої " -"роздільності.\n" +"продуктивність, особливо при використанні текстур високої роздільності.\n" "Гамма-корекція при зменшенні масштабу не підтримується." #: src/settings_translation_file.cpp @@ -7543,11 +7510,8 @@ msgid "Width of the selection box lines around nodes." msgstr "Товщина лінії рамки виділення навколо вузлів." #: src/settings_translation_file.cpp -#, fuzzy msgid "Will also disable autoforward, when active." -msgstr "" -"Клавіша для руху гравця назад.\n" -"Коли активовано, також відключатиме авторух." +msgstr "Коли активовано, також відключатиме авторух." #: src/settings_translation_file.cpp msgid "Window maximized" @@ -7568,7 +7532,7 @@ msgid "" "World directory (everything in the world is stored here).\n" "Not needed if starting from the main menu." msgstr "" -"Каталог світу (все в світі зберігається тут).\n" +"Тека світу (все в світі зберігається тут).\n" "Не потрібно при запуску з головного меню." #: src/settings_translation_file.cpp @@ -7584,13 +7548,13 @@ msgid "" "See also texture_min_size.\n" "Warning: This option is EXPERIMENTAL!" msgstr "" -"Текстури з вирівненням за світом можуть бути масштабовані так, щоб охватити " +"Текстури з вирівненням за світом можуть бути масштабовані так, щоб охопити " "декілька\n" "вузлів. Однак сервер може не надіслати той масштаб, який ви хочете, особливо " "якщо ви\n" -"використовуєте особливо спроектований набір текстур; з цим налаштуванням, " -"клієнт\n" -"намагається визначити масштаб автоматично, основуючись на розмірі текстури.\n" +"використовуєте особливо спроєктовані текстури; з цим налаштуванням, клієнт\n" +"намагається визначити масштаб автоматично, засновуючись на розмірі " +"текстури.\n" "Дивіться також texture_min_size.\n" "Попередження: це налаштування є ЕКСПЕРИМЕНТАЛЬНИМ!" @@ -7667,194 +7631,68 @@ msgstr "Час очікування взаємодії з cURL" msgid "cURL parallel limit" msgstr "Обмеження одночасних з'єднань cURL" -#~ msgid "Apply specular shading to nodes." -#~ msgstr "Застовувати дзеркальне затінення до вузлів." +#~ msgid "Apps" +#~ msgstr "Додатки" -#~ msgid "Key for decreasing the viewing range." -#~ msgstr "Клавіша для зменшення видимості." +#~ msgid "End" +#~ msgstr "End" -#~ msgid "Key for decreasing the volume." -#~ msgstr "Клавіша для зменшення гучності." +#~ msgid "Erase EOF" +#~ msgstr "Стерти EOF" -#~ msgid "Key for dropping the currently selected item." -#~ msgstr "Клавіша для викидання обраного предмета." +#~ msgid "Execute" +#~ msgstr "Виконати" -#~ msgid "Key for increasing the viewing range." -#~ msgstr "Клавіша для збільшення видимості." +#~ msgid "Help" +#~ msgstr "Допомога" -#~ msgid "Key for increasing the volume." -#~ msgstr "Клавіша для збільшення гучності." +#~ msgid "Home" +#~ msgstr "Home" -#~ msgid "Key for jumping." -#~ msgstr "Клавіша для стрибку." +#~ msgid "IME Accept" +#~ msgstr "IME Прийняти" -#~ msgid "Key for moving the player forward." -#~ msgstr "Клавіша для руху гравця вперед." +#~ msgid "IME Convert" +#~ msgstr "IME Конвертувати" -#~ msgid "Key for moving the player left." -#~ msgstr "Клавіша для руху гравця ліворуч." +#~ msgid "IME Escape" +#~ msgstr "IME Esc" -#~ msgid "Key for moving the player right." -#~ msgstr "Клавіша для руху гравця праворуч." +#~ msgid "IME Mode Change" +#~ msgstr "IME Змінити режим" -#~ msgid "Key for muting the game." -#~ msgstr "Клавіша для вимкнення звуку гри." +#~ msgid "IME Nonconvert" +#~ msgstr "IME Не обернено" -#~ msgid "Key for opening the chat window." -#~ msgstr "Клавіша відкриття вікна чату." +#~ msgid "Left Button" +#~ msgstr "Ліва кнопка" -#~ msgid "Key for opening the inventory." -#~ msgstr "Клавіша відкриття інвентарю." +#~ msgid "Middle Button" +#~ msgstr "Середня кнопка" -#~ msgid "Key for selecting the 11th hotbar slot." -#~ msgstr "Клавіша вибору 11-ого слоту швидкої панелі." +#~ msgid "No world created or selected!" +#~ msgstr "Світ не створено або не обрано!" -#~ msgid "Key for selecting the 12th hotbar slot." -#~ msgstr "Клавіша вибору 12-ого слоту швидкої панелі." +#~ msgid "OEM Clear" +#~ msgstr "Очистити OEM" -#~ msgid "Key for selecting the 13th hotbar slot." -#~ msgstr "Клавіша вибору 13-ого слоту швидкої панелі." +#~ msgid "Right Button" +#~ msgstr "Права кнопка" -#~ msgid "Key for selecting the 14th hotbar slot." -#~ msgstr "Клавіша вибору 14-ого слоту швидкої панелі." +#~ msgid "Select" +#~ msgstr "Обрати" -#~ msgid "Key for selecting the 15th hotbar slot." -#~ msgstr "Клавіша вибору 15-ого слоту швидкої панелі." +#~ msgid "Sleep" +#~ msgstr "Сон" -#~ msgid "Key for selecting the 16th hotbar slot." -#~ msgstr "Клавіша вибору 16-ого слоту швидкої панелі." +#~ msgid "Snapshot" +#~ msgstr "Зріз" -#~ msgid "Key for selecting the 17th hotbar slot." -#~ msgstr "Клавіша вибору 17-ого слоту швидкої панелі." +#~ msgid "Tab" +#~ msgstr "Tab" -#~ msgid "Key for selecting the 18th hotbar slot." -#~ msgstr "Клавіша вибору 18-ого слоту швидкої панелі." +#~ msgid "X Button 1" +#~ msgstr "Додаткова кнопка 1" -#~ msgid "Key for selecting the 19th hotbar slot." -#~ msgstr "Клавіша вибору 19-ого слоту швидкої панелі." - -#~ msgid "Key for selecting the 20th hotbar slot." -#~ msgstr "Клавіша вибору 20-ого слоту швидкої панелі." - -#~ msgid "Key for selecting the 21st hotbar slot." -#~ msgstr "Клавіша вибору 21-ого слоту швидкої панелі." - -#~ msgid "Key for selecting the 22nd hotbar slot." -#~ msgstr "Клавіша вибору 22-ого слоту швидкої панелі." - -#~ msgid "Key for selecting the 23rd hotbar slot." -#~ msgstr "Клавіша вибору 23-ого слоту швидкої панелі." - -#~ msgid "Key for selecting the 24th hotbar slot." -#~ msgstr "Клавіша вибору 24-ого слоту швидкої панелі." - -#~ msgid "Key for selecting the 25th hotbar slot." -#~ msgstr "Клавіша вибору 25-ого слоту швидкої панелі." - -#~ msgid "Key for selecting the 26th hotbar slot." -#~ msgstr "Клавіша вибору 26-ого слоту швидкої панелі." - -#~ msgid "Key for selecting the 27th hotbar slot." -#~ msgstr "Клавіша вибору 27-ого слоту швидкої панелі." - -#~ msgid "Key for selecting the 28th hotbar slot." -#~ msgstr "Клавіша вибору 28-ого слоту швидкої панелі." - -#~ msgid "Key for selecting the 29th hotbar slot." -#~ msgstr "Клавіша вибору 29-ого слоту швидкої панелі." - -#~ msgid "Key for selecting the 30th hotbar slot." -#~ msgstr "Клавіша вибору 30-ого слоту швидкої панелі." - -#~ msgid "Key for selecting the 31st hotbar slot." -#~ msgstr "Клавіша вибору 31-ого слоту швидкої панелі." - -#~ msgid "Key for selecting the 32nd hotbar slot." -#~ msgstr "Клавіша вибору 32-ого слоту швидкої панелі." - -#~ msgid "Key for selecting the eighth hotbar slot." -#~ msgstr "Клавіша вибору восьмого слоту швидкої панелі." - -#~ msgid "Key for selecting the fifth hotbar slot." -#~ msgstr "Клавіша вибору п'ятого слоту швидкої панелі." - -#~ msgid "Key for selecting the first hotbar slot." -#~ msgstr "Клавіша вибору першого слоту швидкої панелі." - -#~ msgid "Key for selecting the fourth hotbar slot." -#~ msgstr "Клавіша вибору четвертого слоту швидкої панелі." - -#~ msgid "Key for selecting the next item in the hotbar." -#~ msgstr "Клавіша вибору наступного предмета у швидкої панелі." - -#~ msgid "Key for selecting the ninth hotbar slot." -#~ msgstr "Клавіша вибору дев'ятого слоту швидкої панелі." - -#~ msgid "Key for selecting the previous item in the hotbar." -#~ msgstr "Клавіша вибору попереднього предмета у швидкої панелі." - -#~ msgid "Key for selecting the second hotbar slot." -#~ msgstr "Клавіша вибору другого слоту швидкої панелі." - -#~ msgid "Key for selecting the seventh hotbar slot." -#~ msgstr "Клавіша вибору сьомого слоту швидкої панелі." - -#~ msgid "Key for selecting the sixth hotbar slot." -#~ msgstr "Клавіша вибору шостого слоту швидкої панелі." - -#~ msgid "Key for selecting the tenth hotbar slot." -#~ msgstr "Клавіша вибору десятого слоту швидкої панелі." - -#~ msgid "Key for selecting the third hotbar slot." -#~ msgstr "Клавіша вибору третього слоту швидкої панелі." - -#~ msgid "Key for switching between first- and third-person camera." -#~ msgstr "Клавіша перемкнення між камерами від першої та третьої особи." - -#~ msgid "Key for taking screenshots." -#~ msgstr "Клавіша знімку екрана." - -#~ msgid "Key for toggling autoforward." -#~ msgstr "Клавіша перемкнення авторуху." - -#~ msgid "Key for toggling cinematic mode." -#~ msgstr "Клавіша перемкнення кінорежиму." - -#~ msgid "Key for toggling display of minimap." -#~ msgstr "Клавіша перемкнення показу мінімапи." - -#~ msgid "Key for toggling fast mode." -#~ msgstr "Клавіша перемкнення швидкого руху." - -#~ msgid "Key for toggling flying." -#~ msgstr "Клавіша перемкнення польоту." - -#~ msgid "Key for toggling fullscreen mode." -#~ msgstr "Клавіша перемкнення повноекранного режиму." - -#~ msgid "Key for toggling noclip mode." -#~ msgstr "Клавіша перемкнення проходу крізь стіни." - -#~ msgid "Key for toggling pitch move mode." -#~ msgstr "Клавіша перемкнення осьового польоту." - -#~ msgid "Key for toggling the display of chat." -#~ msgstr "Клавіша перемкнення показу чату." - -#~ msgid "Key for toggling the display of debug info." -#~ msgstr "Клавіша перемкнення показу інформації з налагодження." - -#~ msgid "Key for toggling the display of fog." -#~ msgstr "Клавіша перемкнення показу туману." - -#~ msgid "Key for toggling the display of the HUD." -#~ msgstr "Клавіша перемкнення показу інтерфейсу." - -#~ msgid "Key for toggling the display of the large chat console." -#~ msgstr "Клавіша перемкнення показу великої консолі чату." - -#~ msgid "Key to use view zoom when possible." -#~ msgstr "Клавіша використання наближення зору коли можливо." - -#~ msgid "Node specular" -#~ msgstr "Дзеркальне затінення вузлів" +#~ msgid "X Button 2" +#~ msgstr "Додаткова кнопка 2" diff --git a/po/vi/luanti.po b/po/vi/luanti.po index 84da18c77..32184ba37 100644 --- a/po/vi/luanti.po +++ b/po/vi/luanti.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Vietnamese (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-07-11 19:59+0200\n" +"POT-Creation-Date: 2025-09-23 19:19+0200\n" "PO-Revision-Date: 2025-05-30 05:02+0000\n" "Last-Translator: Quốc Kiệt Nguyễn Hữu \n" "Language-Team: Vietnamese ' to get more information, or '.help all' to list everything." msgstr "" -"Dùng '.help ' để có thêm thông tin về một câu lệnh hoặc dùng '." -"help all' để xem danh sách về những câu lệnh có sẵn." +"Dùng '.help ' để có thêm thông tin về một câu lệnh hoặc dùng " +"'.help all' để xem danh sách về những câu lệnh có sẵn." #: builtin/common/chatcommands.lua #, fuzzy @@ -1232,10 +1232,6 @@ msgstr "Luanti là một nền tảng cho phép bạn chơi rất nhiều trò c msgid "New" msgstr "Mới" -#: builtin/mainmenu/tab_local.lua -msgid "No world created or selected!" -msgstr "Chưa tạo hay chọn thế giới!" - #: builtin/mainmenu/tab_local.lua msgid "Play Game" msgstr "Chơi trò chơi" @@ -1837,10 +1833,6 @@ msgstr "Hồ sơ đã bị ẩn" msgid "Profiler shown (page %d of %d)" msgstr "Hồ sơ đã được hiển thị (trang thứ %d trên %d)" -#: src/client/keycode.cpp -msgid "Apps" -msgstr "Ứng dụng" - #: src/client/keycode.cpp msgid "Backspace" msgstr "Backspace" @@ -1872,44 +1864,19 @@ msgid "Down Arrow" msgstr "Mũi tên xuống" #: src/client/keycode.cpp -msgid "End" -msgstr "End" +#, fuzzy +msgid "End Key" +msgstr "Menu" #: src/client/keycode.cpp -msgid "Erase EOF" -msgstr "Xóa bỏ EOF" +#, fuzzy +msgid "Help Key" +msgstr "Phím xóa" #: src/client/keycode.cpp -msgid "Execute" -msgstr "Thực thi" - -#: src/client/keycode.cpp -msgid "Help" -msgstr "Trợ giúp" - -#: src/client/keycode.cpp -msgid "Home" -msgstr "Trang chủ" - -#: src/client/keycode.cpp -msgid "IME Accept" -msgstr "Chấp nhận IME" - -#: src/client/keycode.cpp -msgid "IME Convert" -msgstr "Chuyển đổi IME" - -#: src/client/keycode.cpp -msgid "IME Escape" -msgstr "Thoát IME" - -#: src/client/keycode.cpp -msgid "IME Mode Change" -msgstr "Thay đổi chế độ IME" - -#: src/client/keycode.cpp -msgid "IME Nonconvert" -msgstr "" +#, fuzzy +msgid "Home Key" +msgstr "Phím thu phóng" #: src/client/keycode.cpp msgid "Insert" @@ -1920,8 +1887,9 @@ msgid "Left Arrow" msgstr "Mũi tên trái" #: src/client/keycode.cpp -msgid "Left Button" -msgstr "Nút trái" +#, fuzzy +msgid "Left Click" +msgstr "Control trái" #: src/client/keycode.cpp msgid "Left Control" @@ -1935,19 +1903,27 @@ msgstr "Menu trái" msgid "Left Shift" msgstr "Shift trái" +#. ~ Name of key #: src/client/keycode.cpp msgid "Left Windows" msgstr "Windows trái" -#. ~ Key name, common on Windows keyboards #: src/client/keycode.cpp #, fuzzy msgid "Menu Key" msgstr "Menu" #: src/client/keycode.cpp -msgid "Middle Button" -msgstr "Nút giữa" +msgid "Middle Click" +msgstr "" + +#: src/client/keycode.cpp +msgid "Mouse X1" +msgstr "" + +#: src/client/keycode.cpp +msgid "Mouse X2" +msgstr "" #: src/client/keycode.cpp msgid "Num Lock" @@ -2013,10 +1989,6 @@ msgstr "8 trên b.phím số" msgid "Numpad 9" msgstr "9 trên b.phím số" -#: src/client/keycode.cpp -msgid "OEM Clear" -msgstr "" - #: src/client/keycode.cpp #, fuzzy msgid "Page Down" @@ -2050,8 +2022,9 @@ msgid "Right Arrow" msgstr "Mũi tên phải" #: src/client/keycode.cpp -msgid "Right Button" -msgstr "Nút phải" +#, fuzzy +msgid "Right Click" +msgstr "Control phải" #: src/client/keycode.cpp msgid "Right Control" @@ -2065,6 +2038,7 @@ msgstr "Menu phải" msgid "Right Shift" msgstr "Shift phải" +#. ~ Name of key #: src/client/keycode.cpp msgid "Right Windows" msgstr "Windows phải" @@ -2073,47 +2047,28 @@ msgstr "Windows phải" msgid "Scroll Lock" msgstr "Scroll Lock" -#. ~ Key name #: src/client/keycode.cpp -msgid "Select" -msgstr "Chọn" +#, fuzzy +msgid "Select Key" +msgstr "Phím xóa" #: src/client/keycode.cpp msgid "Shift Key" msgstr "Phím Shift" -#: src/client/keycode.cpp -msgid "Sleep" -msgstr "Ngủ" - -#: src/client/keycode.cpp -msgid "Snapshot" -msgstr "Ảnh chụp nhanh" - #: src/client/keycode.cpp msgid "Space" msgstr "Phím cách" #: src/client/keycode.cpp -msgid "Tab" -msgstr "Tab" +#, fuzzy +msgid "Tab Key" +msgstr "Phím nghỉ" #: src/client/keycode.cpp msgid "Up Arrow" msgstr "Mũi tên lên" -#: src/client/keycode.cpp -msgid "X Button 1" -msgstr "Nút X 1" - -#: src/client/keycode.cpp -msgid "X Button 2" -msgstr "Nút X 2" - -#: src/client/keycode.cpp -msgid "Zoom Key" -msgstr "Phím thu phóng" - #: src/client/minimap.cpp msgid "Minimap hidden" msgstr "Ẩn Minimap" @@ -2517,12 +2472,11 @@ msgstr "" msgid "" "3D support.\n" "Currently supported:\n" -"- none: no 3d output.\n" -"- anaglyph: cyan/magenta color 3d.\n" -"- interlaced: odd/even line based polarization screen support.\n" -"- topbottom: split screen top/bottom.\n" -"- sidebyside: split screen side by side.\n" -"- crossview: Cross-eyed 3d" +"- none: no 3D output\n" +"- anaglyph: cyan/magenta color 3D\n" +"- topbottom: split screen top/bottom\n" +"- sidebyside: split screen side-by-side\n" +"- crossview: cross-eyed 3D" msgstr "" #: src/settings_translation_file.cpp @@ -2853,6 +2807,17 @@ msgstr "Máy ảnh mượt mà" msgid "Camera smoothing in cinematic mode" msgstr "Máy ảnh mượt mà trong chế độ điện ảnh" +#: src/settings_translation_file.cpp +msgid "Capture Tracy zones" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Capture Tracy zones with the profiler's instrumentation.\n" +"You need to build with Tracy to use this, see doc/developing/profiling.md\n" +"for details." +msgstr "" + #: src/settings_translation_file.cpp msgid "Cave noise" msgstr "Nhiễu hang động" @@ -3352,6 +3317,10 @@ msgstr "" msgid "Developer Options" msgstr "Tùy chọn nhà phát triển" +#: src/settings_translation_file.cpp +msgid "Disable if you only want to instrument with Tracy." +msgstr "" + #: src/settings_translation_file.cpp msgid "Disallow empty passwords" msgstr "Không cho phép mật khẩu trống" @@ -5060,6 +5029,11 @@ msgstr "" msgid "Maximum users" msgstr "" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Measure time samples" +msgstr "Đền sa mạc" + #: src/settings_translation_file.cpp msgid "Message of the day" msgstr "" @@ -6967,5 +6941,62 @@ msgstr "Hết thời gian tương tác với cURL" msgid "cURL parallel limit" msgstr "Gặp giới hạn số lượng tệp tải xuống trong cURL" -#~ msgid "Key for toggling cinematic mode." -#~ msgstr "Phím bật chế độ điện ảnh." +#~ msgid "Apps" +#~ msgstr "Ứng dụng" + +#~ msgid "End" +#~ msgstr "End" + +#~ msgid "Erase EOF" +#~ msgstr "Xóa bỏ EOF" + +#~ msgid "Execute" +#~ msgstr "Thực thi" + +#~ msgid "Help" +#~ msgstr "Trợ giúp" + +#~ msgid "Home" +#~ msgstr "Trang chủ" + +#~ msgid "IME Accept" +#~ msgstr "Chấp nhận IME" + +#~ msgid "IME Convert" +#~ msgstr "Chuyển đổi IME" + +#~ msgid "IME Escape" +#~ msgstr "Thoát IME" + +#~ msgid "IME Mode Change" +#~ msgstr "Thay đổi chế độ IME" + +#~ msgid "Left Button" +#~ msgstr "Nút trái" + +#~ msgid "Middle Button" +#~ msgstr "Nút giữa" + +#~ msgid "No world created or selected!" +#~ msgstr "Chưa tạo hay chọn thế giới!" + +#~ msgid "Right Button" +#~ msgstr "Nút phải" + +#~ msgid "Select" +#~ msgstr "Chọn" + +#~ msgid "Sleep" +#~ msgstr "Ngủ" + +#~ msgid "Snapshot" +#~ msgstr "Ảnh chụp nhanh" + +#~ msgid "Tab" +#~ msgstr "Tab" + +#~ msgid "X Button 1" +#~ msgstr "Nút X 1" + +#~ msgid "X Button 2" +#~ msgstr "Nút X 2" diff --git a/po/zh_CN/luanti.po b/po/zh_CN/luanti.po index bff3c6f1a..c72e10e41 100644 --- a/po/zh_CN/luanti.po +++ b/po/zh_CN/luanti.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: Chinese (Simplified) (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-07-11 19:59+0200\n" -"PO-Revision-Date: 2025-06-08 13:07+0000\n" +"POT-Creation-Date: 2025-09-23 19:19+0200\n" +"PO-Revision-Date: 2025-08-09 01:02+0000\n" "Last-Translator: maxchen32 \n" "Language-Team: Chinese (Simplified Han script) \n" @@ -12,7 +12,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Weblate 5.12-dev\n" +"X-Generator: Weblate 5.13-dev\n" #: builtin/client/chatcommands.lua msgid "Clear the out chat queue" @@ -604,9 +604,8 @@ msgid "Website" msgstr "网站" #: builtin/mainmenu/content/dlg_package.lua -#, fuzzy msgid "by $1" -msgstr "$1 作者: $2" +msgstr "作者:$1" #: builtin/mainmenu/content/dlg_package.lua msgid "by $1 — $2 downloads — +$3 / $4 / -$5" @@ -1211,10 +1210,6 @@ msgstr "Luanti 是一方游戏创作平台,可让你游玩各类游戏。" msgid "New" msgstr "新建" -#: builtin/mainmenu/tab_local.lua -msgid "No world created or selected!" -msgstr "未创建或选择世界!" - #: builtin/mainmenu/tab_local.lua msgid "Play Game" msgstr "开始游戏" @@ -1343,7 +1338,7 @@ msgstr "完成!" #: src/client/client.cpp #, c-format msgid "Failed to save screenshot to \"%s\"" -msgstr "" +msgstr "无法将屏幕截图保存到“%s”" #: src/client/client.cpp msgid "Initializing nodes" @@ -1362,9 +1357,9 @@ msgid "Rebuilding shaders..." msgstr "重建着色器..." #: src/client/client.cpp -#, fuzzy, c-format +#, c-format msgid "Saved screenshot to \"%s\"" -msgstr "屏幕截图" +msgstr "已将屏幕截图保存到“%s”" #: src/client/clientlauncher.cpp msgid "Could not find or load game: " @@ -1429,15 +1424,15 @@ msgstr "自动前进已启用" #: src/client/game.cpp msgid "Block bounds hidden" -msgstr "已隐藏方块边界" +msgstr "隐藏区块边界" #: src/client/game.cpp msgid "Block bounds shown for current block" -msgstr "已为当前方块描边" +msgstr "显示当前区块的边界" #: src/client/game.cpp msgid "Block bounds shown for nearby blocks" -msgstr "已为周围方块描边" +msgstr "显示周围区块的边界" #: src/client/game.cpp msgid "Bounding boxes shown" @@ -1814,10 +1809,6 @@ msgstr "性能分析图已隐藏" msgid "Profiler shown (page %d of %d)" msgstr "性能分析图已显示 (第 %d 页 共 %d 页)" -#: src/client/keycode.cpp -msgid "Apps" -msgstr "应用" - #: src/client/keycode.cpp msgid "Backspace" msgstr "退格" @@ -1848,44 +1839,19 @@ msgid "Down Arrow" msgstr "⇩" #: src/client/keycode.cpp -msgid "End" -msgstr "End键" +#, fuzzy +msgid "End Key" +msgstr "菜单键" #: src/client/keycode.cpp -msgid "Erase EOF" -msgstr "擦除EOF键" +#, fuzzy +msgid "Help Key" +msgstr "删除键" #: src/client/keycode.cpp -msgid "Execute" -msgstr "执行" - -#: src/client/keycode.cpp -msgid "Help" -msgstr "帮助" - -#: src/client/keycode.cpp -msgid "Home" -msgstr "Home键" - -#: src/client/keycode.cpp -msgid "IME Accept" -msgstr "IME接受" - -#: src/client/keycode.cpp -msgid "IME Convert" -msgstr "IME转换" - -#: src/client/keycode.cpp -msgid "IME Escape" -msgstr "IME脱离" - -#: src/client/keycode.cpp -msgid "IME Mode Change" -msgstr "IME模式更改" - -#: src/client/keycode.cpp -msgid "IME Nonconvert" -msgstr "IME无转换" +#, fuzzy +msgid "Home Key" +msgstr "缩放" #: src/client/keycode.cpp msgid "Insert" @@ -1896,8 +1862,9 @@ msgid "Left Arrow" msgstr "⇦" #: src/client/keycode.cpp -msgid "Left Button" -msgstr "左键" +#, fuzzy +msgid "Left Click" +msgstr "左Control键" #: src/client/keycode.cpp msgid "Left Control" @@ -1911,18 +1878,26 @@ msgstr "左菜单键" msgid "Left Shift" msgstr "左Shift键" +#. ~ Name of key #: src/client/keycode.cpp msgid "Left Windows" msgstr "左Windows键" -#. ~ Key name, common on Windows keyboards #: src/client/keycode.cpp msgid "Menu Key" msgstr "菜单键" #: src/client/keycode.cpp -msgid "Middle Button" -msgstr "中键" +msgid "Middle Click" +msgstr "" + +#: src/client/keycode.cpp +msgid "Mouse X1" +msgstr "" + +#: src/client/keycode.cpp +msgid "Mouse X2" +msgstr "" #: src/client/keycode.cpp msgid "Num Lock" @@ -1988,10 +1963,6 @@ msgstr "小键盘8" msgid "Numpad 9" msgstr "小键盘9" -#: src/client/keycode.cpp -msgid "OEM Clear" -msgstr "OEM Clear键" - #: src/client/keycode.cpp msgid "Page Down" msgstr "下一页" @@ -2023,8 +1994,9 @@ msgid "Right Arrow" msgstr "⇨" #: src/client/keycode.cpp -msgid "Right Button" -msgstr "右键" +#, fuzzy +msgid "Right Click" +msgstr "右Control键" #: src/client/keycode.cpp msgid "Right Control" @@ -2038,6 +2010,7 @@ msgstr "右菜单键" msgid "Right Shift" msgstr "右Shift键" +#. ~ Name of key #: src/client/keycode.cpp msgid "Right Windows" msgstr "右Windows键" @@ -2046,47 +2019,28 @@ msgstr "右Windows键" msgid "Scroll Lock" msgstr "Scroll Lock键" -#. ~ Key name #: src/client/keycode.cpp -msgid "Select" -msgstr "选择键" +#, fuzzy +msgid "Select Key" +msgstr "删除键" #: src/client/keycode.cpp msgid "Shift Key" msgstr "Shift键" -#: 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 "Tab键" +#, fuzzy +msgid "Tab Key" +msgstr "取消键" #: src/client/keycode.cpp msgid "Up Arrow" msgstr "⇧" -#: src/client/keycode.cpp -msgid "X Button 1" -msgstr "X键1" - -#: src/client/keycode.cpp -msgid "X Button 2" -msgstr "X键2" - -#: src/client/keycode.cpp -msgid "Zoom Key" -msgstr "缩放" - #: src/client/minimap.cpp msgid "Minimap hidden" msgstr "小地图已隐藏" @@ -2498,15 +2452,15 @@ msgid "3D noise that determines number of dungeons per mapchunk." msgstr "确定每个地图块的地牢数量的3D噪声。" #: src/settings_translation_file.cpp +#, fuzzy msgid "" "3D support.\n" "Currently supported:\n" -"- none: no 3d output.\n" -"- anaglyph: cyan/magenta color 3d.\n" -"- interlaced: odd/even line based polarization screen support.\n" -"- topbottom: split screen top/bottom.\n" -"- sidebyside: split screen side by side.\n" -"- crossview: Cross-eyed 3d" +"- none: no 3D output\n" +"- anaglyph: cyan/magenta color 3D\n" +"- topbottom: split screen top/bottom\n" +"- sidebyside: split screen side-by-side\n" +"- crossview: cross-eyed 3D" msgstr "" "3D 支持。\n" "目前已支持:\n" @@ -2611,13 +2565,10 @@ msgid "Allows liquids to be translucent." msgstr "允许液体呈现半透明效果。" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Also used for climbing down and descending in water if aux1_descends is " "disabled." -msgstr "" -"潜行(下蹲)键。\n" -"若aux1_descends禁用,也可用于向下攀爬、在水中向下游。" +msgstr "若aux1_descends禁用,也可用于向下攀爬或在水中向下游。" #: src/settings_translation_file.cpp msgid "" @@ -2736,7 +2687,7 @@ msgstr "" "有时在陆地上也不会呈现)\n" "将其设置为大于 max_block_send_distance 的值\n" "将禁用此优化。\n" -"以 MapBlocks(16 个节点)为单位。" +"以 MapBlocks(16 个方块)为单位。" #: src/settings_translation_file.cpp msgid "" @@ -2871,6 +2822,17 @@ msgstr "镜头平滑" msgid "Camera smoothing in cinematic mode" msgstr "电影模式中的镜头平滑" +#: src/settings_translation_file.cpp +msgid "Capture Tracy zones" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Capture Tracy zones with the profiler's instrumentation.\n" +"You need to build with Tracy to use this, see doc/developing/profiling.md\n" +"for details." +msgstr "" + #: src/settings_translation_file.cpp msgid "Cave noise" msgstr "洞穴噪声" @@ -3407,6 +3369,10 @@ msgstr "" msgid "Developer Options" msgstr "开发者选项" +#: src/settings_translation_file.cpp +msgid "Disable if you only want to instrument with Tracy." +msgstr "" + #: src/settings_translation_file.cpp msgid "Disallow empty passwords" msgstr "禁止使用空密码" @@ -3570,7 +3536,7 @@ msgstr "启用 mod 安全" #: src/settings_translation_file.cpp msgid "Enable mouse wheel (scroll) for item selection in hotbar." -msgstr "启用鼠标滚轮(滚动),以便在热栏中选择项目。" +msgstr "启用鼠标滚轮(滚动),以便在快捷栏中选择项目。" #: src/settings_translation_file.cpp msgid "Enable random mod loading (mainly used for testing)." @@ -3658,8 +3624,9 @@ msgid "" "\"auto\" means that the touchscreen controls will be enabled and disabled\n" "automatically depending on the last used input method." msgstr "" -"启用触摸屏控制,允许您通过触摸屏玩游戏。\n" -"“自动”意味着触摸屏控件将根据上次使用的输入方法自动启用和禁用。" +"启用触摸屏控制,让您可以通过触摸屏玩游戏。\n" +"“自动”意味着触摸屏控件将根据上次使用的输入方法\n" +"自动启用和禁用。" #: src/settings_translation_file.cpp msgid "" @@ -3777,8 +3744,8 @@ msgid "" "Fixes the position of virtual joystick.\n" "If disabled, virtual joystick will center to first-touch's position." msgstr "" -"(Android)修复虚拟操纵杆的位置。\n" -"如果禁用,虚拟操纵杆将居中至第一次触摸的位置。" +"固定虚拟摇杆的位置。\n" +"如果禁用,虚拟摇杆将以第一次触摸时的位置为中心。" #: src/settings_translation_file.cpp msgid "Floatland density" @@ -4695,11 +4662,11 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Key for switching to the next entry in Quicktune." -msgstr "" +msgstr "用于在 Quicktune 中选择下一个变量的按键。" #: src/settings_translation_file.cpp msgid "Key for switching to the previous entry in Quicktune." -msgstr "" +msgstr "用于在 Quicktune 中选择上一个变量的按键。" #: src/settings_translation_file.cpp msgid "Key for toggling the camera update. Only usable with 'debug' privilege." @@ -5294,6 +5261,11 @@ msgstr "交互式请求(例如服务器列表获取)可能需要的最长时 msgid "Maximum users" msgstr "最大用户数" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Measure time samples" +msgstr "沙漠神庙" + #: src/settings_translation_file.cpp msgid "Message of the day" msgstr "今日消息" @@ -5351,10 +5323,13 @@ msgid "Mod channels" msgstr "mod频道" #: src/settings_translation_file.cpp +#, fuzzy msgid "" "Modifier key bind for closing your world.\n" "Requires ESC + the selected key to work." msgstr "" +"用于退出世界的修饰键。\n" +"玩家需要按下这个键和 Esc 键才可以退出世界。" #: src/settings_translation_file.cpp msgid "Modifies the size of the HUD elements." @@ -5541,11 +5516,11 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Occlusion Culler" -msgstr "摔落保护" +msgstr "遮挡剔除器" #: src/settings_translation_file.cpp msgid "Occlusion Culling" -msgstr "服务器端遮挡删除" +msgstr "遮挡剔除" #: src/settings_translation_file.cpp msgid "" @@ -5727,11 +5702,11 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Quicktune: select next entry" -msgstr "" +msgstr "Quicktune:选择下一项" #: src/settings_translation_file.cpp msgid "Quicktune: select previous entry" -msgstr "" +msgstr "Quicktune:选择上一项" #: src/settings_translation_file.cpp msgid "" @@ -5815,9 +5790,8 @@ msgstr "" "READ_PLAYERINFO:32(禁止客户端调用 get_player_names)" #: src/settings_translation_file.cpp -#, fuzzy msgid "Return to Main Menu" -msgstr "退出至主菜单" +msgstr "返回到主菜单" #: src/settings_translation_file.cpp msgid "Ridge mountain spread noise" @@ -6213,7 +6187,7 @@ msgstr "设置为真以启用飘动树叶。" #: src/settings_translation_file.cpp msgid "Set to true to enable waving liquids (like water)." -msgstr "设置为真以启用摇动流体(例如水)。" +msgstr "设置为真以启用波动流体(例如水)。" #: src/settings_translation_file.cpp msgid "Set to true to enable waving plants." @@ -6782,7 +6756,7 @@ msgid "" "the place button." msgstr "" "按住放置按钮时,\n" -"会重复放置方块。" +"重复放置方块所需的时间(秒)。" #: src/settings_translation_file.cpp msgid "The type of joystick" @@ -6896,9 +6870,8 @@ msgid "Toggle profiler" msgstr "显示/隐藏性能分析信息" #: src/settings_translation_file.cpp -#, fuzzy msgid "Toggle unlimited view range" -msgstr "用于启用/禁用无限视野的按键。" +msgstr "启用/禁用无限视野" #: src/settings_translation_file.cpp msgid "" @@ -6926,7 +6899,7 @@ msgstr "灵敏度(触摸屏)" #: src/settings_translation_file.cpp msgid "Touchscreen sensitivity multiplier." -msgstr "触摸屏灵敏度倍增器." +msgstr "触摸屏灵敏度倍数。" #: src/settings_translation_file.cpp msgid "Tradeoffs for performance" @@ -6980,7 +6953,7 @@ msgid "" "\n" "This setting should only be changed if you have performance problems." msgstr "" -"闭塞剔除器类型\n" +"遮挡剔除器类型\n" "\n" "\"loops \"是传统算法,带有嵌套循环,复杂度为 O(n³)\n" "\"bfs \"是基于广度优先搜索和边剔除的新算法\n" @@ -7015,11 +6988,12 @@ msgid "" "set\n" "to a non-default value." msgstr "" -"下采样类似于使用较低的屏幕分辨率,但是它\n" +"下采样类似于使用较低的屏幕分辨率,但是\n" "仅用于游戏世界渲染中,保持GUI完整。\n" -"这会在性能上带来显著提升,代价是图像细节较少。\n" -"较高的值会导致图像不太清晰。\n" -"注意:当前如果“3D模式”设置为非默认值,则暂时不支持下采样。" +"这样会显著提升性能,代价是图像细节减少。\n" +"较高的值会使画面不太清晰。\n" +"注意:如果“3D模式”设置为非默认值,\n" +"则暂时不支持下采样。" #: src/settings_translation_file.cpp msgid "Unlimited player transfer distance" @@ -7254,7 +7228,7 @@ msgstr "摇动节点" #: src/settings_translation_file.cpp msgid "Waving leaves" -msgstr "摇动树叶" +msgstr "飘动树叶" #: src/settings_translation_file.cpp msgid "Waving liquids" @@ -7326,8 +7300,8 @@ msgid "" "Whether name tag backgrounds should be shown by default.\n" "Mods may still set a background." msgstr "" -"无论默认情况下应显示名称标签背景.\n" -"模组都可能仍然设置一个背景." +"是否默认显示名称标签背景。\n" +"Mod可能仍会设置背景。" #: src/settings_translation_file.cpp msgid "" @@ -7339,7 +7313,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Whether the window is maximized." -msgstr "这个窗口是否会被放大." +msgstr "是否最大化窗口。" #: src/settings_translation_file.cpp msgid "" @@ -7385,7 +7359,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Window maximized" -msgstr "窗口放大" +msgstr "窗口最大化" #: src/settings_translation_file.cpp msgid "" @@ -7494,194 +7468,68 @@ msgstr "cURL 超时" msgid "cURL parallel limit" msgstr "cURL 并发限制" -#~ msgid "Apply specular shading to nodes." -#~ msgstr "对节点应用高光阴影。" +#~ msgid "Apps" +#~ msgstr "应用" -#~ msgid "Key for decreasing the viewing range." -#~ msgstr "用于缩小水平视野范围的按键。" +#~ msgid "End" +#~ msgstr "End键" -#~ msgid "Key for decreasing the volume." -#~ msgstr "减小音量的按键。" +#~ msgid "Erase EOF" +#~ msgstr "擦除EOF键" -#~ msgid "Key for dropping the currently selected item." -#~ msgstr "丢弃手中物品的按键。" +#~ msgid "Execute" +#~ msgstr "执行" -#~ msgid "Key for increasing the viewing range." -#~ msgstr "用于扩大水平视野范围的按键。" +#~ msgid "Help" +#~ msgstr "帮助" -#~ msgid "Key for increasing the volume." -#~ msgstr "增大音量的按键。" +#~ msgid "Home" +#~ msgstr "Home键" -#~ msgid "Key for jumping." -#~ msgstr "用于跳跃的按键。" +#~ msgid "IME Accept" +#~ msgstr "IME接受" -#~ msgid "Key for moving the player forward." -#~ msgstr "向前移动玩家的按键。" +#~ msgid "IME Convert" +#~ msgstr "IME转换" -#~ msgid "Key for moving the player left." -#~ msgstr "向左移动玩家的按键。" +#~ msgid "IME Escape" +#~ msgstr "IME脱离" -#~ msgid "Key for moving the player right." -#~ msgstr "向右移动玩家的按键。" +#~ msgid "IME Mode Change" +#~ msgstr "IME模式更改" -#~ msgid "Key for muting the game." -#~ msgstr "将游戏静音的按键。" +#~ msgid "IME Nonconvert" +#~ msgstr "IME无转换" -#~ msgid "Key for opening the chat window." -#~ msgstr "打开聊天窗口的按键。" +#~ msgid "Left Button" +#~ msgstr "左键" -#~ msgid "Key for opening the inventory." -#~ msgstr "用于打开物品栏的按键。" +#~ msgid "Middle Button" +#~ msgstr "中键" -#~ msgid "Key for selecting the 11th hotbar slot." -#~ msgstr "选中快捷栏第11项的按键。" +#~ msgid "No world created or selected!" +#~ msgstr "未创建或选择世界!" -#~ msgid "Key for selecting the 12th hotbar slot." -#~ msgstr "选中快捷栏第12项的按键。" +#~ msgid "OEM Clear" +#~ msgstr "OEM Clear键" -#~ msgid "Key for selecting the 13th hotbar slot." -#~ msgstr "选中快捷栏第13项的按键。" +#~ msgid "Right Button" +#~ msgstr "右键" -#~ msgid "Key for selecting the 14th hotbar slot." -#~ msgstr "选中快捷栏第14项的按键。" +#~ msgid "Select" +#~ msgstr "选择键" -#~ msgid "Key for selecting the 15th hotbar slot." -#~ msgstr "选中快捷栏第15项的按键。" +#~ msgid "Sleep" +#~ msgstr "睡眠" -#~ msgid "Key for selecting the 16th hotbar slot." -#~ msgstr "选中快捷栏第16项的按键。" +#~ msgid "Snapshot" +#~ msgstr "快照" -#~ msgid "Key for selecting the 17th hotbar slot." -#~ msgstr "选中快捷栏第17项的按键。" +#~ msgid "Tab" +#~ msgstr "Tab键" -#~ msgid "Key for selecting the 18th hotbar slot." -#~ msgstr "选中快捷栏第18项的按键。" +#~ msgid "X Button 1" +#~ msgstr "X键1" -#~ msgid "Key for selecting the 19th hotbar slot." -#~ msgstr "选中快捷栏第19项的按键。" - -#~ msgid "Key for selecting the 20th hotbar slot." -#~ msgstr "选中快捷栏第20项的按键。" - -#~ msgid "Key for selecting the 21st hotbar slot." -#~ msgstr "选中快捷栏第21项的按键。" - -#~ msgid "Key for selecting the 22nd hotbar slot." -#~ msgstr "选中快捷栏第22项的按键。" - -#~ msgid "Key for selecting the 23rd hotbar slot." -#~ msgstr "选中快捷栏第23项的按键。" - -#~ msgid "Key for selecting the 24th hotbar slot." -#~ msgstr "选中快捷栏第24项的按键。" - -#~ msgid "Key for selecting the 25th hotbar slot." -#~ msgstr "选中快捷栏第25项的按键。" - -#~ msgid "Key for selecting the 26th hotbar slot." -#~ msgstr "选中快捷栏第26项的按键。" - -#~ msgid "Key for selecting the 27th hotbar slot." -#~ msgstr "选中快捷栏第27项的按键。" - -#~ msgid "Key for selecting the 28th hotbar slot." -#~ msgstr "选中快捷栏第28项的按键。" - -#~ msgid "Key for selecting the 29th hotbar slot." -#~ msgstr "选中快捷栏第29项的按键。" - -#~ msgid "Key for selecting the 30th hotbar slot." -#~ msgstr "选中快捷栏第30项的按键。" - -#~ msgid "Key for selecting the 31st hotbar slot." -#~ msgstr "选中快捷栏第31项的按键。" - -#~ msgid "Key for selecting the 32nd hotbar slot." -#~ msgstr "选中快捷栏第32项的按键。" - -#~ msgid "Key for selecting the eighth hotbar slot." -#~ msgstr "选中快捷栏第8项的按键。" - -#~ msgid "Key for selecting the fifth hotbar slot." -#~ msgstr "选中快捷栏第5项的按键。" - -#~ msgid "Key for selecting the first hotbar slot." -#~ msgstr "选中快捷栏第1项的按键。" - -#~ msgid "Key for selecting the fourth hotbar slot." -#~ msgstr "选中快捷栏第4项的按键。" - -#~ msgid "Key for selecting the next item in the hotbar." -#~ msgstr "选中快捷栏下一项的按键。" - -#~ msgid "Key for selecting the ninth hotbar slot." -#~ msgstr "选中快捷栏第9项的按键。" - -#~ msgid "Key for selecting the previous item in the hotbar." -#~ msgstr "选中快捷栏上一项的按键。" - -#~ msgid "Key for selecting the second hotbar slot." -#~ msgstr "选中快捷栏第2项的按键。" - -#~ msgid "Key for selecting the seventh hotbar slot." -#~ msgstr "选中快捷栏第7项的按键。" - -#~ msgid "Key for selecting the sixth hotbar slot." -#~ msgstr "选中快捷栏第6项的按键。" - -#~ msgid "Key for selecting the tenth hotbar slot." -#~ msgstr "选中快捷栏第10项的按键。" - -#~ msgid "Key for selecting the third hotbar slot." -#~ msgstr "选中快捷栏第3项的按键。" - -#~ msgid "Key for switching between first- and third-person camera." -#~ msgstr "切换第一人称和第三人称视角的按键。" - -#~ msgid "Key for taking screenshots." -#~ msgstr "用于屏幕截图的按键。" - -#~ msgid "Key for toggling autoforward." -#~ msgstr "启用/禁用自动前进的按键。" - -#~ msgid "Key for toggling cinematic mode." -#~ msgstr "用于切换电影模式(镜头平滑)的按键。" - -#~ msgid "Key for toggling display of minimap." -#~ msgstr "显示/隐藏小地图的按键。" - -#~ msgid "Key for toggling fast mode." -#~ msgstr "启用/禁用快速模式的按键。" - -#~ msgid "Key for toggling flying." -#~ msgstr "启用/禁用飞行模式的按键。" - -#~ msgid "Key for toggling fullscreen mode." -#~ msgstr "用于切换全屏模式的按键。" - -#~ msgid "Key for toggling noclip mode." -#~ msgstr "启用/禁用穿墙模式的按键。" - -#~ msgid "Key for toggling pitch move mode." -#~ msgstr "启用/禁用俯仰移动模式的按键。" - -#~ msgid "Key for toggling the display of chat." -#~ msgstr "启用/禁用聊天显示的按键。" - -#~ msgid "Key for toggling the display of debug info." -#~ msgstr "显示/隐藏调试信息的按键。" - -#~ msgid "Key for toggling the display of fog." -#~ msgstr "启用/禁用雾气显示的按键。" - -#~ msgid "Key for toggling the display of the HUD." -#~ msgstr "显示/隐藏HUD的按键。" - -#~ msgid "Key for toggling the display of the large chat console." -#~ msgstr "显示/隐藏大型聊天控制台的按键。" - -#~ msgid "Key to use view zoom when possible." -#~ msgstr "视距缩放可用时使用的按键。" - -#~ msgid "Node specular" -#~ msgstr "节点高光" +#~ msgid "X Button 2" +#~ msgstr "X键2" diff --git a/po/zh_TW/luanti.po b/po/zh_TW/luanti.po index 41d76079d..5e2700bbe 100644 --- a/po/zh_TW/luanti.po +++ b/po/zh_TW/luanti.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Chinese (Traditional) (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-07-11 19:59+0200\n" +"POT-Creation-Date: 2025-09-23 19:19+0200\n" "PO-Revision-Date: 2025-01-16 13:00+0000\n" "Last-Translator: reimu105 \n" "Language-Team: Chinese (Traditional Han script) diff --git a/src/client/CMakeLists.txt b/src/client/CMakeLists.txt index 602845960..62d9c1999 100644 --- a/src/client/CMakeLists.txt +++ b/src/client/CMakeLists.txt @@ -36,7 +36,6 @@ set(client_SRCS ${CMAKE_CURRENT_SOURCE_DIR}/render/anaglyph.cpp ${CMAKE_CURRENT_SOURCE_DIR}/render/core.cpp ${CMAKE_CURRENT_SOURCE_DIR}/render/factory.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/render/interlaced.cpp ${CMAKE_CURRENT_SOURCE_DIR}/render/plain.cpp ${CMAKE_CURRENT_SOURCE_DIR}/render/sidebyside.cpp ${CMAKE_CURRENT_SOURCE_DIR}/render/stereo.cpp diff --git a/src/client/camera.cpp b/src/client/camera.cpp index 1422c1102..4a469d4d5 100644 --- a/src/client/camera.cpp +++ b/src/client/camera.cpp @@ -677,66 +677,91 @@ void Camera::drawNametags() core::matrix4 trans = m_cameranode->getProjectionMatrix(); trans *= m_cameranode->getViewMatrix(); - gui::IGUIFont *font = g_fontengine->getFont(); + // This isn't the actual size, just a placeholder so we can easily apply + // the user's font size preference... + const u32 default_font_size = 16; + // ...by multiplying this in. + const f32 font_size_mult = g_fontengine->getFontSize(FM_Unspecified) / (float)default_font_size; + // Minimum distance until z-scaled nametags actually become smaller + const f32 minimum_d = 1.0f * BS; + video::IVideoDriver *driver = RenderingEngine::get_video_driver(); v2u32 screensize = driver->getScreenSize(); + // Note: hidden nametags (e.g. GenericCAO) are removed from the array for (const Nametag *nametag : m_nametags) { - // Nametags are hidden in GenericCAO::updateNametag() - v3f pos = nametag->parent_node->getAbsolutePosition() + nametag->pos * BS; f32 transformed_pos[4] = { pos.X, pos.Y, pos.Z, 1.0f }; trans.multiplyWith1x4Matrix(transformed_pos); - if (transformed_pos[3] > 0) { - std::wstring nametag_colorless = - unescape_translate(utf8_to_wide(nametag->text)); - core::dimension2d textsize = font->getDimension( - nametag_colorless.c_str()); - f32 zDiv = transformed_pos[3] == 0.0f ? 1.0f : - core::reciprocal(transformed_pos[3]); - v2s32 screen_pos; - screen_pos.X = screensize.X * - (0.5 * transformed_pos[0] * zDiv + 0.5) - textsize.Width / 2; - screen_pos.Y = screensize.Y * - (0.5 - transformed_pos[1] * zDiv * 0.5) - textsize.Height / 2; - core::rect size(0, 0, textsize.Width, textsize.Height); + if (transformed_pos[3] <= 0) // negative Z means behind camera + continue; + f32 zDiv = transformed_pos[3] == 0.0f ? 1.0f : (1.0f / transformed_pos[3]); - auto bgcolor = nametag->getBgColor(m_show_nametag_backgrounds); - if (bgcolor.getAlpha() != 0) { - core::rect bg_size(-2, 0, textsize.Width + 2, textsize.Height); - driver->draw2DRectangle(bgcolor, bg_size + screen_pos); - } - - font->draw( - translate_string(utf8_to_wide(nametag->text)).c_str(), - size + screen_pos, nametag->textcolor); + u32 font_size = 0; + if (nametag->scale_z) { + // Higher default since nametag should be reasonably visible + // even at distance. + u32 base_size = nametag->textsize.value_or(default_font_size * 4); + f32 adjusted_d = std::max(transformed_pos[3] - minimum_d, 0.0f); + f32 adjusted_zDiv = adjusted_d == 0.0f ? 1.0f : (1.0f / adjusted_d); + font_size = myround(font_size_mult * + rangelim(base_size * BS * adjusted_zDiv, 0, base_size)); + } else { + font_size = myround(font_size_mult * nametag->textsize.value_or(default_font_size)); } + if (font_size <= 1) + continue; + // TODO: This is quite primitive. It would be better to let the GPU handle + // scaling (draw to RTT first?). + { + // Because the current approach puts a high load on the font engine + // we quantize the font size and set an arbitrary maximum... + font_size = MYMIN(font_size, 256); + if (font_size > 128) + font_size &= ~(1|2|4); + else if (font_size > 64) + font_size &= ~(1|2); + else if (font_size > 32) + font_size &= ~1; + } + auto *font = g_fontengine->getFont(font_size); + assert(font); + + const auto wtext = utf8_to_wide(nametag->text); + // Measure dimensions with escapes removed + core::dimension2du textsize = font->getDimension(unescape_translate(wtext).c_str()); + v2s32 screen_pos; + screen_pos.X = screensize.X * + (0.5f + transformed_pos[0] * zDiv * 0.5f) - textsize.Width / 2; + screen_pos.Y = screensize.Y * + (0.5f - transformed_pos[1] * zDiv * 0.5f) - textsize.Height / 2; + core::rect size(0, 0, textsize.Width, textsize.Height); + + auto bgcolor = nametag->getBgColor(m_show_nametag_backgrounds); + if (bgcolor.getAlpha() != 0) { + core::rect bg_size(-2, 0, textsize.Width + 2, textsize.Height); + driver->draw2DRectangle(bgcolor, bg_size + screen_pos); + } + + // but draw text with escapes + font->draw(translate_string(wtext).c_str(), + size + screen_pos, nametag->textcolor); } } -Nametag *Camera::addNametag(scene::ISceneNode *parent_node, - const std::string &text, video::SColor textcolor, - std::optional bgcolor, const v3f &pos) +Nametag *Camera::addNametag(const Nametag ¶ms) { - - std::string new_text; - auto nametag_text_wide = utf8_to_wide(text); - if (nametag_text_wide.size() > 15) { - nametag_text_wide.resize(15); - nametag_text_wide += L"."; - new_text = wide_to_utf8(nametag_text_wide); - } else { - new_text = text; - } - - Nametag *nametag = new Nametag(parent_node, new_text, textcolor, bgcolor, pos); + assert(params.parent_node); + auto *nametag = new Nametag(params); m_nametags.push_back(nametag); return nametag; } void Camera::removeNametag(Nametag *nametag) { - m_nametags.remove(nametag); + auto it = std::find(m_nametags.begin(), m_nametags.end(), nametag); + assert(it != m_nametags.end()); + m_nametags.erase(it); delete nametag; } diff --git a/src/client/camera.h b/src/client/camera.h index 10cc1353a..c3d82acb0 100644 --- a/src/client/camera.h +++ b/src/client/camera.h @@ -23,28 +23,17 @@ class WieldMeshSceneNode; struct Nametag { - scene::ISceneNode *parent_node; + scene::ISceneNode *parent_node = nullptr; std::string text; video::SColor textcolor; std::optional bgcolor; - v3f pos; - - Nametag(scene::ISceneNode *a_parent_node, - const std::string &text, - const video::SColor &textcolor, - const std::optional &bgcolor, - const v3f &pos): - parent_node(a_parent_node), - text(text), - textcolor(textcolor), - bgcolor(bgcolor), - pos(pos) - { - } + std::optional textsize; + v3f pos; // offset from parent node + bool scale_z; video::SColor getBgColor(bool use_fallback) const { - if (bgcolor) + if (bgcolor.has_value()) return bgcolor.value(); else if (!use_fallback) return video::SColor(0, 0, 0, 0); @@ -189,9 +178,7 @@ public: return m_camera_mode; } - Nametag *addNametag(scene::ISceneNode *parent_node, - const std::string &text, video::SColor textcolor, - std::optional bgcolor, const v3f &pos); + Nametag *addNametag(const Nametag ¶ms); void removeNametag(Nametag *nametag); diff --git a/src/client/client.cpp b/src/client/client.cpp index 270c74f2e..b33e94959 100644 --- a/src/client/client.cpp +++ b/src/client/client.cpp @@ -456,8 +456,7 @@ void Client::connect(const Address &address, const std::string &address_name) } m_address_name = address_name; - // fmtodo merge: m_con.reset(new con_use::Connection(PROTOCOL_ID, is_simple_singleplayer_game ? MAX_PACKET_SIZE_SINGLEPLAYER : MAX_PACKET_SIZE, CONNECTION_TIMEOUT,address.isIPv6(), this)); - m_con.reset(con::createMTP(CONNECTION_TIMEOUT, address.isIPv6(), this)); + m_con.reset(con::createMTP(CONNECTION_TIMEOUT, address.isIPv6(), this, is_simple_singleplayer_game)); infostream << "Connecting to server at "; address.print(infostream); diff --git a/src/client/client.h b/src/client/client.h index e141f5e08..a4d85c20e 100644 --- a/src/client/client.h +++ b/src/client/client.h @@ -49,7 +49,6 @@ class ISoundManager; class IWritableItemDefManager; class IWritableShaderSource; class IWritableTextureSource; -class MapBlockMesh; class MapDatabase; class MeshUpdateManager; class Minimap; @@ -65,12 +64,14 @@ struct ClientDynamicInfo; struct ClientEvent; struct MapDrawControl; struct MapNode; -struct MeshMakeData; -struct MinimapMapblock; struct PlayerControl; struct PointedThing; struct ItemVisualsManager; +namespace scene { +class IAnimatedMesh; +} + namespace con { class IConnection; } @@ -252,6 +253,7 @@ public: void handleCommand_DetachedInventory(NetworkPacket* pkt); void handleCommand_ShowFormSpec(NetworkPacket* pkt); void handleCommand_SpawnParticle(NetworkPacket* pkt); + void handleCommand_SpawnParticleBatch(NetworkPacket *pkt); void handleCommand_AddParticleSpawner(NetworkPacket* pkt); void handleCommand_DeleteParticleSpawner(NetworkPacket* pkt); void handleCommand_HudAdd(NetworkPacket* pkt); @@ -433,6 +435,7 @@ public: scene::ISceneManager *getSceneManager(); // IGameDef interface + bool isClient() override { return true; } IItemDefManager* getItemDefManager() override; const NodeDefManager* getNodeDefManager() override; ICraftDefManager* getCraftDefManager() override; diff --git a/src/client/clientenvironment.cpp b/src/client/clientenvironment.cpp index 5b84a3a3b..380a5437a 100644 --- a/src/client/clientenvironment.cpp +++ b/src/client/clientenvironment.cpp @@ -2,6 +2,7 @@ // SPDX-License-Identifier: LGPL-2.1-or-later // Copyright (C) 2010-2017 celeron55, Perttu Ahola +#include "constants.h" #include "threading/async.h" #include "util/serialize.h" #include "util/pointedthing.h" @@ -125,11 +126,10 @@ void ClientEnvironment::step(f32 dtime, double uptime, unsigned int max_cycle_ms if (dtime_max_increment * m_move_max_loop < dtime) dtime_max_increment = dtime / m_move_max_loop; - static constexpr float DTIME_MAX = 2.0; // Don't allow overly huge dtime - if(dtime > DTIME_MAX) - dtime = DTIME_MAX; + if(dtime > DTIME_LIMIT) + dtime = DTIME_LIMIT; if (player_speed <= 0.01 && dtime < 0.1) dtime_max_increment = dtime; @@ -246,7 +246,7 @@ void ClientEnvironment::step(f32 dtime, double uptime, unsigned int max_cycle_ms player_fall_factor = 1.0f + (float)addp_p / 100.0f; } - if (dtime < DTIME_MAX || lplayer->getSpeed().getLength() > PLAYER_FALL_TOLERANCE_SPEED) + if (dtime < DTIME_LIMIT || lplayer->getSpeed().getLength() > PLAYER_FALL_TOLERANCE_SPEED) for (const CollisionInfo &info : player_collisions) { v3f speed_diff = info.new_speed - info.old_speed;; // Handle only fall damage diff --git a/src/client/clientlauncher.cpp b/src/client/clientlauncher.cpp index 3951c2ea5..f9051f308 100644 --- a/src/client/clientlauncher.cpp +++ b/src/client/clientlauncher.cpp @@ -127,7 +127,7 @@ bool ClientLauncher::run(GameStartData &start_data, const Settings &cmd_args) // This is only global so it can be used by RenderingEngine::draw_load_screen(). assert(!g_menucloudsmgr && !g_menuclouds); std::unique_ptr ssrc(createShaderSource()); - ssrc->addShaderUniformSetterFactory(new FogShaderUniformSetterFactory()); + ssrc->addShaderUniformSetterFactory(std::make_unique()); g_menucloudsmgr = m_rendering_engine->get_scene_manager()->createNewSceneManager(); g_menuclouds = new Clouds(g_menucloudsmgr, ssrc.get(), -1, rand()); g_menuclouds->setHeight(100.0f); diff --git a/src/client/clientmap.cpp b/src/client/clientmap.cpp index 874bc7752..c60ae45ed 100644 --- a/src/client/clientmap.cpp +++ b/src/client/clientmap.cpp @@ -218,8 +218,14 @@ void ClientMap::onSettingChanged(std::string_view name, bool all) ClientMap::~ClientMap() { + verbosestream << FUNCTION_NAME << std::endl; + g_settings->deregisterAllChangedCallbacks(this); + // avoid refcount warning from ~Map() + clearDrawList(); + clearDrawListShadow(); + for (auto &it : m_dynamic_buffers) it.second.drop(); } @@ -371,28 +377,37 @@ private: v3s16 volume; }; -void ClientMap::updateDrawList(float dtime, unsigned int max_cycle_ms) +void ClientMap::clearDrawList() { auto & m_drawlist = m_drawlist_0; - const auto speedf = m_client->getEnv().getLocalPlayerSpeedLength(); - ScopeProfiler sp(g_profiler, "CM::updateDrawList()", SPT_AVG); - m_needs_update_drawlist = false; - - for (auto &i : m_drawlist) { + for (auto &i : m_drawlist) { auto block = i.second; block->refDrop(); } m_drawlist.clear(); - for (auto &block : m_keeplist) { + for (auto &block : m_keeplist) block->refDrop(); - } m_keeplist.clear(); - //const v3s16 cam_pos_nodes = floatToInt(m_camera_position, BS); - v3pos_t cam_pos_nodes = m_camera_position_node; + m_needs_update_drawlist = true; +} + +void ClientMap::updateDrawList(float dtime, unsigned int max_cycle_ms) +{ + ScopeProfiler sp(g_profiler, "CM::updateDrawList()", SPT_AVG); + + clearDrawList(); + + auto & m_drawlist = m_drawlist_0; + const auto speedf = m_client->getEnv().getLocalPlayerSpeedLength(); + + m_needs_update_drawlist = false; + + // const v3s16 cam_pos_nodes = floatToInt(m_camera_position, BS); + const v3pos_t cam_pos_nodes = m_camera_position_node; v3pos_t p_blocks_min; v3pos_t p_blocks_max; @@ -1995,6 +2010,18 @@ void ClientMap::renderMapShadows(video::IVideoDriver *driver, g_profiler->avg(prefix + "material swaps [#]", material_swaps); } +void ClientMap::clearDrawListShadow() +{ + auto &m_drawlist_shadow = + !m_drawlist_shadow_current ? m_drawlist_shadow_1 : m_drawlist_shadow_0; + + for (auto &i : m_drawlist_shadow) { + auto & block = i.second; + block->refDrop(); + } + m_drawlist_shadow.clear(); +} + /* Custom update draw list for the pov of shadow light. */ @@ -2007,11 +2034,7 @@ void ClientMap::updateDrawListShadow(v3f shadow_light_pos, v3f shadow_light_dir, ScopeProfiler sp(g_profiler, "CM::updateDrawListShadow()", SPT_AVG); - for (auto &i : m_drawlist_shadow) { - auto block = i.second; - block->refDrop(); - } - m_drawlist_shadow.clear(); + clearDrawListShadow(); // Number of blocks currently loaded by the client u32 blocks_loaded = 0; diff --git a/src/client/clientmap.h b/src/client/clientmap.h index b7e84c6c6..eba966fa9 100644 --- a/src/client/clientmap.h +++ b/src/client/clientmap.h @@ -55,8 +55,6 @@ struct MapDrawControl }; class Client; -class ITextureSource; -class PartialMeshBuffer; namespace scene { @@ -121,13 +119,23 @@ public: void getBlocksInViewRange(v3s16 cam_pos_nodes, v3s16 *p_blocks_min, v3s16 *p_blocks_max, float range=-1.0f); - void updateDrawList(float dtime, unsigned int max_cycle_ms = 0); + + void updateDrawList(float dtime, unsigned int max_cycle_ms = 0); void updateDrawListFm(float dtime, unsigned int max_cycle_ms = 0); - // @brief Calculate statistics about the map and keep the blocks alive + + //void updateDrawList(); + /// @brief clears m_drawlist and m_keeplist + void clearDrawList(); + + /// @brief Calculate statistics about the map and keep the blocks alive void touchMapBlocks(); + void updateDrawListShadow(v3f shadow_light_pos, v3f shadow_light_dir, float radius, float length); + void clearDrawListShadow(); + // Returns true if draw list needs updating before drawing the next frame. bool needsUpdateDrawList() { return m_needs_update_drawlist; } + void renderMap(video::IVideoDriver* driver, s32 pass); void renderMapShadows(video::IVideoDriver *driver, diff --git a/src/client/clientobject.h b/src/client/clientobject.h index e8c17400e..8739ac1e7 100644 --- a/src/client/clientobject.h +++ b/src/client/clientobject.h @@ -14,10 +14,7 @@ class ClientEnvironment; class ITextureSource; class Client; -class IGameDef; -class LocalPlayer; struct ItemStack; -class WieldMeshSceneNode; namespace scene { diff --git a/src/client/clientsimpleobject.h b/src/client/clientsimpleobject.h index c2700d286..7fef659e9 100644 --- a/src/client/clientsimpleobject.h +++ b/src/client/clientsimpleobject.h @@ -5,7 +5,6 @@ #pragma once #include "irrlichttypes_bloated.h" -class ClientEnvironment; class ClientSimpleObject { diff --git a/src/client/content_cao.cpp b/src/client/content_cao.cpp index f47d941bb..d988e7151 100644 --- a/src/client/content_cao.cpp +++ b/src/client/content_cao.cpp @@ -40,7 +40,6 @@ #include #include -class Settings; struct ToolCapabilities; std::unordered_map ClientActiveObject::m_types; @@ -957,17 +956,25 @@ void GenericCAO::updateNametag() v3f pos; pos.Y = m_prop.selectionbox.MaxEdge.Y + 0.3f; + // Add or update nametag + Nametag tmp{node, m_prop.nametag, m_prop.nametag_color, + m_prop.nametag_bgcolor, m_prop.nametag_fontsize, pos, + m_prop.nametag_scale_z}; + + // fm: + auto nametag_text_wide = utf8_to_wide(tmp.text); + if (nametag_text_wide.size() > 15) { + nametag_text_wide.resize(15); + nametag_text_wide += L"."; + tmp.text = wide_to_utf8(nametag_text_wide); + } + // === + if (!m_nametag) { - // Add nametag - m_nametag = m_client->getCamera()->addNametag(node, - m_prop.nametag, m_prop.nametag_color, - m_prop.nametag_bgcolor, pos); + m_nametag = m_client->getCamera()->addNametag(tmp); + assert(m_nametag); } else { - // Update nametag - m_nametag->text = m_prop.nametag; - m_nametag->textcolor = m_prop.nametag_color; - m_nametag->bgcolor = m_prop.nametag_bgcolor; - m_nametag->pos = pos; + *m_nametag = tmp; } } diff --git a/src/client/content_cao.h b/src/client/content_cao.h index aa600ca58..47a0177f3 100644 --- a/src/client/content_cao.h +++ b/src/client/content_cao.h @@ -22,10 +22,10 @@ namespace scene { class IBillboardSceneNode; } -class Camera; class Client; struct Nametag; struct MinimapMarker; +class WieldMeshSceneNode; /* SmoothTranslator and other helpers diff --git a/src/client/content_cso.h b/src/client/content_cso.h index 4085bb58f..10ec42155 100644 --- a/src/client/content_cso.h +++ b/src/client/content_cso.h @@ -12,5 +12,7 @@ namespace scene class ISceneManager; } +class ClientEnvironment; + ClientSimpleObject* createSmokePuff(scene::ISceneManager *smgr, ClientEnvironment *env, v3f pos, v2f size); diff --git a/src/client/game.cpp b/src/client/game.cpp index 1bc132dd6..025fec723 100644 --- a/src/client/game.cpp +++ b/src/client/game.cpp @@ -937,46 +937,17 @@ Game::Game() : m_chat_log_buf(g_logger), m_game_ui(new GameUI()) { - g_settings->registerChangedCallback("chat_log_level", - &settingChangedCallback, this); - g_settings->registerChangedCallback("doubletap_jump", - &settingChangedCallback, this); - g_settings->registerChangedCallback("toggle_sneak_key", - &settingChangedCallback, this); - g_settings->registerChangedCallback("toggle_aux1_key", - &settingChangedCallback, this); - g_settings->registerChangedCallback("enable_joysticks", - &settingChangedCallback, this); - g_settings->registerChangedCallback("enable_fog", - &settingChangedCallback, this); - g_settings->registerChangedCallback("mouse_sensitivity", - &settingChangedCallback, this); - g_settings->registerChangedCallback("joystick_frustum_sensitivity", - &settingChangedCallback, this); - g_settings->registerChangedCallback("repeat_place_time", - &settingChangedCallback, this); - g_settings->registerChangedCallback("repeat_dig_time", - &settingChangedCallback, this); - g_settings->registerChangedCallback("noclip", - &settingChangedCallback, this); - g_settings->registerChangedCallback("free_move", - &settingChangedCallback, this); - g_settings->registerChangedCallback("fog_start", - &settingChangedCallback, this); - g_settings->registerChangedCallback("cinematic", - &settingChangedCallback, this); - g_settings->registerChangedCallback("cinematic_camera_smoothing", - &settingChangedCallback, this); - g_settings->registerChangedCallback("camera_smoothing", - &settingChangedCallback, this); - g_settings->registerChangedCallback("invert_mouse", - &settingChangedCallback, this); - g_settings->registerChangedCallback("enable_hotbar_mouse_wheel", - &settingChangedCallback, this); - g_settings->registerChangedCallback("invert_hotbar_mouse_wheel", - &settingChangedCallback, this); - g_settings->registerChangedCallback("pause_on_lost_focus", - &settingChangedCallback, this); + clearTextureNameCache(); + + const char *settings[] = { + "chat_log_level", "doubletap_jump", "toggle_sneak_key", "toggle_aux1_key", + "enable_joysticks", "enable_fog", "mouse_sensitivity", "joystick_frustum_sensitivity", + "repeat_place_time", "repeat_dig_time", "noclip", "free_move", "fog_start", + "cinematic", "cinematic_camera_smoothing", "camera_smoothing", "invert_mouse", + "enable_hotbar_mouse_wheel", "invert_hotbar_mouse_wheel", "pause_on_lost_focus", + }; + for (auto s : settings) + g_settings->registerChangedCallback(s, &settingChangedCallback, this); readSettings(); } @@ -1497,13 +1468,15 @@ bool Game::createClient(const GameStartData &start_data) return false; } - shader_src->addShaderConstantSetter(new NodeShaderConstantSetter()); + shader_src->addShaderConstantSetter( + std::make_unique()); - auto *scsf = new GameGlobalShaderUniformSetterFactory(client); - shader_src->addShaderUniformSetterFactory(scsf); + auto scsf_up = std::make_unique(client); + auto* scsf = scsf_up.get(); + shader_src->addShaderUniformSetterFactory(std::move(scsf_up)); shader_src->addShaderUniformSetterFactory( - new FogShaderUniformSetterFactory()); + std::make_unique()); ShadowRenderer::preInit(shader_src); @@ -4884,11 +4857,6 @@ bool the_game(volatile std::sig_atomic_t *kill, { Game game; - /* Make a copy of the server address because if a local singleplayer server - * is created then this is updated and we don't want to change the value - * passed to us by the calling function - */ - bool started = false; try { diff --git a/src/client/game.h b/src/client/game.h index 0bc1ec913..d7f39c784 100644 --- a/src/client/game.h +++ b/src/client/game.h @@ -16,7 +16,6 @@ class InputHandler; class ChatBackend; class RenderingEngine; -struct SubgameSpec; struct GameStartData; struct Jitter { diff --git a/src/client/game_formspec.h b/src/client/game_formspec.h index 8ad3059af..b83e0a659 100644 --- a/src/client/game_formspec.h +++ b/src/client/game_formspec.h @@ -12,7 +12,6 @@ class Client; class RenderingEngine; class InputHandler; -class ISoundManager; class GUIFormSpecMenu; /* diff --git a/src/client/hud.cpp b/src/client/hud.cpp index efdd66395..f03c9a108 100644 --- a/src/client/hud.cpp +++ b/src/client/hud.cpp @@ -310,11 +310,8 @@ void Hud::drawItems(v2s32 screen_pos, v2s32 screen_offset, s32 itemcount, v2f al bool Hud::hasElementOfType(HudElementType type) { - for (size_t i = 0; i != player->maxHudId(); i++) { - HudElement *e = player->getHud(i); - if (!e) - continue; - if (e->type == type) + for (HudElement *e : player->getHudElements()) { + if (e && e->type == type) return true; } return false; @@ -345,9 +342,13 @@ void Hud::drawLuaElements(const v3s16 &camera_offset) const u32 text_height = g_fontengine->getTextHeight(); gui::IGUIFont *const font = g_fontengine->getFont(); - // Reorder elements by z_index std::vector elems; - elems.reserve(player->maxHudId()); + + elems.reserve(player->getHudElements().size()); + for (HudElement *e : player->getHudElements()) { + if (e) + elems.push_back(e); + } // Add builtin elements if the server doesn't send them. // Declared here such that they have the same lifetime as the elems vector @@ -364,17 +365,11 @@ void Hud::drawLuaElements(const v3s16 &camera_offset) elems.push_back(&hotbar); } - for (size_t i = 0; i != player->maxHudId(); i++) { - HudElement *e = player->getHud(i); - if (!e) - continue; - - auto it = elems.begin(); - while (it != elems.end() && (*it)->z_index <= e->z_index) - ++it; - - elems.insert(it, e); - } + // Reorder by Z-index for rendering + // Note: we don't guarantee rendering in ID order, but it used to work so let's keep it. + std::stable_sort(elems.begin(), elems.end(), [] (HudElement *l, HudElement *r) { + return l->z_index < r->z_index; + }); for (HudElement *e : elems) { diff --git a/src/client/imagefilters.cpp b/src/client/imagefilters.cpp index 8b38e9ad9..c51743765 100644 --- a/src/client/imagefilters.cpp +++ b/src/client/imagefilters.cpp @@ -4,54 +4,12 @@ #include "imagefilters.h" #include "util/numeric.h" +#include "util/bitmap.h" #include #include -#include #include #include -// Simple 2D bitmap class with just the functionality needed here -class Bitmap { - u32 linesize, lines; - std::vector data; - - static inline u32 bytepos(u32 index) { return index >> 3; } - static inline u8 bitpos(u32 index) { return index & 7; } - -public: - Bitmap(u32 width, u32 height) : linesize(width), lines(height), - data(bytepos(width * height) + 1) {} - - inline bool get(u32 x, u32 y) const { - u32 index = y * linesize + x; - return data[bytepos(index)] & (1 << bitpos(index)); - } - - inline void set(u32 x, u32 y) { - u32 index = y * linesize + x; - data[bytepos(index)] |= 1 << bitpos(index); - } - - inline bool all() const { - for (u32 i = 0; i < data.size() - 1; i++) { - if (data[i] != 0xff) - return false; - } - // last byte not entirely filled - for (u8 i = 0; i < bitpos(linesize * lines); i++) { - bool value_of_bit = data.back() & (1 << i); - if (!value_of_bit) - return false; - } - return true; - } - - inline void copy(Bitmap &to) const { - assert(to.linesize == linesize && to.lines == lines); - to.data = data; - } -}; - template static void imageCleanTransparentWithInlining(video::IImage *src, u32 threshold) { @@ -143,7 +101,7 @@ static void imageCleanTransparentWithInlining(video::IImage *src, u32 threshold) // Apply changes to bitmap for next run. This is done so we don't introduce // a bias in color propagation in the direction pixels are processed. - newmap.copy(bitmap); + bitmap = newmap; } } diff --git a/src/client/imagefilters.h b/src/client/imagefilters.h index 7b6e8a44b..f1b6bc7be 100644 --- a/src/client/imagefilters.h +++ b/src/client/imagefilters.h @@ -10,7 +10,6 @@ namespace video { - class IVideoDriver; class IImage; } diff --git a/src/client/imagesource.cpp b/src/client/imagesource.cpp index 5721f9666..e2a2a1554 100644 --- a/src/client/imagesource.cpp +++ b/src/client/imagesource.cpp @@ -1113,7 +1113,7 @@ bool ImageSource::generateImagePart(std::string_view part_of_name, << " for [combine" << std::endl; continue; } - infostream << "Adding \"" << filename<< "\" to combined " + tracestream << "Adding \"" << filename << "\" to combined " << pos_base << std::endl; video::IImage *img = generateImage(filename, source_image_names); @@ -1333,8 +1333,10 @@ bool ImageSource::generateImagePart(std::string_view part_of_name, video::IImage *img = generateImage(filename, source_image_names); if (img) { core::dimension2d dim = img->getDimension(); - if (!baseimg) + if (!baseimg) { baseimg = driver->createImage(video::ECF_A8R8G8B8, dim); + baseimg->fill(video::SColor(0,0,0,0)); + } v2s32 clippos(0, 0); clippos.Y = dim.Height * (100-percent) / 100; diff --git a/src/client/keycode.cpp b/src/client/keycode.cpp index 743626f5e..b040ac79e 100644 --- a/src/client/keycode.cpp +++ b/src/client/keycode.cpp @@ -25,11 +25,11 @@ struct table_key { #define DEFINEKEY2(x, ch, lang) /* Irrlicht key with character */ \ { #x, x, ch, lang }, #define DEFINEKEY3(ch) /* single Irrlicht key (e.g. KEY_KEY_X) */ \ - { "KEY_KEY_" TOSTRING(ch), KEY_KEY_ ## ch, (wchar_t) *TOSTRING(ch), TOSTRING(ch) }, + { "KEY_KEY_" TOSTRING(ch), KEY_KEY_ ## ch, static_cast(*TOSTRING(ch)), TOSTRING(ch) }, #define DEFINEKEY4(ch) /* single Irrlicht function key (e.g. KEY_F3) */ \ { "KEY_F" TOSTRING(ch), KEY_F ## ch, L'\0', "F" TOSTRING(ch) }, #define DEFINEKEY5(ch) /* key without Irrlicht keycode */ \ - { ch, KEY_KEY_CODES_COUNT, (wchar_t) *ch, ch }, + { ch, KEY_KEY_CODES_COUNT, static_cast(*ch), ch }, #define N_(text) text @@ -77,20 +77,20 @@ static std::vector table = { DEFINEKEY2(KEY_PERIOD, L'.', ".") // Keys without a Char - DEFINEKEY1(KEY_LBUTTON, N_("Left Button")) - DEFINEKEY1(KEY_RBUTTON, N_("Right Button")) + // Note: we add "Key" to the description if the string could be confused for something else + DEFINEKEY1(KEY_LBUTTON, N_("Left Click")) + DEFINEKEY1(KEY_RBUTTON, N_("Right Click")) //~ Usually paired with the Pause key DEFINEKEY1(KEY_CANCEL, N_("Break Key")) - DEFINEKEY1(KEY_MBUTTON, N_("Middle Button")) - DEFINEKEY1(KEY_XBUTTON1, N_("X Button 1")) - DEFINEKEY1(KEY_XBUTTON2, N_("X Button 2")) + DEFINEKEY1(KEY_MBUTTON, N_("Middle Click")) + DEFINEKEY1(KEY_XBUTTON1, N_("Mouse X1")) + DEFINEKEY1(KEY_XBUTTON2, N_("Mouse X2")) DEFINEKEY1(KEY_BACK, N_("Backspace")) - DEFINEKEY1(KEY_TAB, N_("Tab")) + DEFINEKEY1(KEY_TAB, N_("Tab Key")) DEFINEKEY1(KEY_CLEAR, N_("Clear Key")) DEFINEKEY1(KEY_RETURN, N_("Return Key")) DEFINEKEY1(KEY_SHIFT, N_("Shift Key")) DEFINEKEY1(KEY_CONTROL, N_("Control Key")) - //~ Key name, common on Windows keyboards DEFINEKEY1(KEY_MENU, N_("Menu Key")) //~ Usually paired with the Break key DEFINEKEY1(KEY_PAUSE, N_("Pause Key")) @@ -98,22 +98,21 @@ static std::vector table = { DEFINEKEY1(KEY_SPACE, N_("Space")) DEFINEKEY1(KEY_PRIOR, N_("Page Up")) DEFINEKEY1(KEY_NEXT, N_("Page Down")) - DEFINEKEY1(KEY_END, N_("End")) - DEFINEKEY1(KEY_HOME, N_("Home")) + DEFINEKEY1(KEY_END, N_("End Key")) + DEFINEKEY1(KEY_HOME, N_("Home Key")) DEFINEKEY1(KEY_LEFT, N_("Left Arrow")) DEFINEKEY1(KEY_UP, N_("Up Arrow")) DEFINEKEY1(KEY_RIGHT, N_("Right Arrow")) DEFINEKEY1(KEY_DOWN, N_("Down Arrow")) - //~ Key name - DEFINEKEY1(KEY_SELECT, N_("Select")) + DEFINEKEY1(KEY_SELECT, N_("Select Key")) //~ "Print screen" key DEFINEKEY1(KEY_PRINT, N_("Print")) - DEFINEKEY1(KEY_EXECUT, N_("Execute")) - DEFINEKEY1(KEY_SNAPSHOT, N_("Snapshot")) DEFINEKEY1(KEY_INSERT, N_("Insert")) DEFINEKEY1(KEY_DELETE, N_("Delete Key")) - DEFINEKEY1(KEY_HELP, N_("Help")) + DEFINEKEY1(KEY_HELP, N_("Help Key")) + //~ Name of key DEFINEKEY1(KEY_LWIN, N_("Left Windows")) + //~ Name of key DEFINEKEY1(KEY_RWIN, N_("Right Windows")) DEFINEKEY1(KEY_NUMPAD0, N_("Numpad 0")) // These are not assigned to a char DEFINEKEY1(KEY_NUMPAD1, N_("Numpad 1")) // to prevent interference with KEY_KEY_[0-9]. @@ -129,7 +128,7 @@ static std::vector table = { DEFINEKEY1(KEY_ADD, N_("Numpad +")) DEFINEKEY1(KEY_SEPARATOR, N_("Numpad .")) DEFINEKEY1(KEY_SUBTRACT, N_("Numpad -")) - DEFINEKEY1(KEY_DECIMAL, N_("Numpad .")) + DEFINEKEY1(KEY_DECIMAL, N_("Numpad .")) // duplicate of KEY_SEPARATOR? DEFINEKEY1(KEY_DIVIDE, N_("Numpad /")) DEFINEKEY4(1) DEFINEKEY4(2) @@ -172,13 +171,15 @@ static std::vector table = { DEFINEKEY1(KEY_FINAL, "Final") DEFINEKEY1(KEY_KANJI, "Kanji") DEFINEKEY1(KEY_HANJA, "Hanja") - DEFINEKEY1(KEY_ESCAPE, N_("IME Escape")) - DEFINEKEY1(KEY_CONVERT, N_("IME Convert")) - DEFINEKEY1(KEY_NONCONVERT, N_("IME Nonconvert")) - DEFINEKEY1(KEY_ACCEPT, N_("IME Accept")) - DEFINEKEY1(KEY_MODECHANGE, N_("IME Mode Change")) - DEFINEKEY1(KEY_APPS, N_("Apps")) - DEFINEKEY1(KEY_SLEEP, N_("Sleep")) + DEFINEKEY1(KEY_ESCAPE, "IME Escape") + DEFINEKEY1(KEY_CONVERT, "IME Convert") + DEFINEKEY1(KEY_NONCONVERT, "IME Nonconvert") + DEFINEKEY1(KEY_ACCEPT, "IME Accept") + DEFINEKEY1(KEY_MODECHANGE, "IME Mode Change") + DEFINEKEY1(KEY_EXECUT, "Execute Key") + DEFINEKEY1(KEY_SNAPSHOT, "Snapshot Key") + DEFINEKEY1(KEY_APPS, "Apps Key") + DEFINEKEY1(KEY_SLEEP, "Sleep Key") DEFINEKEY1(KEY_OEM_1, "OEM 1") // KEY_OEM_[0-9] and KEY_OEM_102 are assigned to multiple DEFINEKEY1(KEY_OEM_2, "OEM 2") // different chars (on different platforms too) and thus w/o char /* @@ -196,11 +197,11 @@ static std::vector table = { DEFINEKEY1(KEY_ATTN, "Attn") DEFINEKEY1(KEY_CRSEL, "CrSel") DEFINEKEY1(KEY_EXSEL, "ExSel") - DEFINEKEY1(KEY_EREOF, N_("Erase EOF")) + DEFINEKEY1(KEY_EREOF, "Erase EOF") DEFINEKEY1(KEY_PLAY, N_("Play")) - DEFINEKEY1(KEY_ZOOM, N_("Zoom Key")) + DEFINEKEY1(KEY_ZOOM, "Zoom Key") DEFINEKEY1(KEY_PA1, "PA1") - DEFINEKEY1(KEY_OEM_CLEAR, N_("OEM Clear")) + DEFINEKEY1(KEY_OEM_CLEAR, "OEM Clear") // Keys without Irrlicht keycode DEFINEKEY5("!") diff --git a/src/client/localplayer.h b/src/client/localplayer.h index 18f538b3f..50d1e55f9 100644 --- a/src/client/localplayer.h +++ b/src/client/localplayer.h @@ -17,8 +17,6 @@ class ClientEnvironment; struct MapNode; class GenericCAO; class ClientActiveObject; -class ClientEnvironment; -class IGameDef; struct CollisionInfo; struct collisionMoveResult; @@ -123,7 +121,6 @@ public: m_cao = toset; } - u32 maxHudId() const { return hud.size(); } //freeminer: bool zoom = false; diff --git a/src/client/mapblock_mesh.h b/src/client/mapblock_mesh.h index 6c9ad2c63..7fafa63f9 100644 --- a/src/client/mapblock_mesh.h +++ b/src/client/mapblock_mesh.h @@ -30,7 +30,6 @@ class ITextureSource; */ -class MapBlock; struct MinimapMapblock; struct MeshMakeData diff --git a/src/client/mesh_generator_thread.cpp b/src/client/mesh_generator_thread.cpp index 72530ebb4..512512c2b 100644 --- a/src/client/mesh_generator_thread.cpp +++ b/src/client/mesh_generator_thread.cpp @@ -32,6 +32,8 @@ void QueuedMeshUpdate::retrieveBlocks(Map *map, u16 cell_size) assert(map_blocks.size() == total); // must not change size_t i = 0; v3s16 pos; + // order is not important, but it must be consistent + // note the extra margin! for (pos.X = p.X - 1; pos.X <= p.X + cell_size; pos.X++) for (pos.Z = p.Z - 1; pos.Z <= p.Z + cell_size; pos.Z++) for (pos.Y = p.Y - 1; pos.Y <= p.Y + cell_size; pos.Y++) { @@ -46,6 +48,20 @@ void QueuedMeshUpdate::retrieveBlocks(Map *map, u16 cell_size) } } +bool QueuedMeshUpdate::checkSkip(u16 cell_size) +{ + bool all_air = true; + const v3s16 p_max = p + v3s16(cell_size); + assert(!map_blocks.empty()); + for (const auto &block : map_blocks) { + // ignore extra margin + if (block && block->getPos() >= p && block->getPos() < p_max) { + all_air &= block->isAir(); + } + } + return all_air; +} + void QueuedMeshUpdate::dropBlocks() { for (auto block : map_blocks) { @@ -55,6 +71,19 @@ void QueuedMeshUpdate::dropBlocks() map_blocks.clear(); } +namespace { + struct DroppingDeleter { + void operator() (QueuedMeshUpdate *q) { + if (q) + q->dropBlocks(); + delete q; + } + }; + + // Simple helper to avoid messing up the refcounting + using UnqueuedMeshUpdate = std::unique_ptr; +} + /* MeshUpdateQueue */ @@ -79,17 +108,15 @@ MeshUpdateQueue::~MeshUpdateQueue() bool MeshUpdateQueue::addBlock(Map *map, v3s16 p, bool ack_block_to_server, bool urgent, bool from_neighbor) { - // FIXME: with cell_size > 1 there isn't a "main block" and this check is - // probably incorrect and broken - MapBlock *main_block = map->getBlockNoCreateNoEx(p); - if (!main_block) + // If block that causes update does not exist, skip. + if (!map->getBlockNoCreateNoEx(p)) return false; - MeshGrid mesh_grid = m_client->getMeshGrid(); + const MeshGrid mesh_grid = m_client->getMeshGrid(); // Mesh is placed at the corner block of a chunk // (where all coordinate are divisible by the chunk size) - v3s16 mesh_position = mesh_grid.getMeshPos(p); + const v3s16 mesh_position = mesh_grid.getMeshPos(p); MutexAutoLock lock(m_mutex); @@ -116,21 +143,9 @@ bool MeshUpdateQueue::addBlock(Map *map, v3s16 p, bool ack_block_to_server, } /* - Air blocks won't suddenly become visible due to a neighbor update, so - skip those. - Note: this can be extended with more precise checks in the future + Grab the relevant blocks first */ - if (from_neighbor && mesh_grid.cell_size == 1 && main_block->isAir()) { - assert(!ack_block_to_server); - m_urgents.erase(mesh_position); - g_profiler->add("MeshUpdateQueue: updates skipped", 1); - return true; - } - - /* - Add the block - */ - QueuedMeshUpdate *q = new QueuedMeshUpdate; + UnqueuedMeshUpdate q{new QueuedMeshUpdate()}; q->p = mesh_position; if (ack_block_to_server) q->ack_list.push_back(p); @@ -138,7 +153,21 @@ bool MeshUpdateQueue::addBlock(Map *map, v3s16 p, bool ack_block_to_server, q->crack_pos = m_client->getCrackPos(); q->urgent = urgent; q->retrieveBlocks(map, mesh_grid.cell_size); - m_queue.push_back(q); + + /* + Air blocks won't suddenly become visible due to a neighbor update, so + skip those. + Note: this can be extended with more precise checks in the future + */ + if (from_neighbor && q->checkSkip(mesh_grid.cell_size)) { + assert(!ack_block_to_server); + m_urgents.erase(mesh_position); + g_profiler->add("MeshUpdateQueue: updates skipped", 1); + return true; + } + + // Put into queue, pointer moved from `q`. + m_queue.push_back(q.release()); return true; } @@ -196,18 +225,13 @@ void MeshUpdateQueue::fillDataFromMapBlocks(QueuedMeshUpdate *q) data->fillBlockDataBegin(q->p); - v3s16 pos; - int i = 0; - for (pos.X = q->p.X - 1; pos.X <= q->p.X + mesh_grid.cell_size; pos.X++) - for (pos.Z = q->p.Z - 1; pos.Z <= q->p.Z + mesh_grid.cell_size; pos.Z++) - for (pos.Y = q->p.Y - 1; pos.Y <= q->p.Y + mesh_grid.cell_size; pos.Y++) { - const auto block = q->map_blocks[i++]; -/* + for (const auto &block : q->map_blocks) { if (block) - block->copyTo(data->m_vmanip); +/* + block->copyTo(data->m_vmanip); */ - if (block) { + { const auto lock = block->lock_shared_rec(); //data->fillBlockData(pos, block->getData()); block->copyTo(data->m_vmanip); diff --git a/src/client/mesh_generator_thread.h b/src/client/mesh_generator_thread.h index ff6ef5534..f7aa37130 100644 --- a/src/client/mesh_generator_thread.h +++ b/src/client/mesh_generator_thread.h @@ -16,6 +16,8 @@ #include #include +class MapBlock; + struct QueuedMeshUpdate { @@ -42,6 +44,13 @@ struct QueuedMeshUpdate * @note not done by destructor, since this is only safe on main thread */ void dropBlocks(); + /** + * Check if the blocks that would comprise the mesh are all air, so the + * update can be skipped entirely. + * @param cell_size mesh grid cell size + * @return (true = all air) + */ + bool checkSkip(u16 cell_size); }; /* diff --git a/src/client/meshgen/collector.cpp b/src/client/meshgen/collector.cpp index 6e3002624..f0261acc6 100644 --- a/src/client/meshgen/collector.cpp +++ b/src/client/meshgen/collector.cpp @@ -11,10 +11,10 @@ void MeshCollector::append(const TileSpec &tile, const video::S3DVertex *vertice u32 numVertices, const u16 *indices, u32 numIndices) { for (int layernum = 0; layernum < MAX_TILE_LAYERS; layernum++) { - const TileLayer *layer = &tile.layers[layernum]; - if (layer->empty()) + const TileLayer &layer = tile.layers[layernum]; + if (layer.empty()) continue; - append(*layer, vertices, numVertices, indices, numIndices, layernum); + append(layer, vertices, numVertices, indices, numIndices, layernum); } } diff --git a/src/client/minimap.cpp b/src/client/minimap.cpp index 4d1f03e65..f71f5a316 100644 --- a/src/client/minimap.cpp +++ b/src/client/minimap.cpp @@ -420,21 +420,26 @@ void Minimap::blitMinimapPixelsToImageRadar(video::IImage *map_image) void Minimap::blitMinimapPixelsToImageSurface( video::IImage *map_image, video::IImage *heightmap_image) { - // This variable creation/destruction has a 1% cost on rendering minimap + assert(map_image && heightmap_image); video::SColor tilecolor; for (s16 x = 0; x < data->mode.map_size; x++) for (s16 z = 0; z < data->mode.map_size; z++) { MinimapPixel *mmpixel = &data->minimap_scan[x + z * data->mode.map_size]; const ContentFeatures &f = m_ndef->get(mmpixel->n); - const TileDef *tile = &f.tiledef[0]; + const auto &tile = f.tiledef[0], &overlay = f.tiledef_overlay[0]; - // Color of the 0th tile (mostly this is the topmost) - if(tile->has_color) - tilecolor = tile->color; - else + // Figure out the color of the top of the node + // Note that this is very simplified. The overlay and normal tile can be + // colored independently and the overlay might only cover half or less. + if (!overlay.name.empty() && overlay.has_color) { + tilecolor = overlay.color; + } else if (overlay.name.empty() && tile.has_color) { + tilecolor = tile.color; + } else { mmpixel->n.getColor(f, &tilecolor); - + } + // Multiply with pre-generated "color of texture" tilecolor.setRed(tilecolor.getRed() * f.minimap_color.getRed() / 255); tilecolor.setGreen(tilecolor.getGreen() * f.minimap_color.getGreen() / 255); tilecolor.setBlue(tilecolor.getBlue() * f.minimap_color.getBlue() / 255); diff --git a/src/client/render/core.cpp b/src/client/render/core.cpp index ef780269a..a3a309b30 100644 --- a/src/client/render/core.cpp +++ b/src/client/render/core.cpp @@ -9,17 +9,15 @@ #include "settings.h" RenderingCore::RenderingCore(IrrlichtDevice *_device, Client *_client, Hud *_hud, - ShadowRenderer *_shadow_renderer, RenderPipeline *_pipeline, v2f _virtual_size_scale) - : device(_device), client(_client), hud(_hud), shadow_renderer(_shadow_renderer), - pipeline(_pipeline), virtual_size_scale(_virtual_size_scale) + std::unique_ptr _shadow_renderer, + std::unique_ptr _pipeline, + v2f _virtual_size_scale) + : device(_device), client(_client), hud(_hud), shadow_renderer(std::move(_shadow_renderer)), + pipeline(std::move(_pipeline)), virtual_size_scale(_virtual_size_scale) { } -RenderingCore::~RenderingCore() -{ - delete pipeline; - delete shadow_renderer; -} +RenderingCore::~RenderingCore() = default; void RenderingCore::draw(video::SColor _skycolor, bool _show_hud, bool _draw_wield_tool, bool _draw_crosshair) @@ -27,7 +25,7 @@ void RenderingCore::draw(video::SColor _skycolor, bool _show_hud, v2u32 screensize = device->getVideoDriver()->getScreenSize(); virtual_size = v2u32(screensize.X * virtual_size_scale.X, screensize.Y * virtual_size_scale.Y); - PipelineContext context(device, client, hud, shadow_renderer, _skycolor, screensize); + PipelineContext context(device, client, hud, shadow_renderer.get(), _skycolor, screensize); context.draw_crosshair = _draw_crosshair; context.draw_wield_tool = _draw_wield_tool; context.show_hud = _show_hud; diff --git a/src/client/render/core.h b/src/client/render/core.h index e05cfa7f7..e5c2c6386 100644 --- a/src/client/render/core.h +++ b/src/client/render/core.h @@ -7,16 +7,14 @@ #include "irr_v2d.h" #include +#include class IrrlichtDevice; class ShadowRenderer; -class Camera; class Client; class Hud; -class Minimap; class RenderPipeline; -class RenderTarget; class RenderingCore { @@ -24,16 +22,17 @@ protected: IrrlichtDevice *device; Client *client; Hud *hud; - ShadowRenderer *shadow_renderer; + std::unique_ptr shadow_renderer; - RenderPipeline *pipeline; + std::unique_ptr pipeline; v2f virtual_size_scale; v2u32 virtual_size { 0, 0 }; public: RenderingCore(IrrlichtDevice *device, Client *client, Hud *hud, - ShadowRenderer *shadow_renderer, RenderPipeline *pipeline, + std::unique_ptr shadow_renderer, + std::unique_ptr pipeline, v2f virtual_size_scale); RenderingCore(const RenderingCore &) = delete; RenderingCore(RenderingCore &&) = delete; @@ -47,5 +46,5 @@ public: v2u32 getVirtualSize() const; - ShadowRenderer *get_shadow_renderer() { return shadow_renderer; }; + ShadowRenderer *get_shadow_renderer() { return shadow_renderer.get(); }; }; diff --git a/src/client/render/factory.cpp b/src/client/render/factory.cpp index 55048b2d8..99fe95507 100644 --- a/src/client/render/factory.cpp +++ b/src/client/render/factory.cpp @@ -4,19 +4,21 @@ // Copyright (C) 2017 numzero, Lobachevskiy Vitaliy #include "factory.h" + #include "log.h" #include "plain.h" #include "anaglyph.h" -#include "interlaced.h" #include "sidebyside.h" #include "secondstage.h" #include "client/shadows/dynamicshadowsrender.h" +#include + struct CreatePipelineResult { v2f virtual_size_scale; - ShadowRenderer *shadow_renderer { nullptr }; - RenderPipeline *pipeline { nullptr }; + std::unique_ptr shadow_renderer; + std::unique_ptr pipeline; }; void createPipeline(const std::string &stereo_mode, IrrlichtDevice *device, Client *client, Hud *hud, CreatePipelineResult &result); @@ -27,44 +29,42 @@ RenderingCore *createRenderingCore(const std::string &stereo_mode, IrrlichtDevic CreatePipelineResult created_pipeline; createPipeline(stereo_mode, device, client, hud, created_pipeline); return new RenderingCore(device, client, hud, - created_pipeline.shadow_renderer, created_pipeline.pipeline, created_pipeline.virtual_size_scale); + std::move(created_pipeline.shadow_renderer), + std::move(created_pipeline.pipeline), + created_pipeline.virtual_size_scale); } void createPipeline(const std::string &stereo_mode, IrrlichtDevice *device, Client *client, Hud *hud, CreatePipelineResult &result) { result.shadow_renderer = createShadowRenderer(device, client); result.virtual_size_scale = v2f(1.0f); - result.pipeline = new RenderPipeline(); + result.pipeline = std::make_unique(); if (result.shadow_renderer) result.pipeline->addStep(); if (stereo_mode == "none") { - populatePlainPipeline(result.pipeline, client); + populatePlainPipeline(result.pipeline.get(), client); return; } if (stereo_mode == "anaglyph") { - populateAnaglyphPipeline(result.pipeline, client); - return; - } - if (stereo_mode == "interlaced") { - populateInterlacedPipeline(result.pipeline, client); + populateAnaglyphPipeline(result.pipeline.get(), client); return; } if (stereo_mode == "sidebyside") { - populateSideBySidePipeline(result.pipeline, client, false, false, result.virtual_size_scale); + populateSideBySidePipeline(result.pipeline.get(), client, false, false, result.virtual_size_scale); return; } if (stereo_mode == "topbottom") { - populateSideBySidePipeline(result.pipeline, client, true, false, result.virtual_size_scale); + populateSideBySidePipeline(result.pipeline.get(), client, true, false, result.virtual_size_scale); return; } if (stereo_mode == "crossview") { - populateSideBySidePipeline(result.pipeline, client, false, true, result.virtual_size_scale); + populateSideBySidePipeline(result.pipeline.get(), client, false, true, result.virtual_size_scale); return; } // fallback to plain renderer errorstream << "Invalid rendering mode: " << stereo_mode << std::endl; - populatePlainPipeline(result.pipeline, client); -} \ No newline at end of file + populatePlainPipeline(result.pipeline.get(), client); +} diff --git a/src/client/render/interlaced.cpp b/src/client/render/interlaced.cpp deleted file mode 100644 index c4014a74d..000000000 --- a/src/client/render/interlaced.cpp +++ /dev/null @@ -1,79 +0,0 @@ -// Luanti -// SPDX-License-Identifier: LGPL-2.1-or-later -// Copyright (C) 2010-2013 celeron55, Perttu Ahola -// Copyright (C) 2017 numzero, Lobachevskiy Vitaliy - -#include "interlaced.h" -#include "secondstage.h" -#include "client/client.h" -#include "client/shader.h" -#include "client/camera.h" - -InitInterlacedMaskStep::InitInterlacedMaskStep(TextureBuffer *_buffer, u8 _index) : - buffer(_buffer), index(_index) -{ -} - -void InitInterlacedMaskStep::run(PipelineContext &context) -{ - video::ITexture *mask = buffer->getTexture(index); - if (!mask) - return; - if (mask == last_mask) - return; - last_mask = mask; - - auto size = mask->getSize(); - u8 *data = reinterpret_cast(mask->lock(video::ETLM_WRITE_ONLY)); - for (u32 j = 0; j < size.Height; j++) { - u8 val = j % 2 ? 0xff : 0x00; - memset(data, val, 4 * size.Width); - data += 4 * size.Width; - } - mask->unlock(); -} - -void populateInterlacedPipeline(RenderPipeline *pipeline, Client *client) -{ - // FIXME: "3d_mode = interlaced" is currently broken. Two options: - // 1. Remove it - // 2. Fix it - // If you fix it, make sure to test it with "enable_post_processing = false". - // You'll probably have to add a depth texture to make that combination work. - // Also, this code should probably use selectColorFormat/selectDepthFormat. - - static const u8 TEXTURE_LEFT = 0; - static const u8 TEXTURE_RIGHT = 1; - static const u8 TEXTURE_MASK = 2; - - TextureBuffer *buffer = pipeline->createOwned(); - buffer->setTexture(TEXTURE_LEFT, v2f(1.0f, 0.5f), "3d_render_left", video::ECF_A8R8G8B8); - buffer->setTexture(TEXTURE_RIGHT, v2f(1.0f, 0.5f), "3d_render_right", video::ECF_A8R8G8B8); - buffer->setTexture(TEXTURE_MASK, v2f(1.0f, 1.0f), "3d_render_mask", video::ECF_A8R8G8B8); - - pipeline->addStep(buffer, TEXTURE_MASK); - - auto step3D = pipeline->own(create3DStage(client, v2f(1.0f, 0.5f))); - - // eyes - for (bool right : { false, true }) { - pipeline->addStep(right); - auto output = pipeline->createOwned(buffer, right ? TEXTURE_RIGHT : TEXTURE_LEFT); - pipeline->addStep(step3D, output); - pipeline->addStep(step3D); - pipeline->addStep(); - pipeline->addStep(); - } - - pipeline->addStep(0.0f); - - IShaderSource *s = client->getShaderSource(); - auto shader = s->getShaderRaw("3d_interlaced_merge"); - video::E_MATERIAL_TYPE material = s->getShaderInfo(shader).material; - auto texture_map = { TEXTURE_LEFT, TEXTURE_RIGHT, TEXTURE_MASK }; - - auto merge = pipeline->addStep(material, texture_map); - merge->setRenderSource(buffer); - merge->setRenderTarget(pipeline->createOwned()); - pipeline->addStep(); -} diff --git a/src/client/render/interlaced.h b/src/client/render/interlaced.h deleted file mode 100644 index 9d0e797e2..000000000 --- a/src/client/render/interlaced.h +++ /dev/null @@ -1,20 +0,0 @@ -// Luanti -// SPDX-License-Identifier: LGPL-2.1-or-later -// Copyright (C) 2010-2013 celeron55, Perttu Ahola -// Copyright (C) 2017 numzero, Lobachevskiy Vitaliy - -#pragma once -#include "stereo.h" - -class InitInterlacedMaskStep : public TrivialRenderStep -{ -public: - InitInterlacedMaskStep(TextureBuffer *buffer, u8 index); - void run(PipelineContext &context); -private: - TextureBuffer *buffer; - video::ITexture *last_mask { nullptr }; - u8 index; -}; - -void populateInterlacedPipeline(RenderPipeline *pipeline, Client *client); diff --git a/src/client/render/pipeline.cpp b/src/client/render/pipeline.cpp index 33b3e78e2..9812c4476 100644 --- a/src/client/render/pipeline.cpp +++ b/src/client/render/pipeline.cpp @@ -131,7 +131,15 @@ bool TextureBuffer::ensureTexture(video::ITexture **texture, const TextureDefini if (definition.valid) { if (!m_driver->queryTextureFormat(definition.format)) { errorstream << "Failed to create texture \"" << definition.name - << "\": unsupported format " << video::ColorFormatNames[definition.format] + << "\": unsupported format " << video::ColorFormatName(definition.format) + << std::endl; + return false; + } + + const core::dimension2du max_size = m_driver->getMaxTextureSize(); + if (size.Width > max_size.Width || size.Height > max_size.Height) { + errorstream << "Failed to create texture \"" << definition.name + << "\": exceeds limit " << size.Width << "x" << size.Height << std::endl; return false; } diff --git a/src/client/render/secondstage.cpp b/src/client/render/secondstage.cpp index b00a54575..10887b860 100644 --- a/src/client/render/secondstage.cpp +++ b/src/client/render/secondstage.cpp @@ -93,8 +93,8 @@ RenderStep *addPostProcessing(RenderPipeline *pipeline, RenderStep *previousStep video::ECOLOR_FORMAT depth_format = selectDepthFormat(driver); verbosestream << "addPostProcessing(): color = " - << video::ColorFormatNames[color_format] << " depth = " - << video::ColorFormatNames[depth_format] << std::endl; + << video::ColorFormatName(color_format) << " depth = " + << video::ColorFormatName(depth_format) << std::endl; // init post-processing buffer static const u8 TEXTURE_COLOR = 0; @@ -134,6 +134,10 @@ RenderStep *addPostProcessing(RenderPipeline *pipeline, RenderStep *previousStep const bool enable_ssaa = antialiasing == "ssaa"; const bool enable_fxaa = antialiasing == "fxaa"; + verbosestream << "addPostProcessing(): AA = " + << (enable_msaa ? "msaa" : enable_ssaa ? "ssaa" : enable_fxaa ? "fxaa" : "none") + << " " << antialiasing_scale << "x" << std::endl; + // Super-sampling is simply rendering into a larger texture. // Downscaling is done by the final step when rendering to the screen. if (enable_ssaa) { diff --git a/src/client/render/sidebyside.h b/src/client/render/sidebyside.h index 8c7b28583..e32c0dff1 100644 --- a/src/client/render/sidebyside.h +++ b/src/client/render/sidebyside.h @@ -23,4 +23,4 @@ private: RenderTarget *target; }; -void populateSideBySidePipeline(RenderPipeline *pipeline, Client *client, bool horizontal, bool flipped, v2f &virtual_size_scale); \ No newline at end of file +void populateSideBySidePipeline(RenderPipeline *pipeline, Client *client, bool horizontal, bool flipped, v2f &virtual_size_scale); diff --git a/src/client/renderingengine.h b/src/client/renderingengine.h index 6416b0ac1..6abb6cccf 100644 --- a/src/client/renderingengine.h +++ b/src/client/renderingengine.h @@ -27,11 +27,8 @@ struct VideoDriverInfo { }; class ITextureSource; -class Camera; class Client; -class LocalPlayer; class Hud; -class Minimap; class RenderingCore; diff --git a/src/client/shader.cpp b/src/client/shader.cpp index 1ae5802cd..6081ab6ae 100644 --- a/src/client/shader.cpp +++ b/src/client/shader.cpp @@ -378,14 +378,14 @@ public: // Shall be called from the main thread. void rebuildShaders() override; - void addShaderConstantSetter(IShaderConstantSetter *setter) override + void addShaderConstantSetter(std::unique_ptr setter) override { - m_constant_setters.emplace_back(setter); + m_constant_setters.emplace_back(std::move(setter)); } - void addShaderUniformSetterFactory(IShaderUniformSetterFactory *setter) override + void addShaderUniformSetterFactory(std::unique_ptr setter) override { - m_uniform_factories.emplace_back(setter); + m_uniform_factories.emplace_back(std::move(setter)); } private: @@ -441,8 +441,8 @@ ShaderSource::ShaderSource() m_shaderinfo_cache.emplace_back(); // Add global stuff - addShaderConstantSetter(new MainShaderConstantSetter()); - addShaderUniformSetterFactory(new MainShaderUniformSetterFactory()); + addShaderConstantSetter(std::make_unique()); + addShaderUniformSetterFactory(std::make_unique()); } ShaderSource::~ShaderSource() diff --git a/src/client/shader.h b/src/client/shader.h index 910117660..30d1c0ca1 100644 --- a/src/client/shader.h +++ b/src/client/shader.h @@ -274,10 +274,10 @@ public: virtual void rebuildShaders()=0; /// @note Takes ownership of @p setter. - virtual void addShaderConstantSetter(IShaderConstantSetter *setter) = 0; + virtual void addShaderConstantSetter(std::unique_ptr setter) = 0; /// @note Takes ownership of @p setter. - virtual void addShaderUniformSetterFactory(IShaderUniformSetterFactory *setter) = 0; + virtual void addShaderUniformSetterFactory(std::unique_ptr setter) = 0; }; IWritableShaderSource *createShaderSource(); diff --git a/src/client/shadows/dynamicshadowsrender.cpp b/src/client/shadows/dynamicshadowsrender.cpp index d44839373..8fc52108e 100644 --- a/src/client/shadows/dynamicshadowsrender.cpp +++ b/src/client/shadows/dynamicshadowsrender.cpp @@ -110,7 +110,7 @@ void ShadowRenderer::disable() void ShadowRenderer::preInit(IWritableShaderSource *shsrc) { if (g_settings->getBool("enable_dynamic_shadows")) { - shsrc->addShaderUniformSetterFactory(new ShadowUniformSetterFactory()); + shsrc->addShaderUniformSetterFactory(std::make_unique()); } } @@ -690,7 +690,7 @@ std::string ShadowRenderer::readShaderFile(const std::string &path) return prefix + content; } -ShadowRenderer *createShadowRenderer(IrrlichtDevice *device, Client *client) +std::unique_ptr createShadowRenderer(IrrlichtDevice *device, Client *client) { if (!g_settings->getBool("enable_dynamic_shadows")) return nullptr; @@ -704,7 +704,7 @@ ShadowRenderer *createShadowRenderer(IrrlichtDevice *device, Client *client) return nullptr; } - ShadowRenderer *shadow_renderer = new ShadowRenderer(device, client); + auto shadow_renderer = std::make_unique(device, client); shadow_renderer->initialize(); return shadow_renderer; } diff --git a/src/client/shadows/dynamicshadowsrender.h b/src/client/shadows/dynamicshadowsrender.h index 7026e39a9..5bdc97a82 100644 --- a/src/client/shadows/dynamicshadowsrender.h +++ b/src/client/shadows/dynamicshadowsrender.h @@ -6,6 +6,7 @@ #include #include +#include #include #include "client/shadows/dynamicshadows.h" #include @@ -165,4 +166,4 @@ private: * @param client Reference to the client context. * @return A new ShadowRenderer instance or nullptr if shadows are disabled or not supported. */ -ShadowRenderer *createShadowRenderer(IrrlichtDevice *device, Client *client); +std::unique_ptr createShadowRenderer(IrrlichtDevice *device, Client *client); diff --git a/src/client/texturepaths.cpp b/src/client/texturepaths.cpp index f2efa6038..5642512d5 100644 --- a/src/client/texturepaths.cpp +++ b/src/client/texturepaths.cpp @@ -5,6 +5,7 @@ #include "texturepaths.h" #include "util/container.h" +#include "util/thread.h" #include "settings.h" #include "filesys.h" #include "porting.h" @@ -12,10 +13,13 @@ // A cache from texture name to texture path static MutexedMap g_texturename_to_path_cache; +// Cached result of getTextureDirs() +static MutexedVariable> g_texturedirs_cache; void clearTextureNameCache() { g_texturename_to_path_cache.clear(); + g_texturedirs_cache.set({}); } // Find out the full path of an image by trying different filename extensions. @@ -74,24 +78,28 @@ std::string getTexturePath(const std::string &filename, bool *is_base_pack) break; } - // Check from default data directory i.e. .../minetest/textures/base/pack + // Check from default data directory if (fullpath.empty()) { - std::string base_path = porting::path_share + DIR_DELIM + "textures" - + DIR_DELIM + "base" + DIR_DELIM + "pack"; + std::string base_path = porting::path_share + DIR_DELIM "textures" + DIR_DELIM "base" DIR_DELIM "pack"; // Check all filename extensions. Returns "" if not found. fullpath = getImagePath(base_path + DIR_DELIM + filename); if (is_base_pack && !fullpath.empty()) *is_base_pack = true; } - // Add to cache (also an empty result is cached) + // Add to cache (an empty result is cached too) g_texturename_to_path_cache.set(filename, fullpath); - // Finally return it return fullpath; } std::vector getTextureDirs() { - return fs::GetRecursiveDirs(g_settings->get("texture_path")); + std::vector ret = g_texturedirs_cache.get(); + if (ret.empty()) { + ret = fs::GetRecursiveDirs(g_settings->get("texture_path")); + g_texturedirs_cache.set(ret); + } + return ret; } diff --git a/src/client/texturepaths.h b/src/client/texturepaths.h index 599f637a1..b24a23447 100644 --- a/src/client/texturepaths.h +++ b/src/client/texturepaths.h @@ -7,7 +7,7 @@ #include #include -// Texture paths get cached and this clears the Cache. +// Texture paths get cached and this clears the cache. void clearTextureNameCache(); // Find out the full path of an image by trying different filename extensions. diff --git a/src/client/wieldmesh.h b/src/client/wieldmesh.h index 77d1d7bf1..fafd9e765 100644 --- a/src/client/wieldmesh.h +++ b/src/client/wieldmesh.h @@ -22,11 +22,9 @@ namespace scene } - struct ItemStack; class Client; class ITextureSource; -struct ContentFeatures; class ShadowRenderer; /* diff --git a/src/collision.h b/src/collision.h index 5306cdd8a..b38b38dd7 100644 --- a/src/collision.h +++ b/src/collision.h @@ -7,7 +7,6 @@ #include "irrlichttypes_bloated.h" #include -class Map; class IGameDef; class Environment; class ActiveObject; diff --git a/src/content/subgames.h b/src/content/subgames.h index 1884ce578..fb655f8ba 100644 --- a/src/content/subgames.h +++ b/src/content/subgames.h @@ -9,7 +9,6 @@ #include #include -class Settings; struct SubgameSpec { diff --git a/src/database/database-sqlite3.cpp b/src/database/database-sqlite3.cpp index b34516fb7..768efff55 100644 --- a/src/database/database-sqlite3.cpp +++ b/src/database/database-sqlite3.cpp @@ -826,6 +826,7 @@ ModStorageDatabaseSQLite3::~ModStorageDatabaseSQLite3() FINALIZE_STATEMENT(get) FINALIZE_STATEMENT(get_keys) FINALIZE_STATEMENT(get_all) + FINALIZE_STATEMENT(get_mods) } void ModStorageDatabaseSQLite3::createDatabase() @@ -845,6 +846,7 @@ void ModStorageDatabaseSQLite3::createDatabase() void ModStorageDatabaseSQLite3::initStatements() { + PREPARE_STATEMENT(get_mods, "SELECT DISTINCT `modname` FROM `entries`"); PREPARE_STATEMENT(get_all, "SELECT `key`, `value` FROM `entries` WHERE `modname` = ?"); PREPARE_STATEMENT(get_keys, "SELECT `key` FROM `entries` WHERE `modname` = ?"); PREPARE_STATEMENT(get, @@ -969,23 +971,13 @@ void ModStorageDatabaseSQLite3::listMods(std::vector *res) { verifyDatabase(); - // FIXME: please don't do this. this should be sqlite3_step like all others. - char *errmsg; - int status = sqlite3_exec(m_database, - "SELECT `modname` FROM `entries` GROUP BY `modname`;", - [](void *res_vp, int n_col, char **cols, char **col_names) noexcept -> int { - try { - ((decltype(res)) res_vp)->emplace_back(cols[0]); - } catch (...) { - return 1; - } - return 0; - }, (void *) res, &errmsg); - if (status != SQLITE_OK) { - auto msg = std::string("Error trying to list mods with metadata: ") + errmsg; - sqlite3_free(errmsg); - throw DatabaseException(msg); + while (sqlite3_step(m_stmt_get_mods) == SQLITE_ROW) { + auto name = sqlite_to_string_view(m_stmt_get_mods, 0); + res->emplace_back(name); } + sqlite3_vrfy(sqlite3_errcode(m_database), SQLITE_DONE); + + sqlite3_reset(m_stmt_get_mods); } #endif diff --git a/src/database/database-sqlite3.h b/src/database/database-sqlite3.h index 94e6e05c9..c54d611cd 100644 --- a/src/database/database-sqlite3.h +++ b/src/database/database-sqlite3.h @@ -293,6 +293,7 @@ protected: virtual void initStatements(); private: + sqlite3_stmt *m_stmt_get_mods = nullptr; sqlite3_stmt *m_stmt_get_all = nullptr; sqlite3_stmt *m_stmt_get_keys = nullptr; sqlite3_stmt *m_stmt_get = nullptr; diff --git a/src/defaultsettings.h b/src/defaultsettings.h index f49bc2b89..7b1ce1f18 100644 --- a/src/defaultsettings.h +++ b/src/defaultsettings.h @@ -4,7 +4,6 @@ #pragma once -class Settings; /** * initialize basic default settings diff --git a/src/dummygamedef.h b/src/dummygamedef.h index 932d8be3d..5b039158c 100644 --- a/src/dummygamedef.h +++ b/src/dummygamedef.h @@ -30,6 +30,7 @@ public: delete m_itemdef; } + bool isClient() override { return false; } IItemDefManager *getItemDefManager() override { return m_itemdef; } const NodeDefManager *getNodeDefManager() override { return m_nodedef; } NodeDefManager* getWritableNodeDefManager() { return m_nodedef; } diff --git a/src/emerge.cpp b/src/emerge.cpp index e819ead84..c4608f94e 100644 --- a/src/emerge.cpp +++ b/src/emerge.cpp @@ -801,6 +801,8 @@ void *EmergeThread::run() if (!error) block = finishGen(pos, &bmdata, &modified_blocks); + else + m_map->cancelBlockMake(&bmdata); if (!block || error) action = EMERGE_ERRORED; diff --git a/src/emerge.h b/src/emerge.h index 81c95f203..4cb860d3a 100644 --- a/src/emerge.h +++ b/src/emerge.h @@ -20,9 +20,9 @@ infostream << "EmergeThread: " x << std::endl; \ } +class EmergeManager; class EmergeThread; class NodeDefManager; -class Settings; class MapSettingsManager; class BiomeManager; class OreManager; diff --git a/src/fm_nodecontainer.h b/src/fm_nodecontainer.h index c095f3a94..34383fe31 100644 --- a/src/fm_nodecontainer.h +++ b/src/fm_nodecontainer.h @@ -37,9 +37,9 @@ public: { return getNodeRefUnsafe(p); }; - virtual void setNode(const v3pos_t &p, const MapNode &n, bool important = false) {}; + virtual void setNode(const v3pos_t &p, const MapNode &n, bool important = false) {}; virtual void clear() {} virtual void addArea(const VoxelArea &a) {}; - virtual void copyFrom(MapNode *src, const VoxelArea &src_area, v3pos_t from_pos, - v3pos_t to_pos, const v3pos_t &size) {}; + virtual void copyFrom(MapNode *src, bool is_mono_block, const VoxelArea &src_area, + v3pos_t from_pos, v3pos_t to_pos, const v3pos_t &size) {}; }; diff --git a/src/fm_serverenvironment.cpp b/src/fm_serverenvironment.cpp index 11aa93a17..ce0e1bcf4 100644 --- a/src/fm_serverenvironment.cpp +++ b/src/fm_serverenvironment.cpp @@ -4,21 +4,21 @@ #include "serverenvironment.h" #include "util/timetaker.h" -size_t ServerEnvironment::blockStep(MapBlockPtr block, float dtime, uint8_t activate) +size_t ServerEnvironment::blockStep(MapBlockPtr block, float dtime_s, uint8_t activate) { if (!block) return {}; u32 stamp = block->getTimestamp(); - if (!dtime && m_game_time > stamp && stamp != BLOCK_TIMESTAMP_UNDEFINED) - dtime = m_game_time - stamp; + if (!dtime_s && m_game_time > stamp && stamp != BLOCK_TIMESTAMP_UNDEFINED) + dtime_s = m_game_time - stamp; // Set current time as timestamp block->setTimestampNoChangedFlag(m_game_time); if (!block->m_node_timers .m_uptime_last) // not very good place, but minimum modifications - block->m_node_timers.m_uptime_last = m_game_time - dtime; + block->m_node_timers.m_uptime_last = m_game_time - dtime_s; const auto dtime_n = m_game_time - block->m_node_timers.m_uptime_last; block->m_node_timers.m_uptime_last = m_game_time; // DUMP("abm random ", block->getPos(), dtime_s, dtime_n,, stamp, block->getTimestamp(), block->m_node_timers.m_uptime_last, m_game_time); @@ -27,8 +27,8 @@ size_t ServerEnvironment::blockStep(MapBlockPtr block, float dtime, uint8_t acti if (block->isOrphan()) return {}; - block->step((float)dtime, [&](v3pos_t p, MapNode n, f32 d) -> bool { - return !block->isOrphan() && m_script->node_on_timer(p, n, d); + block->step((float)dtime_s, [&](v3pos_t p, MapNode n, NodeTimer t) -> bool { + return m_script->node_on_timer(p, n, t.elapsed, t.timeout); }); size_t triggers_run = 0; diff --git a/src/gamedef.h b/src/gamedef.h index 247ec09f6..07002fd1c 100644 --- a/src/gamedef.h +++ b/src/gamedef.h @@ -11,23 +11,13 @@ class IItemDefManager; class NodeDefManager; class ICraftDefManager; -class ITextureSource; -class IShaderSource; class IRollbackManager; -class EmergeManager; -class Camera; class ModChannel; -class ModStorage; class ModStorageDatabase; struct SubgameSpec; struct ModSpec; struct ModIPCStore; -namespace scene { - class IAnimatedMesh; - class ISceneManager; -} - /* An interface for fetching game-global definitions like tool and mapnode properties @@ -71,4 +61,5 @@ public: virtual bool sendModChannelMessage(const std::string &channel, const std::string &message) = 0; virtual ModChannel *getModChannel(const std::string &channel) = 0; + virtual bool isClient() = 0; }; diff --git a/src/gettext_plural_form.cpp b/src/gettext_plural_form.cpp index 89dd721a4..a356e33e8 100644 --- a/src/gettext_plural_form.cpp +++ b/src/gettext_plural_form.cpp @@ -1,136 +1,77 @@ -// Minetest +// Luanti // SPDX-License-Identifier: LGPL-2.1-or-later +/* This file implements a recursive descent parser for gettext plural forms. + * Left recursion (for left-associative operators) is implemented by parse_ltr, which iteratively attempts to reduce + * expressions from operations of the same precedence. This should not be confused with reduce_ltr, which recurses + * through a list of operators with the same precedence (not the input string!) to search for a match. + * Note that this only implements a subset of C expressions. See: + * https://git.savannah.gnu.org/gitweb/?p=gettext.git;a=blob;f=gettext-runtime/intl/plural.y + */ + #include "gettext_plural_form.h" #include "util/string.h" +#include -static size_t minsize(const GettextPluralForm::Ptr &form) +static GettextPluralForm::NumT identity(GettextPluralForm::NumT n) { - return form ? form->size() : 0; + return n; } -static size_t minsize(const GettextPluralForm::Ptr &f, const GettextPluralForm::Ptr &g) +static GettextPluralForm::NumT ternary_op(GettextPluralForm::NumT n, const GettextPluralForm::Function &cond, + const GettextPluralForm::Function &val, const GettextPluralForm::Function &alt) { - if (sizeof(g) > 0) - return std::min(minsize(f), minsize(g)); - return f ? f->size() : 0; + return cond(n) ? val(n) : alt(n); } -class Identity: public GettextPluralForm +template typename Func, class... Args> +static GettextPluralForm::Function wrap_op(Args&&... args) { - public: - Identity(size_t nplurals): GettextPluralForm(nplurals) {}; - NumT operator()(const NumT n) const override - { - return n; - } -}; + return std::bind(Func(), std::bind(std::move(args), std::placeholders::_1)...); +} -class ConstValue: public GettextPluralForm -{ - public: - ConstValue(size_t nplurals, NumT val): GettextPluralForm(nplurals), value(val) {}; - NumT operator()(const NumT n) const override - { - return value; - } - private: - NumT value; -}; +typedef std::pair ParserResult; +typedef ParserResult (*Parser)(std::wstring_view); -template typename F> -class UnaryOperation: public GettextPluralForm -{ - public: - UnaryOperation(const Ptr &op): - GettextPluralForm(minsize(op)), op(op) {} - NumT operator()(const NumT n) const override - { - if (operator bool()) - return func((*op)(n)); - return 0; - } - private: - Ptr op; - static constexpr F func = {}; -}; - -template typename F> -class BinaryOperation: public GettextPluralForm -{ - public: - BinaryOperation(const Ptr &lhs, const Ptr &rhs): - GettextPluralForm(minsize(lhs, rhs)), - lhs(lhs), rhs(rhs) {} - NumT operator()(const NumT n) const override - { - if (operator bool()) - return func((*lhs)(n), (*rhs)(n)); - return 0; - } - private: - Ptr lhs, rhs; - static constexpr F func = {}; -}; - -class TernaryOperation: public GettextPluralForm -{ - public: - TernaryOperation(const Ptr &cond, const Ptr &val, const Ptr &alt): - GettextPluralForm(std::min(minsize(cond), minsize(val, alt))), - cond(cond), val(val), alt(alt) {} - NumT operator()(const NumT n) const override - { - if (operator bool()) - return (*cond)(n) ? (*val)(n) : (*alt)(n); - return 0; - } - private: - Ptr cond, val, alt; -}; - -typedef std::pair ParserResult; -typedef ParserResult (*Parser)(const size_t, std::wstring_view); - -static ParserResult parse_expr(const size_t nplurals, std::wstring_view str); +static ParserResult parse_expr(std::wstring_view str); template typename Operator> -static ParserResult reduce_ltr(const size_t nplurals, const ParserResult &res, const wchar_t* pattern) +static ParserResult reduce_ltr_single(const ParserResult &res, const std::wstring &pattern) { if (!str_starts_with(res.second, pattern)) return ParserResult(nullptr, res.second); - auto next = Parser(nplurals, trim(res.second.substr(std::char_traits::length(pattern)))); + auto next = Parser(trim(res.second.substr(pattern.size()))); if (!next.first) return next; - next.first = GettextPluralForm::Ptr(new BinaryOperation(res.first, next.first)); + next.first = wrap_op(res.first, next.first); next.second = trim(next.second); return next; } template -static ParserResult reduce_ltr(const size_t nplurals, const ParserResult &res, const wchar_t**) +static ParserResult reduce_ltr(const ParserResult &res) { return ParserResult(nullptr, res.second); } template typename Operator, template typename... Operators> -static ParserResult reduce_ltr(const size_t nplurals, const ParserResult &res, const wchar_t** patterns) +static ParserResult reduce_ltr(const ParserResult &res, const std::wstring &pattern, const typename std::conditional<1,std::wstring,Operators>::type&... patterns) { - auto next = reduce_ltr(nplurals, res, patterns[0]); + auto next = reduce_ltr_single(res, pattern); if (next.first || next.second != res.second) return next; - return reduce_ltr(nplurals, res, patterns+1); + return reduce_ltr(res, patterns...); } -template typename Operator, template typename... Operators> -static ParserResult parse_ltr(const size_t nplurals, std::wstring_view str, const wchar_t** patterns) +template typename... Operators> +static ParserResult parse_ltr(std::wstring_view str, const typename std::conditional<1,std::wstring,Operators>::type&... patterns) { - auto &&pres = Parser(nplurals, str); + auto &&pres = Parser(str); if (!pres.first) return pres; pres.second = trim(pres.second); while (!pres.second.empty()) { - auto next = reduce_ltr(nplurals, pres, patterns); + auto next = reduce_ltr(pres, patterns...); if (!next.first) return pres; next.second = trim(next.second); @@ -139,25 +80,26 @@ static ParserResult parse_ltr(const size_t nplurals, std::wstring_view str, cons return pres; } -static ParserResult parse_atomic(const size_t nplurals, std::wstring_view str) +static ParserResult parse_atomic(std::wstring_view str) { if (str.empty()) return ParserResult(nullptr, str); if (str[0] == 'n') - return ParserResult(new Identity(nplurals), trim(str.substr(1))); + return ParserResult(identity, trim(str.substr(1))); wchar_t* endp; auto val = wcstoul(str.data(), &endp, 10); - return ParserResult(new ConstValue(nplurals, val), trim(str.substr(endp-str.data()))); + return ParserResult([val](GettextPluralForm::NumT _) -> GettextPluralForm::NumT { return val; }, + trim(str.substr(endp-str.data()))); } -static ParserResult parse_parenthesized(const size_t nplurals, std::wstring_view str) +static ParserResult parse_parenthesized(std::wstring_view str) { if (str.empty()) return ParserResult(nullptr, str); if (str[0] != '(') - return parse_atomic(nplurals, str); - auto result = parse_expr(nplurals, str.substr(1)); + return parse_atomic(str); + auto result = parse_expr(str.substr(1)); if (result.first) { if (result.second.empty() || result.second[0] != ')') result.first = nullptr; @@ -167,90 +109,101 @@ static ParserResult parse_parenthesized(const size_t nplurals, std::wstring_view return result; } -static ParserResult parse_negation(const size_t nplurals, std::wstring_view str) +static ParserResult parse_negation(std::wstring_view str) { if (str.empty()) return ParserResult(nullptr, str); if (str[0] != '!') - return parse_parenthesized(nplurals, str); - auto result = parse_negation(nplurals, trim(str.substr(1))); + return parse_parenthesized(str); + auto result = parse_negation(trim(str.substr(1))); if (result.first) - result.first = GettextPluralForm::Ptr(new UnaryOperation(result.first)); + result.first = wrap_op(result.first); return result; } -static ParserResult parse_multiplicative(const size_t nplurals, std::wstring_view str) +template struct safe_divides { + T operator()(T lhs, T rhs) const + { + return rhs == 0 ? 0 : (lhs / rhs); + } +}; + +template struct safe_modulus { + T operator()(T lhs, T rhs) const + { + return rhs == 0 ? 0 : (lhs % rhs); + } +}; + +static ParserResult parse_multiplicative(std::wstring_view str) { - static const wchar_t *patterns[] = { L"*", L"/", L"%" }; - return parse_ltr(nplurals, str, patterns); + return parse_ltr(str, L"*", L"/", L"%"); } -static ParserResult parse_additive(const size_t nplurals, std::wstring_view str) +static ParserResult parse_additive(std::wstring_view str) { - static const wchar_t *patterns[] = { L"+", L"-" }; - return parse_ltr(nplurals, str, patterns); + return parse_ltr(str, L"+", L"-"); } -static ParserResult parse_comparison(const size_t nplurals, std::wstring_view str) +static ParserResult parse_comparison(std::wstring_view str) { - static const wchar_t *patterns[] = { L"<=", L">=", L"<", L">" }; - return parse_ltr(nplurals, str, patterns); + return parse_ltr(str, L"<=", L">=", L"<", L">"); } -static ParserResult parse_equality(const size_t nplurals, std::wstring_view str) +static ParserResult parse_equality(std::wstring_view str) { - static const wchar_t *patterns[] = { L"==", L"!=" }; - return parse_ltr(nplurals, str, patterns); + return parse_ltr(str, L"==", L"!="); } -static ParserResult parse_conjunction(const size_t nplurals, std::wstring_view str) +static ParserResult parse_conjunction(std::wstring_view str) { - static const wchar_t *and_pattern[] = { L"&&" }; - return parse_ltr(nplurals, str, and_pattern); + return parse_ltr(str, L"&&"); } -static ParserResult parse_disjunction(const size_t nplurals, std::wstring_view str) +static ParserResult parse_disjunction(std::wstring_view str) { - static const wchar_t *or_pattern[] = { L"||" }; - return parse_ltr(nplurals, str, or_pattern); + return parse_ltr(str, L"||"); } -static ParserResult parse_ternary(const size_t nplurals, std::wstring_view str) +static ParserResult parse_ternary(std::wstring_view str) { - auto pres = parse_disjunction(nplurals, str); + auto pres = parse_disjunction(str); if (pres.second.empty() || pres.second[0] != '?') // no ? : return pres; auto cond = pres.first; - pres = parse_ternary(nplurals, trim(pres.second.substr(1))); + pres = parse_ternary(trim(pres.second.substr(1))); if (pres.second.empty() || pres.second[0] != ':') return ParserResult(nullptr, pres.second); auto val = pres.first; - pres = parse_ternary(nplurals, trim(pres.second.substr(1))); - return ParserResult(new TernaryOperation(cond, val, pres.first), pres.second); + pres = parse_ternary(trim(pres.second.substr(1))); + return ParserResult(std::bind(ternary_op, std::placeholders::_1, + std::move(cond), std::move(val), std::move(pres.first)), pres.second); } -static ParserResult parse_expr(const size_t nplurals, std::wstring_view str) +static ParserResult parse_expr(std::wstring_view str) { - return parse_ternary(nplurals, trim(str)); + return parse_ternary(trim(str)); } -GettextPluralForm::Ptr GettextPluralForm::parse(const size_t nplurals, std::wstring_view str) +static GettextPluralForm::Function parse(std::wstring_view str) { - if (nplurals == 0) - return nullptr; - auto result = parse_expr(nplurals, str); + auto result = parse_expr(str); if (!result.second.empty()) return nullptr; return result.first; } -GettextPluralForm::Ptr GettextPluralForm::parseHeaderLine(std::wstring_view str) +GettextPluralForm::GettextPluralForm(std::wstring_view str) { if (!str_starts_with(str, L"Plural-Forms: nplurals=") || !str_ends_with(str, L";")) - return nullptr; - auto nplurals = wcstoul(str.data()+23, nullptr, 10); + return; + auto size = wcstoul(str.data()+23, nullptr, 10); auto pos = str.find(L"plural="); if (pos == str.npos) - return nullptr; - return parse(nplurals, str.substr(pos+7, str.size()-pos-8)); + return; + auto result = parse(str.substr(pos+7, str.size()-pos-8)); + if (size > 0 && result) { + nplurals = size; + func = result; + } } diff --git a/src/gettext_plural_form.h b/src/gettext_plural_form.h index 1d3195e9a..cfb601750 100644 --- a/src/gettext_plural_form.h +++ b/src/gettext_plural_form.h @@ -1,33 +1,45 @@ -// Minetest +// Luanti // SPDX-License-Identifier: LGPL-2.1-or-later #pragma once #include #include +#include -// Note that this only implements a subset of C expressions. See: -// https://git.savannah.gnu.org/gitweb/?p=gettext.git;a=blob;f=gettext-runtime/intl/plural.y class GettextPluralForm { public: using NumT = unsigned long; + using Function = std::function; using Ptr = std::shared_ptr; + GettextPluralForm(std::wstring_view str); + size_t size() const { return nplurals; }; - virtual NumT operator()(const NumT) const = 0; - virtual operator bool() const - { - return size() > 0; - } - virtual ~GettextPluralForm() {}; - static GettextPluralForm::Ptr parse(const size_t nplurals, std::wstring_view str); - static GettextPluralForm::Ptr parseHeaderLine(std::wstring_view str); -protected: - GettextPluralForm(size_t nplurals): nplurals(nplurals) {}; + // Note that this function does not perform any bounds check as the number of plural + // translations provided by the translation file may deviate from nplurals, + NumT operator()(const NumT n) const { + return func ? func(n) : 0; + } + + operator bool() const + { + return nplurals > 0; + } + + static Ptr parseHeaderLine(std::wstring_view str) { + return Ptr(new GettextPluralForm(str)); + } private: - const size_t nplurals; + // The number of plural forms. + size_t nplurals = 0; + + // The formula for determining the plural form based on the input value; see + // https://www.gnu.org/software/gettext/manual/html_node/Translating-plural-forms.html + // for details. + Function func = nullptr; }; diff --git a/src/gui/CMakeLists.txt b/src/gui/CMakeLists.txt index a4faa1f22..ed8588ec4 100644 --- a/src/gui/CMakeLists.txt +++ b/src/gui/CMakeLists.txt @@ -10,7 +10,6 @@ set(gui_SRCS ${CMAKE_CURRENT_SOURCE_DIR}/guiButtonItemImage.cpp ${CMAKE_CURRENT_SOURCE_DIR}/guiButtonKey.cpp ${CMAKE_CURRENT_SOURCE_DIR}/guiChatConsole.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/guiEditBox.cpp ${CMAKE_CURRENT_SOURCE_DIR}/guiEditBoxWithScrollbar.cpp ${CMAKE_CURRENT_SOURCE_DIR}/guiEngine.cpp ${CMAKE_CURRENT_SOURCE_DIR}/guiFormSpecMenu.cpp diff --git a/src/gui/guiAnimatedImage.h b/src/gui/guiAnimatedImage.h index 42d2f3451..163146d61 100644 --- a/src/gui/guiAnimatedImage.h +++ b/src/gui/guiAnimatedImage.h @@ -5,7 +5,6 @@ #include -class ISimpleTextureSource; class GUIAnimatedImage : public gui::IGUIElement { public: diff --git a/src/gui/guiEditBox.cpp b/src/gui/guiEditBox.cpp deleted file mode 100644 index a5f2581f7..000000000 --- a/src/gui/guiEditBox.cpp +++ /dev/null @@ -1,861 +0,0 @@ -// Luanti -// SPDX-License-Identifier: LGPL-2.1-or-later -// Copyright (C) 2021 Minetest - -#include "guiEditBox.h" - -#include "IGUISkin.h" -#include "IGUIEnvironment.h" -#include "IGUIFont.h" - -#include "porting.h" -#include "util/string.h" - -GUIEditBox::~GUIEditBox() -{ - if (m_override_font) - m_override_font->drop(); - - if (m_operator) - m_operator->drop(); - - if (m_vscrollbar) - m_vscrollbar->drop(); -} - -void GUIEditBox::setOverrideFont(IGUIFont *font) -{ - if (m_override_font == font) - return; - - if (m_override_font) - m_override_font->drop(); - - m_override_font = font; - - if (m_override_font) - m_override_font->grab(); - - breakText(); -} - -//! Get the font which is used right now for drawing -IGUIFont *GUIEditBox::getActiveFont() const -{ - if (m_override_font) - return m_override_font; - IGUISkin *skin = Environment->getSkin(); - if (skin) - return skin->getFont(); - return 0; -} - -//! Sets another color for the text. -void GUIEditBox::setOverrideColor(video::SColor color) -{ - m_override_color = color; - m_override_color_enabled = true; -} - -video::SColor GUIEditBox::getOverrideColor() const -{ - return m_override_color; -} - -//! Sets if the text should use the overide color or the color in the gui skin. -void GUIEditBox::enableOverrideColor(bool enable) -{ - m_override_color_enabled = enable; -} - -//! Enables or disables word wrap -void GUIEditBox::setWordWrap(bool enable) -{ - m_word_wrap = enable; - breakText(); -} - -//! Enables or disables newlines. -void GUIEditBox::setMultiLine(bool enable) -{ - m_multiline = enable; -} - -//! Enables or disables automatic scrolling with cursor position -//! \param enable: If set to true, the text will move around with the cursor position -void GUIEditBox::setAutoScroll(bool enable) -{ - m_autoscroll = enable; -} - -void GUIEditBox::setPasswordBox(bool password_box, wchar_t password_char) -{ - m_passwordbox = password_box; - if (m_passwordbox) { - m_passwordchar = password_char; - setMultiLine(false); - setWordWrap(false); - m_broken_text.clear(); - } -} - -//! Sets text justification -void GUIEditBox::setTextAlignment(EGUI_ALIGNMENT horizontal, EGUI_ALIGNMENT vertical) -{ - m_halign = horizontal; - m_valign = vertical; -} - -//! Sets the new caption of this element. -void GUIEditBox::setText(const wchar_t *text) -{ - Text = text; - if (u32(m_cursor_pos) > Text.size()) - m_cursor_pos = Text.size(); - m_hscroll_pos = 0; - breakText(); -} - -//! Sets the maximum amount of characters which may be entered in the box. -//! \param max: Maximum amount of characters. If 0, the character amount is -//! infinity. -void GUIEditBox::setMax(u32 max) -{ - m_max = max; - - if (Text.size() > m_max && m_max != 0) - Text = Text.subString(0, m_max); -} - -//! Gets the area of the text in the edit box -//! \return Returns the size in pixels of the text -core::dimension2du GUIEditBox::getTextDimension() -{ - core::rect ret; - - setTextRect(0); - ret = m_current_text_rect; - - for (u32 i = 1; i < m_broken_text.size(); ++i) { - setTextRect(i); - ret.addInternalPoint(m_current_text_rect.UpperLeftCorner); - ret.addInternalPoint(m_current_text_rect.LowerRightCorner); - } - - return core::dimension2du(ret.getSize()); -} - -//! Turns the border on or off -void GUIEditBox::setDrawBorder(bool border) -{ - m_border = border; -} - -void GUIEditBox::setWritable(bool can_write_text) -{ - m_writable = can_write_text; -} - -//! set text markers -void GUIEditBox::setTextMarkers(s32 begin, s32 end) -{ - if (begin != m_mark_begin || end != m_mark_end) { - m_mark_begin = begin; - m_mark_end = end; - - if (!m_passwordbox && m_operator && m_mark_begin != m_mark_end) { - // copy to primary selection - const s32 realmbgn = m_mark_begin < m_mark_end ? m_mark_begin : m_mark_end; - const s32 realmend = m_mark_begin < m_mark_end ? m_mark_end : m_mark_begin; - - std::string s = stringw_to_utf8(Text.subString(realmbgn, realmend - realmbgn)); - m_operator->copyToPrimarySelection(s.c_str()); - } - - sendGuiEvent(EGET_EDITBOX_MARKING_CHANGED); - } -} - -//! send some gui event to parent -void GUIEditBox::sendGuiEvent(EGUI_EVENT_TYPE type) -{ - if (Parent) { - SEvent e; - e.EventType = EET_GUI_EVENT; - e.GUIEvent.Caller = this; - e.GUIEvent.Element = 0; - e.GUIEvent.EventType = type; - - Parent->OnEvent(e); - } -} - -//! called if an event happened. -bool GUIEditBox::OnEvent(const SEvent &event) -{ - if (isEnabled()) { - switch (event.EventType) { - case EET_GUI_EVENT: - if (event.GUIEvent.EventType == EGET_ELEMENT_FOCUS_LOST) { - if (event.GUIEvent.Caller == this) { - m_mouse_marking = false; - setTextMarkers(0, 0); - } - } - break; - case EET_KEY_INPUT_EVENT: - if (processKey(event)) - return true; - break; - case EET_MOUSE_INPUT_EVENT: - if (processMouse(event)) - return true; - break; - case EET_STRING_INPUT_EVENT: - inputString(*event.StringInput.Str); - return true; - default: - break; - } - } - - return IGUIElement::OnEvent(event); -} - -bool GUIEditBox::processKey(const SEvent &event) -{ - if (!event.KeyInput.PressedDown) - return false; - - bool text_changed = false; - s32 new_mark_begin = m_mark_begin; - s32 new_mark_end = m_mark_end; - - // control shortcut handling - if (event.KeyInput.Control) { - - // german backlash '\' entered with control + '?' - if (event.KeyInput.Char == '\\') { - inputChar(event.KeyInput.Char); - return true; - } - - switch (event.KeyInput.Key) { - case KEY_KEY_A: - // select all - new_mark_begin = 0; - new_mark_end = Text.size(); - break; - case KEY_KEY_C: - onKeyControlC(event); - break; - case KEY_KEY_X: - text_changed = onKeyControlX(event, new_mark_begin, new_mark_end); - break; - case KEY_KEY_V: - text_changed = onKeyControlV(event, new_mark_begin, new_mark_end); - break; - case KEY_HOME: - // move/highlight to start of text - if (event.KeyInput.Shift) { - new_mark_end = m_cursor_pos; - new_mark_begin = 0; - m_cursor_pos = 0; - } else { - m_cursor_pos = 0; - new_mark_begin = 0; - new_mark_end = 0; - } - break; - case KEY_END: - // move/highlight to end of text - if (event.KeyInput.Shift) { - new_mark_begin = m_cursor_pos; - new_mark_end = Text.size(); - m_cursor_pos = 0; - } else { - m_cursor_pos = Text.size(); - new_mark_begin = 0; - new_mark_end = 0; - } - break; - default: - return false; - } - } else { - switch (event.KeyInput.Key) { - case KEY_END: { - s32 p = Text.size(); - if (m_word_wrap || m_multiline) { - p = getLineFromPos(m_cursor_pos); - p = m_broken_text_positions[p] + - (s32)m_broken_text[p].size(); - if (p > 0 && (Text[p - 1] == L'\r' || - Text[p - 1] == L'\n')) - p -= 1; - } - - if (event.KeyInput.Shift) { - if (m_mark_begin == m_mark_end) - new_mark_begin = m_cursor_pos; - - new_mark_end = p; - } else { - new_mark_begin = 0; - new_mark_end = 0; - } - m_cursor_pos = p; - m_blink_start_time = porting::getTimeMs(); - } break; - case KEY_HOME: { - - s32 p = 0; - if (m_word_wrap || m_multiline) { - p = getLineFromPos(m_cursor_pos); - p = m_broken_text_positions[p]; - } - - if (event.KeyInput.Shift) { - if (m_mark_begin == m_mark_end) - new_mark_begin = m_cursor_pos; - new_mark_end = p; - } else { - new_mark_begin = 0; - new_mark_end = 0; - } - m_cursor_pos = p; - m_blink_start_time = porting::getTimeMs(); - } break; - case KEY_RETURN: - if (m_multiline) { - inputChar(L'\n'); - } else { - calculateScrollPos(); - sendGuiEvent(EGET_EDITBOX_ENTER); - } - return true; - case KEY_LEFT: - if (event.KeyInput.Shift) { - if (m_cursor_pos > 0) { - if (m_mark_begin == m_mark_end) - new_mark_begin = m_cursor_pos; - - new_mark_end = m_cursor_pos - 1; - } - } else { - new_mark_begin = 0; - new_mark_end = 0; - } - - if (m_cursor_pos > 0) - m_cursor_pos--; - m_blink_start_time = porting::getTimeMs(); - break; - case KEY_RIGHT: - if (event.KeyInput.Shift) { - if (Text.size() > (u32)m_cursor_pos) { - if (m_mark_begin == m_mark_end) - new_mark_begin = m_cursor_pos; - - new_mark_end = m_cursor_pos + 1; - } - } else { - new_mark_begin = 0; - new_mark_end = 0; - } - - if (Text.size() > (u32)m_cursor_pos) - m_cursor_pos++; - m_blink_start_time = porting::getTimeMs(); - break; - case KEY_UP: - if (!onKeyUp(event, new_mark_begin, new_mark_end)) { - return false; - } - break; - case KEY_DOWN: - if (!onKeyDown(event, new_mark_begin, new_mark_end)) { - return false; - } - break; - case KEY_BACK: - text_changed = onKeyBack(event, new_mark_begin, new_mark_end); - break; - - case KEY_DELETE: - text_changed = onKeyDelete(event, new_mark_begin, new_mark_end); - break; - - case KEY_ESCAPE: - case KEY_TAB: - case KEY_SHIFT: - case KEY_F1: - case KEY_F2: - case KEY_F3: - case KEY_F4: - case KEY_F5: - case KEY_F6: - case KEY_F7: - case KEY_F8: - case KEY_F9: - case KEY_F10: - case KEY_F11: - case KEY_F12: - case KEY_F13: - case KEY_F14: - case KEY_F15: - case KEY_F16: - case KEY_F17: - case KEY_F18: - case KEY_F19: - case KEY_F20: - case KEY_F21: - case KEY_F22: - case KEY_F23: - case KEY_F24: - // ignore these keys - return false; - - default: - inputChar(event.KeyInput.Char); - return true; - } - } - - // Set new text markers - setTextMarkers(new_mark_begin, new_mark_end); - - // break the text if it has changed - if (text_changed) { - breakText(); - sendGuiEvent(EGET_EDITBOX_CHANGED); - } - - calculateScrollPos(); - - return true; -} - -bool GUIEditBox::onKeyUp(const SEvent &event, s32 &mark_begin, s32 &mark_end) -{ - if (m_multiline || (m_word_wrap && m_broken_text.size() > 1)) { - s32 lineNo = getLineFromPos(m_cursor_pos); - s32 mb = (m_mark_begin == m_mark_end) ? m_cursor_pos : - (m_mark_begin > m_mark_end ? m_mark_begin : m_mark_end); - if (lineNo > 0) { - s32 cp = m_cursor_pos - m_broken_text_positions[lineNo]; - if ((s32)m_broken_text[lineNo - 1].size() < cp) { - m_cursor_pos = m_broken_text_positions[lineNo - 1] + - core::max_((u32)1, m_broken_text[lineNo - 1].size()) - 1; - } - else - m_cursor_pos = m_broken_text_positions[lineNo - 1] + cp; - } - - if (event.KeyInput.Shift) { - mark_begin = mb; - mark_end = m_cursor_pos; - } else { - mark_begin = 0; - mark_end = 0; - } - - return true; - } - - return false; -} - -bool GUIEditBox::onKeyDown(const SEvent &event, s32 &mark_begin, s32 &mark_end) -{ - if (m_multiline || (m_word_wrap && m_broken_text.size() > 1)) { - s32 lineNo = getLineFromPos(m_cursor_pos); - s32 mb = (m_mark_begin == m_mark_end) ? m_cursor_pos : - (m_mark_begin < m_mark_end ? m_mark_begin : m_mark_end); - if (lineNo < (s32)m_broken_text.size() - 1) { - s32 cp = m_cursor_pos - m_broken_text_positions[lineNo]; - if ((s32)m_broken_text[lineNo + 1].size() < cp) { - m_cursor_pos = m_broken_text_positions[lineNo + 1] + - core::max_((u32)1, m_broken_text[lineNo + 1].size()) - 1; - } - else - m_cursor_pos = m_broken_text_positions[lineNo + 1] + cp; - } - - if (event.KeyInput.Shift) { - mark_begin = mb; - mark_end = m_cursor_pos; - } else { - mark_begin = 0; - mark_end = 0; - } - - return true; - } - - return false; -} - -void GUIEditBox::onKeyControlC(const SEvent &event) -{ - // copy to clipboard - if (m_passwordbox || !m_operator || m_mark_begin == m_mark_end) - return; - - const s32 realmbgn = m_mark_begin < m_mark_end ? m_mark_begin : m_mark_end; - const s32 realmend = m_mark_begin < m_mark_end ? m_mark_end : m_mark_begin; - - std::string s = stringw_to_utf8(Text.subString(realmbgn, realmend - realmbgn)); - m_operator->copyToClipboard(s.c_str()); -} - -bool GUIEditBox::onKeyControlX(const SEvent &event, s32 &mark_begin, s32 &mark_end) -{ - // First copy to clipboard - onKeyControlC(event); - - if (!m_writable) - return false; - - if (m_passwordbox || !m_operator || m_mark_begin == m_mark_end) - return false; - - const s32 realmbgn = m_mark_begin < m_mark_end ? m_mark_begin : m_mark_end; - const s32 realmend = m_mark_begin < m_mark_end ? m_mark_end : m_mark_begin; - - // Now remove from box if enabled - if (isEnabled()) { - // delete - core::stringw s; - s = Text.subString(0, realmbgn); - s.append(Text.subString(realmend, Text.size() - realmend)); - Text = s; - - m_cursor_pos = realmbgn; - mark_begin = 0; - mark_end = 0; - return true; - } - - return false; -} - -bool GUIEditBox::onKeyControlV(const SEvent &event, s32 &mark_begin, s32 &mark_end) -{ - if (!isEnabled() || !m_writable) - return false; - - // paste from the clipboard - if (!m_operator) - return false; - - const s32 realmbgn = m_mark_begin < m_mark_end ? m_mark_begin : m_mark_end; - const s32 realmend = m_mark_begin < m_mark_end ? m_mark_end : m_mark_begin; - - // add new character - if (const c8 *p = m_operator->getTextFromClipboard()) { - core::stringw inserted_text = utf8_to_stringw(p); - if (m_mark_begin == m_mark_end) { - // insert text - core::stringw s = Text.subString(0, m_cursor_pos); - s.append(inserted_text); - s.append(Text.subString( - m_cursor_pos, Text.size() - m_cursor_pos)); - - if (!m_max || s.size() <= m_max) { - Text = s; - m_cursor_pos += inserted_text.size(); - } - } else { - // replace text - - core::stringw s = Text.subString(0, realmbgn); - s.append(inserted_text); - s.append(Text.subString(realmend, Text.size() - realmend)); - - if (!m_max || s.size() <= m_max) { - Text = s; - m_cursor_pos = realmbgn + inserted_text.size(); - } - } - } - - mark_begin = 0; - mark_end = 0; - return true; -} - -bool GUIEditBox::onKeyBack(const SEvent &event, s32 &mark_begin, s32 &mark_end) -{ - if (!isEnabled() || Text.empty() || !m_writable) - return false; - - core::stringw s; - - if (m_mark_begin != m_mark_end) { - // delete marked text - const s32 realmbgn = - m_mark_begin < m_mark_end ? m_mark_begin : m_mark_end; - const s32 realmend = - m_mark_begin < m_mark_end ? m_mark_end : m_mark_begin; - - s = Text.subString(0, realmbgn); - s.append(Text.subString(realmend, Text.size() - realmend)); - Text = s; - - m_cursor_pos = realmbgn; - } else { - // delete text behind cursor - if (m_cursor_pos > 0) - s = Text.subString(0, m_cursor_pos - 1); - else - s = L""; - s.append(Text.subString(m_cursor_pos, Text.size() - m_cursor_pos)); - Text = s; - --m_cursor_pos; - } - - if (m_cursor_pos < 0) - m_cursor_pos = 0; - m_blink_start_time = porting::getTimeMs(); // os::Timer::getTime(); - mark_begin = 0; - mark_end = 0; - return true; -} - -bool GUIEditBox::onKeyDelete(const SEvent &event, s32 &mark_begin, s32 &mark_end) -{ - if (!isEnabled() || Text.empty() || !m_writable) - return false; - - core::stringw s; - - if (m_mark_begin != m_mark_end) { - // delete marked text - const s32 realmbgn = - m_mark_begin < m_mark_end ? m_mark_begin : m_mark_end; - const s32 realmend = - m_mark_begin < m_mark_end ? m_mark_end : m_mark_begin; - - s = Text.subString(0, realmbgn); - s.append(Text.subString(realmend, Text.size() - realmend)); - Text = s; - - m_cursor_pos = realmbgn; - } else { - // delete text before cursor - s = Text.subString(0, m_cursor_pos); - s.append(Text.subString( - m_cursor_pos + 1, Text.size() - m_cursor_pos - 1)); - Text = s; - } - - if (m_cursor_pos > (s32)Text.size()) - m_cursor_pos = (s32)Text.size(); - - m_blink_start_time = porting::getTimeMs(); // os::Timer::getTime(); - mark_begin = 0; - mark_end = 0; - return true; -} - -void GUIEditBox::inputChar(wchar_t c) -{ - if (c == 0) - return; - core::stringw s(&c, 1); - inputString(s); -} - -void GUIEditBox::inputString(const core::stringw &str) -{ - if (!isEnabled() || !m_writable) - return; - - u32 len = str.size(); - if (Text.size()+len <= m_max || m_max == 0) { - core::stringw s; - if (m_mark_begin != m_mark_end) { - // replace marked text - s32 real_begin = m_mark_begin < m_mark_end ? m_mark_begin : m_mark_end; - s32 real_end = m_mark_begin < m_mark_end ? m_mark_end : m_mark_begin; - - s = Text.subString(0, real_begin); - s.append(str); - s.append(Text.subString(real_end, Text.size() - real_end)); - Text = s; - m_cursor_pos = real_begin + len; - } else { - // append string - s = Text.subString(0, m_cursor_pos); - s.append(str); - s.append(Text.subString(m_cursor_pos, - Text.size() - m_cursor_pos)); - Text = s; - m_cursor_pos += len; - } - - m_blink_start_time = porting::getTimeMs(); - setTextMarkers(0, 0); - } - - breakText(); - sendGuiEvent(EGET_EDITBOX_CHANGED); - calculateScrollPos(); -} - -bool GUIEditBox::processMouse(const SEvent &event) -{ - switch (event.MouseInput.Event) { - case EMIE_LMOUSE_LEFT_UP: - if (Environment->hasFocus(this)) { - m_cursor_pos = getCursorPos( - event.MouseInput.X, event.MouseInput.Y); - if (m_mouse_marking) { - setTextMarkers(m_mark_begin, m_cursor_pos); - } - m_mouse_marking = false; - calculateScrollPos(); - return true; - } - break; - case EMIE_MOUSE_MOVED: { - if (m_mouse_marking) { - m_cursor_pos = getCursorPos( - event.MouseInput.X, event.MouseInput.Y); - setTextMarkers(m_mark_begin, m_cursor_pos); - calculateScrollPos(); - return true; - } - } break; - case EMIE_LMOUSE_PRESSED_DOWN: - - if (!Environment->hasFocus(this)) { - m_blink_start_time = porting::getTimeMs(); - m_mouse_marking = true; - m_cursor_pos = getCursorPos( - event.MouseInput.X, event.MouseInput.Y); - setTextMarkers(m_cursor_pos, m_cursor_pos); - calculateScrollPos(); - return true; - } else { - if (!AbsoluteClippingRect.isPointInside(core::position2d( - event.MouseInput.X, event.MouseInput.Y))) { - return false; - } else { - // move cursor - m_cursor_pos = getCursorPos( - event.MouseInput.X, event.MouseInput.Y); - - s32 newMarkBegin = m_mark_begin; - if (!m_mouse_marking) - newMarkBegin = m_cursor_pos; - - m_mouse_marking = true; - setTextMarkers(newMarkBegin, m_cursor_pos); - calculateScrollPos(); - return true; - } - } - case EMIE_MOUSE_WHEEL: - if (m_vscrollbar && m_vscrollbar->isVisible()) { - s32 pos = m_vscrollbar->getTargetPos(); - s32 step = m_vscrollbar->getSmallStep(); - m_vscrollbar->setPosInterpolated(pos - event.MouseInput.Wheel * step); - return true; - } - break; - case EMIE_MMOUSE_PRESSED_DOWN: { - if (!AbsoluteClippingRect.isPointInside(core::position2d( - event.MouseInput.X, event.MouseInput.Y))) - return false; - - if (!Environment->hasFocus(this)) { - m_blink_start_time = porting::getTimeMs(); - } - - // move cursor and disable marking - m_cursor_pos = getCursorPos(event.MouseInput.X, event.MouseInput.Y); - m_mouse_marking = false; - setTextMarkers(m_cursor_pos, m_cursor_pos); - - // paste from the primary selection - inputString([&] { - if (!m_operator) - return core::stringw(); - const c8 *inserted_text_utf8 = m_operator->getTextFromPrimarySelection(); - if (!inserted_text_utf8) - return core::stringw(); - return utf8_to_stringw(inserted_text_utf8); - }()); - - return true; - } - default: - break; - } - - return false; -} - -s32 GUIEditBox::getLineFromPos(s32 pos) -{ - if (!m_word_wrap && !m_multiline) - return 0; - - s32 i = 0; - while (i < (s32)m_broken_text_positions.size()) { - if (m_broken_text_positions[i] > pos) - return i - 1; - ++i; - } - return (s32)m_broken_text_positions.size() - 1; -} - -void GUIEditBox::updateVScrollBar() -{ - if (!m_vscrollbar) { - return; - } - - // OnScrollBarChanged(...) - if (m_vscrollbar->getPos() != m_vscroll_pos) { - s32 deltaScrollY = m_vscrollbar->getPos() - m_vscroll_pos; - m_current_text_rect.UpperLeftCorner.Y -= deltaScrollY; - m_current_text_rect.LowerRightCorner.Y -= deltaScrollY; - - s32 scrollymax = getTextDimension().Height - m_frame_rect.getHeight(); - if (scrollymax != m_vscrollbar->getMax()) { - // manage a newline or a deleted line - m_vscrollbar->setMax(scrollymax); - m_vscrollbar->setPageSize(s32(getTextDimension().Height)); - calculateScrollPos(); - } else { - // manage a newline or a deleted line - m_vscroll_pos = m_vscrollbar->getPos(); - } - } - - // check if a vertical scrollbar is needed ? - if (getTextDimension().Height > (u32)m_frame_rect.getHeight()) { - m_frame_rect.LowerRightCorner.X -= m_scrollbar_width; - - s32 scrollymax = getTextDimension().Height - m_frame_rect.getHeight(); - if (scrollymax != m_vscrollbar->getMax()) { - m_vscrollbar->setMax(scrollymax); - m_vscrollbar->setPageSize(s32(getTextDimension().Height)); - } - - if (!m_vscrollbar->isVisible()) { - m_vscrollbar->setVisible(true); - } - } else { - if (m_vscrollbar->isVisible()) { - m_vscrollbar->setVisible(false); - m_vscroll_pos = 0; - m_vscrollbar->setPos(0); - m_vscrollbar->setMax(1); - m_vscrollbar->setPageSize(s32(getTextDimension().Height)); - } - } -} diff --git a/src/gui/guiEditBox.h b/src/gui/guiEditBox.h deleted file mode 100644 index be18e19a6..000000000 --- a/src/gui/guiEditBox.h +++ /dev/null @@ -1,200 +0,0 @@ -// Luanti -// SPDX-License-Identifier: LGPL-2.1-or-later -// Copyright (C) 2021 Minetest - -#pragma once - -#include "irrlichttypes.h" -#include "IGUIEditBox.h" -#include "IOSOperator.h" -#include "guiScrollBar.h" -#include - - -using namespace gui; - -class GUIEditBox : public IGUIEditBox -{ -public: - GUIEditBox(IGUIEnvironment *environment, IGUIElement *parent, s32 id, - core::rect rectangle, bool border, bool writable) : - IGUIEditBox(environment, parent, id, rectangle), - m_border(border), m_writable(writable), m_frame_rect(rectangle) - { - } - - virtual ~GUIEditBox(); - - //! Sets another skin independent font. - virtual void setOverrideFont(IGUIFont *font = 0); - - virtual IGUIFont *getOverrideFont() const { return m_override_font; } - - //! Get the font which is used right now for drawing - /** Currently this is the override font when one is set and the - font of the active skin otherwise */ - virtual IGUIFont *getActiveFont() const; - - //! Sets another color for the text. - virtual void setOverrideColor(video::SColor color); - - //! Gets the override color - virtual video::SColor getOverrideColor() const; - - //! Sets if the text should use the overide color or the - //! color in the gui skin. - virtual void enableOverrideColor(bool enable); - - //! Checks if an override color is enabled - /** \return true if the override color is enabled, false otherwise */ - virtual bool isOverrideColorEnabled(void) const - { - return m_override_color_enabled; - } - - //! Enables or disables word wrap for using the edit box as multiline text editor. - virtual void setWordWrap(bool enable); - - //! Checks if word wrap is enabled - //! \return true if word wrap is enabled, false otherwise - virtual bool isWordWrapEnabled() const { return m_word_wrap; } - - //! Turns the border on or off - virtual void setDrawBorder(bool border); - - virtual bool isDrawBorderEnabled() const { return m_border; } - - //! Enables or disables newlines. - /** \param enable: If set to true, the EGET_EDITBOX_ENTER event will not be fired, - instead a newline character will be inserted. */ - virtual void setMultiLine(bool enable); - - //! Checks if multi line editing is enabled - //! \return true if mult-line is enabled, false otherwise - virtual bool isMultiLineEnabled() const { return m_multiline; } - - //! Enables or disables automatic scrolling with cursor position - //! \param enable: If set to true, the text will move around with the cursor - //! position - virtual void setAutoScroll(bool enable); - - //! Checks to see if automatic scrolling is enabled - //! \return true if automatic scrolling is enabled, false if not - virtual bool isAutoScrollEnabled() const { return m_autoscroll; } - - //! Sets whether the edit box is a password box. Setting this to true will - /** disable MultiLine, WordWrap and the ability to copy with ctrl+c or ctrl+x - \param passwordBox: true to enable password, false to disable - \param passwordChar: the character that is displayed instead of letters */ - virtual void setPasswordBox(bool passwordBox, wchar_t passwordChar = L'*'); - - //! Returns true if the edit box is currently a password box. - virtual bool isPasswordBox() const { return m_passwordbox; } - - //! Sets text justification - virtual void setTextAlignment(EGUI_ALIGNMENT horizontal, EGUI_ALIGNMENT vertical); - - //! Sets the new caption of this element. - virtual void setText(const wchar_t *text); - - //! Sets the maximum amount of characters which may be entered in the box. - //! \param max: Maximum amount of characters. If 0, the character amount is - //! infinity. - virtual void setMax(u32 max); - - //! Returns maximum amount of characters, previously set by setMax(); - virtual u32 getMax() const { return m_max; } - - //! Gets the size area of the text in the edit box - //! \return Returns the size in pixels of the text - virtual core::dimension2du getTextDimension(); - - //! set true if this EditBox is writable - virtual void setWritable(bool can_write_text); - - //! called if an event happened. - virtual bool OnEvent(const SEvent &event); - - virtual bool acceptsIME() { return isEnabled() && m_writable; }; - -protected: - virtual void breakText() = 0; - - //! sets the area of the given line - virtual void setTextRect(s32 line) = 0; - - //! set text markers - void setTextMarkers(s32 begin, s32 end); - - //! send some gui event to parent - void sendGuiEvent(EGUI_EVENT_TYPE type); - - //! calculates the current scroll position - virtual void calculateScrollPos() = 0; - - virtual s32 getCursorPos(s32 x, s32 y) = 0; - - bool processKey(const SEvent &event); - virtual void inputString(const core::stringw &str); - virtual void inputChar(wchar_t c); - - //! returns the line number that the cursor is on - s32 getLineFromPos(s32 pos); - - //! update the vertical scrollBar (visibilty & position) - void updateVScrollBar(); - - gui::IGUIFont *m_override_font = nullptr; - - bool m_override_color_enabled = false; - bool m_word_wrap = false; - bool m_multiline = false; - bool m_autoscroll = true; - - bool m_border; - - bool m_passwordbox = false; - wchar_t m_passwordchar = L'*'; - - std::vector m_broken_text; - std::vector m_broken_text_positions; - - EGUI_ALIGNMENT m_halign = EGUIA_UPPERLEFT; - EGUI_ALIGNMENT m_valign = EGUIA_CENTER; - - u32 m_blink_start_time = 0; - s32 m_cursor_pos = 0; - s32 m_hscroll_pos = 0; - s32 m_vscroll_pos = 0; // scroll position in characters - u32 m_max = 0; - - video::SColor m_override_color = video::SColor(101, 255, 255, 255); - - core::rect m_current_text_rect = core::rect(0, 0, 1, 1); - - bool m_writable; - - bool m_mouse_marking = false; - - s32 m_mark_begin = 0; - s32 m_mark_end = 0; - - gui::IGUIFont *m_last_break_font = nullptr; - IOSOperator *m_operator = nullptr; - - core::rect m_frame_rect; // temporary values - - u32 m_scrollbar_width = 0; - GUIScrollBar *m_vscrollbar = nullptr; - -private: - bool processMouse(const SEvent &event); - - bool onKeyUp(const SEvent &event, s32 &mark_begin, s32 &mark_end); - bool onKeyDown(const SEvent &event, s32 &mark_begin, s32 &mark_end); - void onKeyControlC(const SEvent &event); - bool onKeyControlX(const SEvent &event, s32 &mark_begin, s32 &mark_end); - bool onKeyControlV(const SEvent &event, s32 &mark_begin, s32 &mark_end); - bool onKeyBack(const SEvent &event, s32 &mark_begin, s32 &mark_end); - bool onKeyDelete(const SEvent &event, s32 &mark_begin, s32 &mark_end); -}; diff --git a/src/gui/guiEditBoxWithScrollbar.cpp b/src/gui/guiEditBoxWithScrollbar.cpp index a8b386420..b6b33b269 100644 --- a/src/gui/guiEditBoxWithScrollbar.cpp +++ b/src/gui/guiEditBoxWithScrollbar.cpp @@ -8,607 +8,55 @@ #include "IGUISkin.h" #include "IGUIEnvironment.h" #include "IGUIFont.h" -#include "IVideoDriver.h" #include "rect.h" + +#include "guiScrollBar.h" #include "porting.h" #include "Keycodes.h" -/* -todo: -optional scrollbars [done] -ctrl+left/right to select word -double click/ctrl click: word select + drag to select whole words, triple click to select line -optional? dragging selected text -numerical -*/ +using namespace gui; //! constructor GUIEditBoxWithScrollBar::GUIEditBoxWithScrollBar(const wchar_t* text, bool border, IGUIEnvironment* environment, IGUIElement* parent, s32 id, const core::rect& rectangle, ISimpleTextureSource *tsrc, bool writable, bool has_vscrollbar) - : GUIEditBox(environment, parent, id, rectangle, border, writable), - m_background(true), m_bg_color_used(false), m_tsrc(tsrc) + : CGUIEditBox(text, border, environment, parent, id, rectangle), + m_bg_color_used(false), m_tsrc(tsrc) { - - Text = text; - - if (Environment) - m_operator = Environment->getOSOperator(); - - if (m_operator) - m_operator->grab(); - - // this element can be tabbed to - setTabStop(true); - setTabOrder(-1); - if (has_vscrollbar) { createVScrollBar(); - } - calculateFrameRect(); - breakText(); - - calculateScrollPos(); - setWritable(writable); -} - -//! Sets whether to draw the background -void GUIEditBoxWithScrollBar::setDrawBackground(bool draw) -{ - m_background = draw; -} - - -void GUIEditBoxWithScrollBar::updateAbsolutePosition() -{ - core::rect old_absolute_rect(AbsoluteRect); - IGUIElement::updateAbsolutePosition(); - if (old_absolute_rect != AbsoluteRect) { calculateFrameRect(); breakText(); + calculateScrollPos(); } + setWritable(writable); } - //! draws the element and its children void GUIEditBoxWithScrollBar::draw() { if (!IsVisible) return; - const bool focus = Environment->hasFocus(this); - - IGUISkin* skin = Environment->getSkin(); + IGUISkin *skin = Environment->getSkin(); if (!skin) return; video::SColor default_bg_color; - video::SColor bg_color; - default_bg_color = m_writable ? skin->getColor(EGDC_WINDOW) : video::SColor(0); - bg_color = m_bg_color_used ? m_bg_color : default_bg_color; - - bg_color = EGDC_GRAY_EDITABLE; - if (isEnabled()) - bg_color = focus ? EGDC_FOCUSED_EDITABLE : EGDC_EDITABLE; - - if (!m_border && m_background) { - skin->draw2DRectangle(this, bg_color, AbsoluteRect, &AbsoluteClippingRect); - } - - // draw the border - - if (m_border) { - - if (m_writable) { - skin->draw3DSunkenPane(this, bg_color, false, m_background, - AbsoluteRect, &AbsoluteClippingRect); - } - } - calculateFrameRect(); - - core::rect local_clip_rect = m_frame_rect; - local_clip_rect.clipAgainst(AbsoluteClippingRect); - - // draw the text - - IGUIFont* font = getActiveFont(); - - s32 cursor_line = 0; - s32 charcursorpos = 0; - - if (font) { - if (m_last_break_font != font) { - breakText(); - } - - // calculate cursor pos - - core::stringw *txt_line = &Text; - s32 start_pos = 0; - - core::stringw s, s2; - - // get mark position - const bool ml = (!m_passwordbox && (m_word_wrap || m_multiline)); - const s32 realmbgn = m_mark_begin < m_mark_end ? m_mark_begin : m_mark_end; - const s32 realmend = m_mark_begin < m_mark_end ? m_mark_end : m_mark_begin; - const s32 hline_start = ml ? getLineFromPos(realmbgn) : 0; - const s32 hline_count = ml ? getLineFromPos(realmend) - hline_start + 1 : 1; - const s32 line_count = ml ? m_broken_text.size() : 1; - - // Save the override color information. - // Then, alter it if the edit box is disabled. - const bool prevOver = m_override_color_enabled; - const video::SColor prevColor = m_override_color; - - if (Text.size()) { - if (!isEnabled() && !m_override_color_enabled) { - m_override_color_enabled = true; - m_override_color = skin->getColor(EGDC_GRAY_TEXT); - } - - for (s32 i = 0; i < line_count; ++i) { - setTextRect(i); - - // clipping test - don't draw anything outside the visible area - core::rect c = local_clip_rect; - c.clipAgainst(m_current_text_rect); - if (!c.isValid()) - continue; - - // get current line - if (m_passwordbox) { - if (m_broken_text.size() != 1) { - m_broken_text.clear(); - m_broken_text.emplace_back(); - } - if (m_broken_text[0].size() != Text.size()){ - m_broken_text[0] = Text; - for (u32 q = 0; q < Text.size(); ++q) - { - m_broken_text[0][q] = m_passwordchar; - } - } - txt_line = &m_broken_text[0]; - start_pos = 0; - } else { - txt_line = ml ? &m_broken_text[i] : &Text; - start_pos = ml ? m_broken_text_positions[i] : 0; - } - - - // draw normal text - font->draw(txt_line->c_str(), m_current_text_rect, - m_override_color_enabled ? m_override_color : skin->getColor(EGDC_BUTTON_TEXT), - false, true, &local_clip_rect); - - // draw mark and marked text - if (focus && m_mark_begin != m_mark_end && i >= hline_start && i < hline_start + hline_count) { - - s32 mbegin = 0, mend = 0; - s32 lineStartPos = 0, lineEndPos = txt_line->size(); - - if (i == hline_start) { - // highlight start is on this line - s = txt_line->subString(0, realmbgn - start_pos); - mbegin = font->getDimension(s.c_str()).Width; - - // deal with kerning - mbegin += font->getKerning( - (*txt_line)[realmbgn - start_pos], - realmbgn - start_pos > 0 ? (*txt_line)[realmbgn - start_pos - 1] : 0).X; - - lineStartPos = realmbgn - start_pos; - } - if (i == hline_start + hline_count - 1) { - // highlight end is on this line - s2 = txt_line->subString(0, realmend - start_pos); - mend = font->getDimension(s2.c_str()).Width; - lineEndPos = (s32)s2.size(); - } else { - mend = font->getDimension(txt_line->c_str()).Width; - } - - - m_current_text_rect.UpperLeftCorner.X += mbegin; - m_current_text_rect.LowerRightCorner.X = m_current_text_rect.UpperLeftCorner.X + mend - mbegin; - - - // draw mark - skin->draw2DRectangle(this, skin->getColor(EGDC_HIGH_LIGHT), m_current_text_rect, &local_clip_rect); - - // draw marked text - s = txt_line->subString(lineStartPos, lineEndPos - lineStartPos); - - if (s.size()) - font->draw(s.c_str(), m_current_text_rect, - m_override_color_enabled ? m_override_color : skin->getColor(EGDC_HIGH_LIGHT_TEXT), - false, true, &local_clip_rect); - - } - } - - // Return the override color information to its previous settings. - m_override_color_enabled = prevOver; - m_override_color = prevColor; - } - - // draw cursor - if (IsEnabled && m_writable) { - if (m_word_wrap || m_multiline) { - cursor_line = getLineFromPos(m_cursor_pos); - txt_line = &m_broken_text[cursor_line]; - start_pos = m_broken_text_positions[cursor_line]; - } - s = txt_line->subString(0, m_cursor_pos - start_pos); - charcursorpos = font->getDimension(s.c_str()).Width + - font->getKerning(L'_', - m_cursor_pos - start_pos > 0 ? (*txt_line)[m_cursor_pos - start_pos - 1] : 0).X; - - if (focus && (porting::getTimeMs() - m_blink_start_time) % 700 < 350) { - setTextRect(cursor_line); - m_current_text_rect.UpperLeftCorner.X += charcursorpos; - - font->draw(L"_", m_current_text_rect, - m_override_color_enabled ? m_override_color : skin->getColor(EGDC_BUTTON_TEXT), - false, true, &local_clip_rect); - } - } - } - - // draw children - IGUIElement::draw(); -} - - -s32 GUIEditBoxWithScrollBar::getCursorPos(s32 x, s32 y) -{ - IGUIFont* font = getActiveFont(); - - const u32 line_count = (m_word_wrap || m_multiline) ? m_broken_text.size() : 1; - - core::stringw *txt_line = 0; - s32 start_pos = 0; - x += 3; - - for (u32 i = 0; i < line_count; ++i) { - setTextRect(i); - if (i == 0 && y < m_current_text_rect.UpperLeftCorner.Y) - y = m_current_text_rect.UpperLeftCorner.Y; - if (i == line_count - 1 && y > m_current_text_rect.LowerRightCorner.Y) - y = m_current_text_rect.LowerRightCorner.Y; - - // is it inside this region? - if (y >= m_current_text_rect.UpperLeftCorner.Y && y <= m_current_text_rect.LowerRightCorner.Y) { - // we've found the clicked line - txt_line = (m_word_wrap || m_multiline) ? &m_broken_text[i] : &Text; - start_pos = (m_word_wrap || m_multiline) ? m_broken_text_positions[i] : 0; - break; - } - } - - if (x < m_current_text_rect.UpperLeftCorner.X) - x = m_current_text_rect.UpperLeftCorner.X; - - if (!txt_line) - return 0; - - s32 idx = font->getCharacterFromPos(txt_line->c_str(), x - m_current_text_rect.UpperLeftCorner.X); - - // click was on or left of the line - if (idx != -1) - return idx + start_pos; - - // click was off the right edge of the line, go to end. - return txt_line->size() + start_pos; -} - - -//! Breaks the single text line. -void GUIEditBoxWithScrollBar::breakText() -{ - if ((!m_word_wrap && !m_multiline)) - return; - - m_broken_text.clear(); // need to reallocate :/ - m_broken_text_positions.clear(); - - IGUIFont* font = getActiveFont(); - if (!font) - return; - - m_last_break_font = font; - - core::stringw line; - core::stringw word; - core::stringw whitespace; - s32 last_line_start = 0; - s32 size = Text.size(); - s32 length = 0; - s32 el_width = RelativeRect.getWidth() - m_scrollbar_width - 10; - wchar_t c; - - for (s32 i = 0; i < size; ++i) { - c = Text[i]; - bool line_break = false; - - if (c == L'\r') { // Mac or Windows breaks - - line_break = true; - c = 0; - if (Text[i + 1] == L'\n') { // Windows breaks - Text.erase(i); - --size; - if (m_cursor_pos > i) - --m_cursor_pos; - } - } else if (c == L'\n') { // Unix breaks - line_break = true; - c = 0; - } - - // don't break if we're not a multi-line edit box - if (!m_multiline) - line_break = false; - - if (c == L' ' || c == 0 || i == (size - 1)) { - // here comes the next whitespace, look if - // we can break the last word to the next line - // We also break whitespace, otherwise cursor would vanish beside the right border. - s32 whitelgth = font->getDimension(whitespace.c_str()).Width; - s32 worldlgth = font->getDimension(word.c_str()).Width; - - if (m_word_wrap && length + worldlgth + whitelgth > el_width && line.size() > 0) { - // break to next line - length = worldlgth; - m_broken_text.push_back(line); - m_broken_text_positions.push_back(last_line_start); - last_line_start = i - (s32)word.size(); - line = word; - } else { - // add word to line - line += whitespace; - line += word; - length += whitelgth + worldlgth; - } - - word = L""; - whitespace = L""; - - - if (c) - whitespace += c; - - // compute line break - if (line_break) { - line += whitespace; - line += word; - m_broken_text.push_back(line); - m_broken_text_positions.push_back(last_line_start); - last_line_start = i + 1; - line = L""; - word = L""; - whitespace = L""; - length = 0; - } - } else { - // yippee this is a word.. - word += c; - } - } - - line += whitespace; - line += word; - m_broken_text.push_back(line); - m_broken_text_positions.push_back(last_line_start); -} - -// TODO: that function does interpret VAlign according to line-index (indexed -// line is placed on top-center-bottom) but HAlign according to line-width -// (pixels) and not by row. -// Intuitively I suppose HAlign handling is better as VScrollPos should handle -// the line-scrolling. -// But please no one change this without also rewriting (and this time -// testing!!!) autoscrolling (I noticed this when fixing the old autoscrolling). -void GUIEditBoxWithScrollBar::setTextRect(s32 line) -{ - if (line < 0) - return; - - IGUIFont* font = getActiveFont(); - if (!font) - return; - - core::dimension2du d; - - // get text dimension - const u32 line_count = (m_word_wrap || m_multiline) ? m_broken_text.size() : 1; - if (m_word_wrap || m_multiline) { - d = font->getDimension(m_broken_text[line].c_str()); + if (m_bg_color_used) { + OverrideBgColor = m_bg_color; + } else if (IsWritable) { + OverrideBgColor = skin->getColor(EGDC_WINDOW); } else { - d = font->getDimension(Text.c_str()); - d.Height = AbsoluteRect.getHeight(); - } - d.Height += font->getKerning(L'A').Y; - - // justification - switch (m_halign) { - case EGUIA_CENTER: - // align to h center - m_current_text_rect.UpperLeftCorner.X = (m_frame_rect.getWidth() / 2) - (d.Width / 2); - m_current_text_rect.LowerRightCorner.X = (m_frame_rect.getWidth() / 2) + (d.Width / 2); - break; - case EGUIA_LOWERRIGHT: - // align to right edge - m_current_text_rect.UpperLeftCorner.X = m_frame_rect.getWidth() - d.Width; - m_current_text_rect.LowerRightCorner.X = m_frame_rect.getWidth(); - break; - default: - // align to left edge - m_current_text_rect.UpperLeftCorner.X = 0; - m_current_text_rect.LowerRightCorner.X = d.Width; - + // Transparent + OverrideBgColor = 0x00000001; } - switch (m_valign) { - case EGUIA_CENTER: - // align to v center - m_current_text_rect.UpperLeftCorner.Y = - (m_frame_rect.getHeight() / 2) - (line_count*d.Height) / 2 + d.Height*line; - break; - case EGUIA_LOWERRIGHT: - // align to bottom edge - m_current_text_rect.UpperLeftCorner.Y = - m_frame_rect.getHeight() - line_count*d.Height + d.Height*line; - break; - default: - // align to top edge - m_current_text_rect.UpperLeftCorner.Y = d.Height*line; - break; - } - - m_current_text_rect.UpperLeftCorner.X -= m_hscroll_pos; - m_current_text_rect.LowerRightCorner.X -= m_hscroll_pos; - m_current_text_rect.UpperLeftCorner.Y -= m_vscroll_pos; - m_current_text_rect.LowerRightCorner.Y = m_current_text_rect.UpperLeftCorner.Y + d.Height; - - m_current_text_rect += m_frame_rect.UpperLeftCorner; -} - -// calculate autoscroll -void GUIEditBoxWithScrollBar::calculateScrollPos() -{ - if (!m_autoscroll) - return; - - IGUISkin* skin = Environment->getSkin(); - if (!skin) - return; - IGUIFont* font = m_override_font ? m_override_font : skin->getFont(); - if (!font) - return; - - s32 curs_line = getLineFromPos(m_cursor_pos); - if (curs_line < 0) - return; - setTextRect(curs_line); - const bool has_broken_text = m_multiline || m_word_wrap; - - // Check horizonal scrolling - // NOTE: Calculations different to vertical scrolling because setTextRect interprets VAlign relative to line but HAlign not relative to row - { - // get cursor position - IGUIFont* font = getActiveFont(); - if (!font) - return; - - // get cursor area - u32 cursor_width = font->getDimension(L"_").Width; - core::stringw *txt_line = has_broken_text ? &m_broken_text[curs_line] : &Text; - s32 cpos = has_broken_text ? m_cursor_pos - m_broken_text_positions[curs_line] : m_cursor_pos; // column - s32 cstart = font->getDimension(txt_line->subString(0, cpos).c_str()).Width; // pixels from text-start - s32 cend = cstart + cursor_width; - s32 txt_width = font->getDimension(txt_line->c_str()).Width; - - if (txt_width < m_frame_rect.getWidth()) { - // TODO: Needs a clean left and right gap removal depending on HAlign, similar to vertical scrolling tests for top/bottom. - // This check just fixes the case where it was most noticeable (text smaller than clipping area). - - m_hscroll_pos = 0; - setTextRect(curs_line); - } - - if (m_current_text_rect.UpperLeftCorner.X + cstart < m_frame_rect.UpperLeftCorner.X) { - // cursor to the left of the clipping area - m_hscroll_pos -= m_frame_rect.UpperLeftCorner.X - (m_current_text_rect.UpperLeftCorner.X + cstart); - setTextRect(curs_line); - - // TODO: should show more characters to the left when we're scrolling left - // and the cursor reaches the border. - } else if (m_current_text_rect.UpperLeftCorner.X + cend > m_frame_rect.LowerRightCorner.X) { - // cursor to the right of the clipping area - m_hscroll_pos += (m_current_text_rect.UpperLeftCorner.X + cend) - m_frame_rect.LowerRightCorner.X; - setTextRect(curs_line); - } - } - - // calculate vertical scrolling - if (has_broken_text) { - u32 line_height = font->getDimension(L"A").Height + font->getKerning(L'A').Y; - // only up to 1 line fits? - if (line_height >= (u32)m_frame_rect.getHeight()) { - m_vscroll_pos = 0; - setTextRect(curs_line); - s32 unscrolledPos = m_current_text_rect.UpperLeftCorner.Y; - s32 pivot = m_frame_rect.UpperLeftCorner.Y; - switch (m_valign) { - case EGUIA_CENTER: - pivot += m_frame_rect.getHeight() / 2; - unscrolledPos += line_height / 2; - break; - case EGUIA_LOWERRIGHT: - pivot += m_frame_rect.getHeight(); - unscrolledPos += line_height; - break; - default: - break; - } - m_vscroll_pos = unscrolledPos - pivot; - setTextRect(curs_line); - } else { - // First 2 checks are necessary when people delete lines - setTextRect(0); - if (m_current_text_rect.UpperLeftCorner.Y > m_frame_rect.UpperLeftCorner.Y && m_valign != EGUIA_LOWERRIGHT) { - // first line is leaving a gap on top - m_vscroll_pos = 0; - } else if (m_valign != EGUIA_UPPERLEFT) { - u32 lastLine = m_broken_text_positions.empty() ? 0 : m_broken_text_positions.size() - 1; - setTextRect(lastLine); - if (m_current_text_rect.LowerRightCorner.Y < m_frame_rect.LowerRightCorner.Y) - { - // last line is leaving a gap on bottom - m_vscroll_pos -= m_frame_rect.LowerRightCorner.Y - m_current_text_rect.LowerRightCorner.Y; - } - } - - setTextRect(curs_line); - if (m_current_text_rect.UpperLeftCorner.Y < m_frame_rect.UpperLeftCorner.Y) { - // text above valid area - m_vscroll_pos -= m_frame_rect.UpperLeftCorner.Y - m_current_text_rect.UpperLeftCorner.Y; - setTextRect(curs_line); - } else if (m_current_text_rect.LowerRightCorner.Y > m_frame_rect.LowerRightCorner.Y){ - // text below valid area - m_vscroll_pos += m_current_text_rect.LowerRightCorner.Y - m_frame_rect.LowerRightCorner.Y; - setTextRect(curs_line); - } - } - } - - if (m_vscrollbar) { - m_vscrollbar->setPos(m_vscroll_pos); - } -} - -void GUIEditBoxWithScrollBar::calculateFrameRect() -{ - m_frame_rect = AbsoluteRect; - - - IGUISkin *skin = 0; - if (Environment) - skin = Environment->getSkin(); - if (m_border && skin) { - m_frame_rect.UpperLeftCorner.X += skin->getSize(EGDS_TEXT_DISTANCE_X) + 1; - m_frame_rect.UpperLeftCorner.Y += skin->getSize(EGDS_TEXT_DISTANCE_Y) + 1; - m_frame_rect.LowerRightCorner.X -= skin->getSize(EGDS_TEXT_DISTANCE_X) + 1; - m_frame_rect.LowerRightCorner.Y -= skin->getSize(EGDS_TEXT_DISTANCE_Y) + 1; - } - - updateVScrollBar(); + CGUIEditBox::draw(); } //! create a vertical scroll bar @@ -617,42 +65,35 @@ void GUIEditBoxWithScrollBar::createVScrollBar() IGUISkin *skin = 0; if (Environment) skin = Environment->getSkin(); + if (!skin || VScrollBar) + return; s32 fontHeight = 1; - if (m_override_font) { - fontHeight = m_override_font->getDimension(L"Ay").Height; + if (OverrideFont) { + fontHeight = OverrideFont->getDimension(L"Ay").Height; } else { IGUIFont *font; - if (skin && (font = skin->getFont())) { + if ((font = skin->getFont())) { fontHeight = font->getDimension(L"Ay").Height; } } - m_scrollbar_width = skin ? skin->getSize(gui::EGDS_SCROLLBAR_SIZE) : 16; + VScrollBarWidth = skin->getSize(gui::EGDS_SCROLLBAR_SIZE); - core::rect scrollbarrect = m_frame_rect; - scrollbarrect.UpperLeftCorner.X += m_frame_rect.getWidth() - m_scrollbar_width; - m_vscrollbar = new GUIScrollBar(Environment, getParent(), -1, + core::rect scrollbarrect = RelativeRect; + scrollbarrect.UpperLeftCorner.X += RelativeRect.getWidth() - VScrollBarWidth; + VScrollBar = new GUIScrollBar(Environment, getParent(), -1, scrollbarrect, false, true, m_tsrc); - m_vscrollbar->setVisible(false); - m_vscrollbar->setSmallStep(3 * fontHeight); - m_vscrollbar->setLargeStep(10 * fontHeight); + VScrollBar->setVisible(false); + VScrollBar->setSmallStep(3 * fontHeight); + VScrollBar->setLargeStep(10 * fontHeight); } - - //! Change the background color void GUIEditBoxWithScrollBar::setBackgroundColor(const video::SColor &bg_color) { m_bg_color = bg_color; m_bg_color_used = true; } - -bool GUIEditBoxWithScrollBar::isDrawBackgroundEnabled() const { return false; } -bool GUIEditBoxWithScrollBar::isDrawBorderEnabled() const { return false; } -void GUIEditBoxWithScrollBar::setCursorChar(const wchar_t cursorChar) { } -wchar_t GUIEditBoxWithScrollBar::getCursorChar() const { return '|'; } -void GUIEditBoxWithScrollBar::setCursorBlinkTime(u32 timeMs) { } -u32 GUIEditBoxWithScrollBar::getCursorBlinkTime() const { return 500; } diff --git a/src/gui/guiEditBoxWithScrollbar.h b/src/gui/guiEditBoxWithScrollbar.h index 7ba742b0d..a595246ed 100644 --- a/src/gui/guiEditBoxWithScrollbar.h +++ b/src/gui/guiEditBoxWithScrollbar.h @@ -5,57 +5,32 @@ #ifndef GUIEDITBOXWITHSCROLLBAR_HEADER #define GUIEDITBOXWITHSCROLLBAR_HEADER -#include "guiEditBox.h" +#include "CGUIEditBox.h" class ISimpleTextureSource; -class GUIEditBoxWithScrollBar : public GUIEditBox +class GUIEditBoxWithScrollBar : public gui::CGUIEditBox { public: //! constructor - GUIEditBoxWithScrollBar(const wchar_t* text, bool border, IGUIEnvironment* environment, + GUIEditBoxWithScrollBar(const wchar_t* text, bool border, gui::IGUIEnvironment* environment, IGUIElement* parent, s32 id, const core::rect& rectangle, ISimpleTextureSource *tsrc, bool writable = true, bool has_vscrollbar = true); //! destructor virtual ~GUIEditBoxWithScrollBar() {} - //! Sets whether to draw the background - virtual void setDrawBackground(bool draw); - //! draws the element and its children - virtual void draw(); - - //! Updates the absolute position, splits text if required - virtual void updateAbsolutePosition(); + void draw() override; //! Change the background color - virtual void setBackgroundColor(const video::SColor &bg_color); - - virtual bool isDrawBackgroundEnabled() const; - virtual bool isDrawBorderEnabled() const; - virtual void setCursorChar(const wchar_t cursorChar); - virtual wchar_t getCursorChar() const; - virtual void setCursorBlinkTime(u32 timeMs); - virtual u32 getCursorBlinkTime() const; + void setBackgroundColor(const video::SColor &bg_color); protected: - //! Breaks the single text line. - virtual void breakText(); - //! sets the area of the given line - virtual void setTextRect(s32 line); - //! calculates the current scroll position - void calculateScrollPos(); - //! calculated the FrameRect - void calculateFrameRect(); //! create a Vertical ScrollBar void createVScrollBar(); - s32 getCursorPos(s32 x, s32 y); - - bool m_background; - bool m_bg_color_used; video::SColor m_bg_color; diff --git a/src/gui/guiEngine.h b/src/gui/guiEngine.h index 32dbdce72..da0700319 100644 --- a/src/gui/guiEngine.h +++ b/src/gui/guiEngine.h @@ -40,7 +40,6 @@ struct image_definition { class GUIEngine; class RenderingEngine; class MainMenuScripting; -class IWritableShaderSource; struct MainMenuData; /******************************************************************************/ diff --git a/src/gui/guiHyperText.cpp b/src/gui/guiHyperText.cpp index ef3006658..138c93e4c 100644 --- a/src/gui/guiHyperText.cpp +++ b/src/gui/guiHyperText.cpp @@ -585,6 +585,7 @@ u32 ParsedText::parseTag(const wchar_t *text, u32 cursor) return 0; openTag(name, attrs)->style = m_elementtags["action"]; } + endElement(); } else if (m_elementtags.count(name)) { if (end) { diff --git a/src/gui/guiInventoryList.cpp b/src/gui/guiInventoryList.cpp index 82e769102..e5b168950 100644 --- a/src/gui/guiInventoryList.cpp +++ b/src/gui/guiInventoryList.cpp @@ -185,32 +185,13 @@ bool GUIInventoryList::OnEvent(const SEvent &event) m_hovered_i = getItemIndexAtPos(v2s32(event.MouseInput.X, event.MouseInput.Y)); - if (m_hovered_i != -1) - return IGUIElement::OnEvent(event); + return IGUIElement::OnEvent(event); +} - // no item slot at pos of mouse event => allow clicking through - // find the element that would be hovered if this inventorylist was invisible - bool was_visible = IsVisible; - IsVisible = false; - IGUIElement *hovered = - Environment->getRootGUIElement()->getElementFromPoint( - core::position2d(event.MouseInput.X, event.MouseInput.Y)); - // if the player clicks outside of the formspec window, hovered is not - // m_fs_menu, but some other weird element (with ID -1). we do however need - // hovered to be m_fs_menu as item dropping when clicking outside of the - // formspec window is handled in its OnEvent callback - if (!hovered || hovered->getID() == -1) - hovered = m_fs_menu; - - bool ret = hovered->OnEvent(event); - - // Set visible again *after* processing the event. Otherwise, hovered could - // be another GUIInventoryList, which will call this one again, resulting in - // an infinite loop. - IsVisible = was_visible; - - return ret; +bool GUIInventoryList::isPointInside(const core::position2d &point) const +{ + return getItemIndexAtPos(point) != -1; } s32 GUIInventoryList::getItemIndexAtPos(v2s32 p) const diff --git a/src/gui/guiInventoryList.h b/src/gui/guiInventoryList.h index 1933940a4..40e640af9 100644 --- a/src/gui/guiInventoryList.h +++ b/src/gui/guiInventoryList.h @@ -69,9 +69,11 @@ public: const Options &options, gui::IGUIFont *font); - virtual void draw() override; + void draw() override; - virtual bool OnEvent(const SEvent &event) override; + bool OnEvent(const SEvent &event) override; + + bool isPointInside(const core::position2d &point) const override; const InventoryLocation &getInventoryloc() const { diff --git a/src/gui/guiOpenURL.cpp b/src/gui/guiOpenURL.cpp index 4c54556be..273f04cdc 100644 --- a/src/gui/guiOpenURL.cpp +++ b/src/gui/guiOpenURL.cpp @@ -126,7 +126,7 @@ void GUIOpenURLMenu::regenerateGui(v2u32 screensize) text = wrap_rows(text, max_cols, true); rect += topleft_client + v2s32(20 * s, ypos); - IGUIEditBox *e = new GUIEditBoxWithScrollBar(utf8_to_wide(text).c_str(), true, Environment, + gui::IGUIEditBox *e = new GUIEditBoxWithScrollBar(utf8_to_wide(text).c_str(), true, Environment, this, ID_url, rect, m_tsrc, false, true); e->setMultiLine(true); e->setWordWrap(true); diff --git a/src/gui/guiOpenURL.h b/src/gui/guiOpenURL.h index f48f1aaa5..f994e7a9f 100644 --- a/src/gui/guiOpenURL.h +++ b/src/gui/guiOpenURL.h @@ -20,7 +20,6 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. #include "modalMenu.h" #include -class Client; class ISimpleTextureSource; class GUIOpenURLMenu : public GUIModalMenu diff --git a/src/gui/guiScrollBar.cpp b/src/gui/guiScrollBar.cpp index 387f45297..3d4d7ff9a 100644 --- a/src/gui/guiScrollBar.cpp +++ b/src/gui/guiScrollBar.cpp @@ -19,7 +19,7 @@ the arrow buttons where there is insufficient space. GUIScrollBar::GUIScrollBar(IGUIEnvironment *environment, IGUIElement *parent, s32 id, core::rect rectangle, bool horizontal, bool auto_scale, ISimpleTextureSource *tsrc) : - IGUIElement(EGUIET_ELEMENT, environment, parent, id, rectangle), + IGUIScrollBar(environment, parent, id, rectangle), up_button(nullptr), down_button(nullptr), is_dragging(false), is_horizontal(horizontal), is_auto_scaling(auto_scale), dragged_by_slider(false), tray_clicked(false), scroll_pos(0), @@ -281,7 +281,7 @@ void GUIScrollBar::setPos(const s32 pos) target_pos = std::nullopt; } -void GUIScrollBar::setPosAndSend(const s32 &pos) +void GUIScrollBar::setPosAndSend(const s32 pos) { const s32 old_pos = scroll_pos; setPos(pos); @@ -295,7 +295,7 @@ void GUIScrollBar::setPosAndSend(const s32 &pos) } } -void GUIScrollBar::setPosInterpolated(const s32 &pos) +void GUIScrollBar::setPosInterpolated(const s32 pos) { if (!g_settings->getBool("smooth_scrolling")) { setPosAndSend(pos); @@ -311,17 +311,17 @@ void GUIScrollBar::setPosInterpolated(const s32 &pos) } } -void GUIScrollBar::setSmallStep(const s32 &step) +void GUIScrollBar::setSmallStep(const s32 step) { small_step = step > 0 ? step : 10; } -void GUIScrollBar::setLargeStep(const s32 &step) +void GUIScrollBar::setLargeStep(const s32 step) { large_step = step > 0 ? step : 50; } -void GUIScrollBar::setMax(const s32 &max) +void GUIScrollBar::setMax(const s32 max) { max_pos = max; if (min_pos > max_pos) @@ -333,7 +333,7 @@ void GUIScrollBar::setMax(const s32 &max) updatePos(); } -void GUIScrollBar::setMin(const s32 &min) +void GUIScrollBar::setMin(const s32 min) { min_pos = min; if (max_pos < min_pos) @@ -345,7 +345,7 @@ void GUIScrollBar::setMin(const s32 &min) updatePos(); } -void GUIScrollBar::setPageSize(const s32 &size) +void GUIScrollBar::setPageSize(const s32 size) { page_size = size; updatePos(); diff --git a/src/gui/guiScrollBar.h b/src/gui/guiScrollBar.h index c318bc879..ea68c9fe3 100644 --- a/src/gui/guiScrollBar.h +++ b/src/gui/guiScrollBar.h @@ -13,15 +13,15 @@ the arrow buttons where there is insufficient space. #pragma once #include -#include #include +#include class ISimpleTextureSource; using namespace gui; -class GUIScrollBar : public IGUIElement +class GUIScrollBar : public IGUIScrollBar { public: GUIScrollBar(IGUIEnvironment *environment, IGUIElement *parent, s32 id, @@ -40,29 +40,29 @@ public: virtual bool OnEvent(const SEvent &event) override; virtual void OnPostRender(u32 time_ms) override; - s32 getMax() const { return max_pos; } - s32 getMin() const { return min_pos; } - s32 getLargeStep() const { return large_step; } - s32 getSmallStep() const { return small_step; } - s32 getPos() const; - s32 getTargetPos() const; + s32 getMax() const override { return max_pos; } + s32 getMin() const override { return min_pos; } + s32 getLargeStep() const override { return large_step; } + s32 getSmallStep() const override { return small_step; } + s32 getPos() const override; + s32 getTargetPos() const override; bool isHorizontal() const { return is_horizontal; } - void setMax(const s32 &max); - void setMin(const s32 &min); - void setSmallStep(const s32 &step); - void setLargeStep(const s32 &step); + void setMax(s32 max) override; + void setMin(s32 min) override; + void setSmallStep(s32 step) override; + void setLargeStep(s32 step) override; //! Sets a position immediately, aborting any ongoing interpolation. // setPos does not send EGET_SCROLL_BAR_CHANGED events for you. - void setPos(const s32 pos); + void setPos(const s32 pos) override; //! The same as setPos, but it takes care of sending EGET_SCROLL_BAR_CHANGED events. - void setPosAndSend(const s32 &pos); + void setPosAndSend(s32 pos); //! Sets a target position for interpolation. // If you want to do an interpolated addition, use // setPosInterpolated(getTargetPos() + x). // setPosInterpolated takes care of sending EGET_SCROLL_BAR_CHANGED events. - void setPosInterpolated(const s32 &pos); - void setPageSize(const s32 &size); + void setPosInterpolated(s32 pos) override; + void setPageSize(s32 size) override; void setArrowsVisible(ArrowVisibility visible); private: diff --git a/src/gui/modalMenu.cpp b/src/gui/modalMenu.cpp index 984d55438..2f57b8cf8 100644 --- a/src/gui/modalMenu.cpp +++ b/src/gui/modalMenu.cpp @@ -246,8 +246,9 @@ bool GUIModalMenu::preprocessEvent(const SEvent &event) #ifdef __ANDROID__ // display software keyboard when clicking edit boxes if (event.EventType == EET_MOUSE_INPUT_EVENT && - event.MouseInput.Event == EMIE_LMOUSE_PRESSED_DOWN && - !porting::hasPhysicalKeyboardAndroid()) { + ((event.MouseInput.Event == EMIE_LMOUSE_PRESSED_DOWN && + !porting::hasPhysicalKeyboardAndroid()) || + event.MouseInput.Event == EMIE_LMOUSE_DOUBLE_CLICK)) { gui::IGUIElement *hovered = Environment->getRootGUIElement()->getElementFromPoint( core::position2d(event.MouseInput.X, event.MouseInput.Y)); @@ -276,7 +277,9 @@ bool GUIModalMenu::preprocessEvent(const SEvent &event) porting::showTextInputDialog("", wide_to_utf8(((gui::IGUIEditBox *) hovered)->getText()), type); - return retval; + // Since we have opened the dialog, we have to return true to mark + // the event as handled (avoids double-opening). + return true; } } diff --git a/src/gui/touchcontrols.h b/src/gui/touchcontrols.h index 1cdfe655c..8e8e93f56 100644 --- a/src/gui/touchcontrols.h +++ b/src/gui/touchcontrols.h @@ -25,10 +25,6 @@ namespace gui class IGUIImage; class IGUIStaticText; } -namespace video -{ - class IVideoDriver; -} class ISimpleTextureSource; diff --git a/src/irrlicht_changes/CGUITTFont.cpp b/src/irrlicht_changes/CGUITTFont.cpp index e33fa3474..e4a293972 100644 --- a/src/irrlicht_changes/CGUITTFont.cpp +++ b/src/irrlicht_changes/CGUITTFont.cpp @@ -289,8 +289,7 @@ CGUITTFont* CGUITTFont::createTTFont(IGUIEnvironment *env, //! Constructor. CGUITTFont::CGUITTFont(IGUIEnvironment *env) : use_monochrome(false), use_transparency(true), use_hinting(true), use_auto_hinting(true), -batch_load_size(1), Driver(0), GlobalKerningWidth(0), GlobalKerningHeight(0), -shadow_offset(0), shadow_alpha(0), fallback(0) +batch_load_size(1) { if (env) { @@ -494,35 +493,34 @@ void CGUITTFont::draw(const EnrichedString &text, const core::rect& positio textDimension = getDimension(text.c_str()); if (hcenter) - offset.X = ((position.getWidth() - textDimension.Width) >> 1) + offset.X; + offset.X = ((position.getWidth() - textDimension.Width) / 2) + offset.X; if (vcenter) - offset.Y = ((position.getHeight() - textDimension.Height) >> 1) + offset.Y; + offset.Y = ((position.getHeight() - textDimension.Height) / 2) + offset.Y; } // Convert to a unicode string. - std::u32string utext = convertWCharToU32String(text.c_str()); + const std::u32string utext = convertWCharToU32String(text.c_str()); + const u32 lineHeight = getLineHeight(); - // Set up our render map. + // Key: Glyph page index. Value: Arrays relevant for rendering std::map Render_Map; // Start parsing characters. - u32 n; + // The same logic is applied to `CGUITTFont::getDimension` char32_t previousChar = 0; - std::u32string::const_iterator iter = utext.begin(); - while (iter != utext.end()) + for (size_t i = 0; i < utext.size(); ++i) { - char32_t currentChar = *iter; - n = getGlyphIndexByChar(currentChar); - bool visible = (Invisible.find_first_of(currentChar) == std::u32string::npos); - bool lineBreak=false; - if (currentChar == L'\r') // Mac or Windows breaks + char32_t currentChar = utext[i]; + bool lineBreak = false; + if (currentChar == U'\r') // Mac or Windows breaks { lineBreak = true; - if (*(iter + 1) == (char32_t)'\n') // Windows line breaks. - currentChar = *(++iter); + // `std::u32string` is '\0'-terminated, thus this check is OK + if (utext[i + 1] == U'\n') // Windows line breaks. + currentChar = utext[++i]; } - else if (currentChar == (char32_t)'\n') // Unix breaks + else if (currentChar == U'\n') // Unix breaks { lineBreak = true; } @@ -530,65 +528,76 @@ void CGUITTFont::draw(const EnrichedString &text, const core::rect& positio if (lineBreak) { previousChar = 0; - offset.Y += font_metrics.height / 64; + offset.Y += lineHeight; offset.X = position.UpperLeftCorner.X; if (hcenter) - offset.X += (position.getWidth() - textDimension.Width) >> 1; - ++iter; + offset.X += (position.getWidth() - textDimension.Width) / 2; continue; } - if (n > 0 && visible) + // Draw visible text + + SGUITTGlyph *glyph = nullptr; + const u32 width = getWidthFromCharacter(currentChar); + + // Skip whitespace characters + if (InvisibleChars.find_first_of(currentChar) != std::u32string::npos) + goto skip_invisible; + + if (clip) { + // Skip fully clipped characters. + const core::recti rect( + offset, + offset + core::vector2di(width, lineHeight) + ); + if (!clip->isRectCollided(rect)) + goto skip_invisible; + } + + { + // Retrieve the glyph + const u32 n = getGlyphIndexByChar(currentChar); + if (n > 0) + glyph = &Glyphs[n - 1]; + } + + if (glyph) { // Calculate the glyph offset. - s32 offx = Glyphs[n-1].offset.X; - s32 offy = (font_metrics.ascender / 64) - Glyphs[n-1].offset.Y; + const s32 offx = glyph->offset.X; + const s32 offy = (font_metrics.ascender / 64) - glyph->offset.Y; // Apply kerning. - core::vector2di k = getKerning(currentChar, previousChar); - offset.X += k.X; - offset.Y += k.Y; + offset += getKerning(currentChar, previousChar); // Determine rendering information. - SGUITTGlyph& glyph = Glyphs[n-1]; - CGUITTGlyphPage* const page = Glyph_Pages[glyph.glyph_page]; + CGUITTGlyphPage* const page = Glyph_Pages[glyph->glyph_page]; page->render_positions.push_back(core::position2di(offset.X + offx, offset.Y + offy)); - page->render_source_rects.push_back(glyph.source_rect); - const size_t iterPos = iter - utext.begin(); - if (iterPos < colors.size()) - page->render_colors.push_back(colors[iterPos]); + page->render_source_rects.push_back(glyph->source_rect); + if (i < colors.size()) + page->render_colors.push_back(colors[i]); else page->render_colors.push_back(video::SColor(255,255,255,255)); - Render_Map[glyph.glyph_page] = page; + Render_Map[glyph->glyph_page] = page; } - if (n > 0) - { - offset.X += getWidthFromCharacter(currentChar); - } - else if (fallback != 0) + else if (fallback) { // Let the fallback font draw it, this isn't super efficient but hopefully that doesn't matter wchar_t l1[] = { (wchar_t) currentChar, 0 }; - if (visible) - { - // Apply kerning. - offset += fallback->getKerning(*l1, (wchar_t) previousChar); + // Apply kerning. + offset += fallback->getKerning(*l1, (wchar_t) previousChar); - const u32 current_color = iter - utext.begin(); - fallback->draw(core::stringw(l1), - core::rect({offset.X-1, offset.Y-1}, position.LowerRightCorner), // ??? - current_color < colors.size() ? colors[current_color] : video::SColor(255, 255, 255, 255), - false, false, clip); - } - - offset.X += fallback->getDimension(l1).Width; + fallback->draw(core::stringw(l1), + core::rect({offset.X-1, offset.Y-1}, position.LowerRightCorner), // ??? + i < colors.size() ? colors[i] : video::SColor(255, 255, 255, 255), + false, false, clip); } +skip_invisible: + offset.X += width; previousChar = currentChar; - ++iter; - //++current_color; } /* if (applied_colors.empty()) @@ -596,20 +605,16 @@ void CGUITTFont::draw(const EnrichedString &text, const core::rect& positio */ // Draw now. update_glyph_pages(); - auto it = Render_Map.begin(); - auto ie = Render_Map.end(); core::array tmp_positions; core::array tmp_source_rects; - while (it != ie) + for (const auto &it : Render_Map) { - CGUITTGlyphPage* page = it->second; - ++it; + CGUITTGlyphPage *page = it.second; // render runs of matching color in batch - size_t ibegin; video::SColor colprev; for (size_t i = 0; i < page->render_positions.size(); ++i) { - ibegin = i; + const size_t ibegin = i; colprev = page->render_colors[i]; do ++i; @@ -644,7 +649,7 @@ core::dimension2d CGUITTFont::getDimension(const wchar_t* text) const return getDimension(convertWCharToU32String(text)); } -core::dimension2d CGUITTFont::getDimension(const std::u32string& text) const +core::dimension2d CGUITTFont::getDimension(const std::u32string& utext) const { // Get the maximum font height. Unfortunately, we have to do this hack as // Irrlicht will draw things wrong. In FreeType, the font size is the @@ -653,39 +658,29 @@ core::dimension2d CGUITTFont::getDimension(const std::u32string& text) cons // Irrlicht does not understand this concept when drawing fonts. Also, I // add +1 to give it a 1 pixel blank border. This makes things like // tooltips look nicer. - s32 test1 = getHeightFromCharacter((char32_t)'g') + 1; - s32 test2 = getHeightFromCharacter((char32_t)'j') + 1; - s32 test3 = getHeightFromCharacter((char32_t)'_') + 1; - s32 max_font_height = core::max_(test1, core::max_(test2, test3)); + const u32 lineHeight = getLineHeight(); - core::dimension2d text_dimension(0, max_font_height); - core::dimension2d line(0, max_font_height); + core::dimension2d text_dimension(0, lineHeight); + core::dimension2d line(0, lineHeight); + // The same logic is applied to `CGUITTFont::draw` char32_t previousChar = 0; - std::u32string::const_iterator iter = text.begin(); - for (; iter != text.end(); ++iter) + for (size_t i = 0; i < utext.size(); ++i) { - char32_t p = *iter; + char32_t currentChar = utext[i]; bool lineBreak = false; - if (p == '\r') // Mac or Windows line breaks. + if (currentChar == U'\r') // Mac or Windows breaks { lineBreak = true; - if (iter + 1 != text.end() && *(iter + 1) == '\n') - { - ++iter; - p = *iter; - } + // `std::u32string` is '\0'-terminated, thus this check is OK + if (utext[i + 1] == U'\n') // Windows line breaks. + currentChar = utext[++i]; } - else if (p == '\n') // Unix line breaks. + else if (currentChar == U'\n') // Unix breaks { lineBreak = true; } - // Kerning. - core::vector2di k = getKerning(p, previousChar); - line.Width += k.X; - previousChar = p; - // Check for linebreak. if (lineBreak) { @@ -694,10 +689,15 @@ core::dimension2d CGUITTFont::getDimension(const std::u32string& text) cons if (text_dimension.Width < line.Width) text_dimension.Width = line.Width; line.Width = 0; - line.Height = max_font_height; + line.Height = lineHeight; continue; } - line.Width += getWidthFromCharacter(p); + + // Kerning. + line.Width += getKerning(currentChar, previousChar).X; + + previousChar = currentChar; + line.Width += getWidthFromCharacter(currentChar); } if (text_dimension.Width < line.Width) text_dimension.Width = line.Width; @@ -881,7 +881,7 @@ core::vector2di CGUITTFont::getKerning(const char32_t thisLetter, const char32_t void CGUITTFont::setInvisibleCharacters(const wchar_t *s) { - Invisible = convertWCharToU32String(s); + InvisibleChars = convertWCharToU32String(s); } video::IImage* CGUITTFont::createTextureFromChar(const char32_t& ch) diff --git a/src/irrlicht_changes/CGUITTFont.h b/src/irrlicht_changes/CGUITTFont.h index 1073b9fdc..00e621ee3 100644 --- a/src/irrlicht_changes/CGUITTFont.h +++ b/src/irrlicht_changes/CGUITTFont.h @@ -298,7 +298,7 @@ namespace gui void setFontHinting(const bool enable, const bool enable_auto_hinting = true); //! Draws some text and clips it to the specified rectangle if wanted. - virtual void draw(const core::stringw& text, const core::rect& position, + virtual void draw(const core::stringw& utext, const core::rect& position, video::SColor color, bool hcenter=false, bool vcenter=false, const core::rect* clip=0) override; @@ -383,12 +383,17 @@ namespace gui if (useMonochrome()) load_flags |= FT_LOAD_MONOCHROME | FT_LOAD_TARGET_MONO; else load_flags |= FT_LOAD_TARGET_NORMAL; } + + /// Gets the overall font height, including a line gap of 1 px + inline u32 getLineHeight() const { return font_metrics.height / 64 + 1; } u32 getWidthFromCharacter(char32_t c) const; u32 getHeightFromCharacter(char32_t c) const; + /// Returns (index + 1) of `this->Glyphs` + /// Returns 0 if no such glyph is provided by the font. u32 getGlyphIndexByChar(char32_t c) const; core::vector2di getKerning(const char32_t thisLetter, const char32_t previousLetter) const; - video::IVideoDriver* Driver; + video::IVideoDriver* Driver = nullptr; std::optional filename; FT_Face tt_face; FT_Size_Metrics font_metrics; @@ -397,13 +402,13 @@ namespace gui mutable core::array Glyph_Pages; mutable core::array Glyphs; - s32 GlobalKerningWidth; - s32 GlobalKerningHeight; - std::u32string Invisible; - u32 shadow_offset; - u32 shadow_alpha; + s32 GlobalKerningWidth = 0; + s32 GlobalKerningHeight = 0; + std::u32string InvisibleChars; + u32 shadow_offset = 0; + u32 shadow_alpha = 0; - gui::IGUIFont* fallback; + gui::IGUIFont *fallback = nullptr; }; } // end namespace gui diff --git a/src/itemdef.h b/src/itemdef.h index fcda88faf..8a24abf3d 100644 --- a/src/itemdef.h +++ b/src/itemdef.h @@ -22,6 +22,7 @@ #include "util/pointedthing.h" struct ToolCapabilities; +struct ItemDefinition; /* Base item definition diff --git a/src/itemstackmetadata.h b/src/itemstackmetadata.h index c3eda83ed..62a7a12a1 100644 --- a/src/itemstackmetadata.h +++ b/src/itemstackmetadata.h @@ -9,8 +9,6 @@ #include -class Inventory; -class IItemDefManager; class ItemStackMetadata : public SimpleMetadata { diff --git a/src/main.cpp b/src/main.cpp index aa82092c5..49c415427 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -2,6 +2,9 @@ // SPDX-License-Identifier: LGPL-2.1-or-later // Copyright (C) 2010-2013 celeron55, Perttu Ahola +#include +#include + #include "irrlichttypes_bloated.h" #include "irrlicht.h" // createDevice #include "irrlicht_changes/printing.h" @@ -442,6 +445,22 @@ static void print_help(const OptionList &allowed_options) { std::cout << _("Allowed options:") << std::endl; print_allowed_options(allowed_options); + std::cout << std::endl; + + std::pair> the_list[] = { + {"map", ServerMap::getDatabaseBackends()}, + {"players", ServerEnvironment::getPlayerDatabaseBackends()}, + {"auth", ServerEnvironment::getAuthDatabaseBackends()}, + {"mod storage", Server::getModStorageDatabaseBackends()}, + }; + + std::cout << "Supported database backends:"; + for (auto &e : the_list) { + SORT_AND_UNIQUE(e.second); + std::cout << "\n " << padStringRight(e.first, 16) + << ": " << str_join(e.second, ", "); + } + std::cout << std::endl; } static void print_allowed_options(const OptionList &allowed_options) diff --git a/src/map.cpp b/src/map.cpp index 47d4c0b71..7813b6cc7 100644 --- a/src/map.cpp +++ b/src/map.cpp @@ -36,22 +36,25 @@ Map::Map(IGameDef *gamedef): Map::~Map() { const auto lock = m_blocks.lock_unique_rec(); -/* - for (auto & ir : m_blocks_delete_1) - delete ir.first; - for (auto & ir : m_blocks_delete_2) - delete ir.first; - for(auto & ir : m_blocks) - delete ir.second; -*/ getBlockCacheFlush(); #if WTF - /* - Free all MapSectors - */ + // Free all sectors + size_t used = 0; for (auto §or : m_sectors) { + sector.second->deleteBlocks(&used); delete sector.second; } + m_sectors.clear(); + + if (used > 0) { +#ifdef NDEBUG + std::ostream &to = infostream; +#else + std::ostream &to = warningstream; +#endif + PrintInfo(to); + to << used << " blocks deleted despite reference count > 0. Potential bug." << std::endl; + } #endif } diff --git a/src/map.h b/src/map.h index cfa1e49bf..1d59b889d 100644 --- a/src/map.h +++ b/src/map.h @@ -30,17 +30,17 @@ class MapSector; */ class NodeMetadata; class IGameDef; -class IRollbackManager; + class MapDatabase; +//class MapDatabase; #if !ENABLE_THREADS - #define MAP_NOTHREAD_LOCK(map) auto lock_map = map->m_nothread_locker.lock_unique_rec(); + #define MAP_NOTHREAD_LOCK(map) const auto lock_map = map->m_nothread_locker.lock_unique_rec(); #else #define MAP_NOTHREAD_LOCK(map) ; #endif - /* MapEditEvent */ diff --git a/src/mapblock.cpp b/src/mapblock.cpp index 485fd6bb6..86f66144a 100644 --- a/src/mapblock.cpp +++ b/src/mapblock.cpp @@ -3,10 +3,11 @@ // Copyright (C) 2013 celeron55, Perttu Ahola #include "mapblock.h" +#include "mapnode.h" #include "profiler.h" #include "servermap.h" -#include +#include #include #include "map.h" #include "light.h" @@ -120,6 +121,7 @@ void MapBlock::setNode(const v3pos_t &p, const MapNode &n, bool important) const auto &f1 = nodedef->get(n.getContent()); const auto lock = lock_unique_rec(); + expandNodesIfNeeded(); const auto &f0 = nodedef->get(data[index].getContent()); @@ -166,6 +168,8 @@ bool MapBlock::analyzeContent() content_only = data[0].param0; content_only_param1 = data[0].param1; content_only_param2 = data[0].param2; + if (m_is_mono_block) + return true; for (int i = 1; i < MAP_BLOCKSIZE * MAP_BLOCKSIZE * MAP_BLOCKSIZE; ++i) { if (data[i].param0 != content_only || data[i].param1 != content_only_param1 || data[i].param2 != content_only_param2) { @@ -223,6 +227,7 @@ void MapBlock::incrementUsageTimer(float dtime) void MapBlock::setNodeNoLock(v3pos_t p, MapNode n, bool important) { + expandNodesIfNeeded(); data[p.Z * zstride + p.Y * ystride + p.X] = n; raiseModified(MOD_STATE_WRITE_NEEDED, MOD_REASON_SET_NODE, important); } @@ -252,13 +257,13 @@ MapNode MapBlock::getNodeTry(const v3pos_t &p) MapBlock::MapBlock(v3s16 pos, IGameDef *gamedef): m_pos(pos), m_pos_relative(pos * MAP_BLOCKSIZE), - data(new MapNode[nodecount]), - m_gamedef(gamedef) + m_gamedef(gamedef), + m_is_mono_block(false) { - reallocate(); -/* - assert(m_modified > MOD_STATE_CLEAN); -*/ + // We start with nodecount nodes, because in the vast + // majority of the cases a block is created just before + // it is de-serialized or generated. + reallocate(nodecount, MapNode(CONTENT_IGNORE)); } MapBlock::~MapBlock() @@ -281,7 +286,8 @@ MapBlock::~MapBlock() #endif */ delete[] data; - porting::TrackFreedMemory(sizeof(MapNode) * nodecount); + if (!m_is_mono_block) + porting::TrackFreedMemory(sizeof(MapNode) * nodecount); } static inline size_t get_max_objects_per_block() @@ -334,7 +340,7 @@ bool MapBlock::saveStaticObject(u16 id, const StaticObject &obj, u32 reason) return true; } -void MapBlock::step(float dtime, const std::function &on_timer_cb) +void MapBlock::step(float dtime, const std::function &on_timer_cb) { // Run callbacks for elapsed node_timers std::vector elapsed_timers = m_node_timers.step(dtime); @@ -343,8 +349,10 @@ void MapBlock::step(float dtime, const std::function for (const auto &it : elapsed_timers) { n = getNodeNoEx(it.position); p = it.position + getPosRelative(); - if (on_timer_cb(p, n, it.elapsed)) + if (on_timer_cb(p, n, it)) { + // restart setNodeTimer(NodeTimer(it.timeout, 0, it.position)); + } if (isOrphan()) return; } @@ -380,7 +388,7 @@ void MapBlock::copyTo(NodeContainer &dst) VoxelArea data_area(v3s16(0,0,0), data_size - v3s16(1,1,1)); // Copy from data to VoxelManipulator - dst.copyFrom(data, data_area, v3s16(0,0,0), + dst.copyFrom(data, m_is_mono_block, data_area, v3s16(0,0,0), getPosRelative(), data_size); } @@ -390,9 +398,80 @@ void MapBlock::copyFrom(const VoxelManipulator &src) v3s16 data_size(MAP_BLOCKSIZE, MAP_BLOCKSIZE, MAP_BLOCKSIZE); VoxelArea data_area(v3s16(0,0,0), data_size - v3s16(1,1,1)); + expandNodesIfNeeded(); // Copy from VoxelManipulator to data src.copyTo(data, data_area, v3s16(0,0,0), getPosRelative(), data_size); + tryShrinkNodes(); +} + +void MapBlock::reallocate(u32 count, MapNode n) +{ + const auto lock = lock_unique_rec(); + + assert(count == 1 || count == nodecount); + // For now monoblocks are disabled on the client. + // The client has known data races on the block's data (FIXME). + assert(!m_gamedef->isClient() || count == nodecount); + + delete[] data; + if (data && !m_is_mono_block && count == 1) + porting::TrackFreedMemory(sizeof(MapNode) * nodecount); + + data = new MapNode[count]; + +#if defined(__GNUC__) && !defined(__clang__) +#pragma GCC diagnostic push +#if __GNUC__ > 7 +#pragma GCC diagnostic ignored "-Wclass-memaccess" +#endif +#endif + if constexpr (!CONTENT_IGNORE) { + if (count > 1 && n.getContent() == CONTENT_IGNORE) { + memset(data, 0, count * sizeof(MapNode)); +#if defined(__GNUC__) && !defined(__clang__) +#pragma GCC diagnostic pop +#endif + } else + + std::fill_n(data, count, n); + + } + + m_is_mono_block = (count == 1); +} + +void MapBlock::tryShrinkNodes() +{ + // For now monoblocks are disabled on the client. + // The client has known data races on the block's data (FIXME). + if (m_gamedef->isClient()) + return; + + if (m_is_mono_block) + return; + + MapNode n = data[0]; + bool is_mono_block = true; + for (u32 i=1; indef()); + const size_t size = m_is_mono_block ? 1 : nodecount; + std::unique_ptr tmp_nodes(new MapNode[size]); + std::copy_n(data, size, tmp_nodes.get()); + getBlockNodeIdMapping(&nimap, tmp_nodes.get(), size, m_gamedef->ndef()); - buf = MapNode::serializeBulk(version, tmp_nodes, nodecount, - content_width, params_width); - delete[] tmp_nodes; + buf = MapNode::serializeBulk(version, tmp_nodes.get(), nodecount, + content_width, params_width, m_is_mono_block); // write timestamp and node/id mapping first if (version >= 29) { @@ -577,7 +660,7 @@ void MapBlock::serialize(std::ostream &os_compressed, u8 version, bool disk, int else { buf = MapNode::serializeBulk(version, data, nodecount, - content_width, params_width); + content_width, params_width, m_is_mono_block); } writeU8(os, content_width); @@ -651,6 +734,7 @@ bool MapBlock::deSerialize(std::istream &in_compressed, u8 version, bool disk) TRACESTREAM(<<"MapBlock::deSerialize "< 7 -#pragma GCC diagnostic ignored "-Wclass-memaccess" -#endif -#endif - if constexpr(!CONTENT_IGNORE) { - memset(data, 0, nodecount * sizeof(MapNode)); -#if defined(__GNUC__) && !defined(__clang__) -#pragma GCC diagnostic pop -#endif - - } else - for (u32 i = 0; i < nodecount; i++) - data[i] = ignoreNode; - - //raiseModified(MOD_STATE_WRITE_NEEDED, MOD_REASON_REALLOCATE); - } - //// //// Modification tracking methods //// @@ -240,26 +219,28 @@ public: //// Position stuff //// + /// @return map position of block inline v3bpos_t getPos() const { return m_pos; } + /// @return in-world position of the block (== pos * MAP_BLOCKSIZE) inline v3s16 getPosRelative() { return m_pos_relative; } - inline core::aabbox3d getBox() { + /// @return in-world box of the block + inline core::aabbox3d getBox() + { return getBox(getPosRelative()); } - static inline core::aabbox3d getBox(const v3s16 &pos_relative) + static inline core::aabbox3d getBox(v3s16 pos_relative) { return core::aabbox3d(pos_relative, - pos_relative - + v3s16(MAP_BLOCKSIZE, MAP_BLOCKSIZE, MAP_BLOCKSIZE) - - v3s16(1,1,1)); + pos_relative + v3s16(MAP_BLOCKSIZE - 1)); } //// @@ -278,7 +259,7 @@ public: return isValidPosition(p.X, p.Y, p.Z); } - inline MapNode getNode(v3pos_t p, bool *valid_position) + inline MapNode getNode(const auto &p, bool *valid_position) { *valid_position = isValidPosition(p.X, p.Y, p.Z); @@ -286,7 +267,7 @@ public: return ignoreNode; const auto lock = lock_shared_rec(); - return data[p.Z * zstride + p.Y * ystride + p.X]; + return data[m_is_mono_block ? 0 : p.Z * zstride + p.Y * ystride + p.X]; } MapNode getNodeNoEx(v3pos_t p); @@ -302,6 +283,7 @@ public: if (!isValidPosition(x, y, z)) throw InvalidPositionException(); + expandNodesIfNeeded(); data[z * zstride + y * ystride + x] = n; raiseModified(MOD_STATE_WRITE_NEEDED, MOD_REASON_SET_NODE); } @@ -321,7 +303,7 @@ public: inline MapNode getNodeNoCheck(s16 x, s16 y, s16 z) { const auto lock = lock_shared_rec(); - return data[z * zstride + y * ystride + x]; + return data[m_is_mono_block ? 0 : z * zstride + y * ystride + x]; } inline MapNode getNodeNoCheck(v3s16 p) @@ -332,7 +314,7 @@ public: inline void setNodeNoCheck(s16 x, s16 y, s16 z, MapNode n) { const auto lock = lock_unique_rec(); - + expandNodesIfNeeded(); data[z * zstride + y * ystride + x] = n; raiseModified(MOD_STATE_WRITE_NEEDED, MOD_REASON_SET_NODE, false); } @@ -340,6 +322,7 @@ public: inline void setNodeNoCheck(v3pos_t p, MapNode n, bool important = false) { const auto lock = lock_unique_rec(); + expandNodesIfNeeded(); data[p.Z * zstride + p.Y * ystride + p.X] = n; raiseModified(MOD_STATE_WRITE_NEEDED, MOD_REASON_SET_NODE, important); @@ -370,7 +353,7 @@ public: bool saveStaticObject(u16 id, const StaticObject &obj, u32 reason); /// @note This method is only for Server, don't call it on client - void step(float dtime, const std::function &on_timer_cb); + void step(float dtime, const std::function &on_timer_cb); //// //// Timestamp (see m_timestamp) @@ -420,18 +403,18 @@ public: } //// - //// Reference counting (see m_refcount) + //// Reference counting (different purposes on client vs. server) //// inline void refGrab() { - assert(m_refcount < SHRT_MAX); + //assert(m_refcount < SHRT_MAX); m_refcount++; } inline void refDrop() { - assert(m_refcount > 0); + //assert(m_refcount > 0); m_refcount--; } @@ -483,6 +466,7 @@ public: /* Flags */ + inline void setNode(s16 x, s16 y, s16 z, const MapNode & n) { return setNode({x,y,z}, n); } enum modified_light {modified_light_no = 0, modified_light_yes}; void raiseModified(u32 mod, modified_light light = modified_light_no, bool important = false); @@ -570,7 +554,7 @@ public: MapNode &getNodeNoLock(v3pos_t p) { - return data[p.Z*zstride + p.Y*ystride + p.X]; + return data[ m_is_mono_block ? 0 : p.Z*zstride + p.Y*ystride + p.X]; } void setNodeNoLock(v3pos_t p, MapNode n, bool important = false); @@ -587,14 +571,25 @@ private: static const u32 nodecount = MAP_BLOCKSIZE * MAP_BLOCKSIZE * MAP_BLOCKSIZE; +private: +#if BUILD_UNITTESTS + // access to data, tryConvertToMonoBlock, deconvertMonoblock + friend class TestMapBlock; +#endif + /* Private methods */ void deSerialize_pre22(std::istream &is, u8 version, bool disk); + // check if all nodes are identical, if so convert to monoblock + void tryShrinkNodes(); + // if a monoblock, expand storage back to the full array + void expandNodesIfNeeded(); + void reallocate(u32 count, MapNode n); static void getBlockNodeIdMapping(NameIdMapping *nimap, MapNode *nodes, - const NodeDefManager *nodedef); + u32 count, const NodeDefManager *nodedef); static void correctBlockNodeIds(const NameIdMapping *nimap, MapNode *nodes, IGameDef *gamedef); @@ -629,18 +624,14 @@ private: */ v3s16 m_pos_relative; - /* - Reference count; currently used for determining if this block is in - the list of blocks to be drawn. - */ std::atomic_short m_refcount = 0; /* - * Note that this is not an inline array because that has implications for - * heap fragmentation (the array is exactly 16K), CPU caches and/or - * optimizability of algorithms working on this array. + * Note that this is not an inline array because that has implications for heap + * fragmentation (the array is exactly 16K, or exactly 4 bytes for a "monoblock"), + * CPU caches and/or optimizability of algorithms working on this array. */ - MapNode *const data; // of `nodecount` elements + MapNode *data = nullptr; // provides the item and node definitions IGameDef *m_gamedef; @@ -651,6 +642,11 @@ private: */ float m_usage_timer = 0; + /* + * For "monoblocks", the whole block is filled with the same node, only this node is stored. + * (For reduced memory usage) + */ + bool m_is_mono_block; public: //// ABM optimizations //// // True if we never want to cache content types for this block diff --git a/src/mapgen/mapgen.h b/src/mapgen/mapgen.h index afa369fe7..790d7eb39 100644 --- a/src/mapgen/mapgen.h +++ b/src/mapgen/mapgen.h @@ -32,15 +32,11 @@ class NodeDefManager; extern const FlagDesc flagdesc_mapgen[]; extern const FlagDesc flagdesc_gennotify[]; -class Biome; class BiomeGen; struct BiomeParams; struct BiomeParamsOriginal; class BiomeManager; class EmergeParams; -class EmergeManager; -class MapBlock; -class VoxelManipulator; struct BlockMakeData; class VoxelArea; class Map; diff --git a/src/mapgen/mapgen_carpathian.h b/src/mapgen/mapgen_carpathian.h index aab9dc133..1a3ef83d9 100644 --- a/src/mapgen/mapgen_carpathian.h +++ b/src/mapgen/mapgen_carpathian.h @@ -10,7 +10,6 @@ #define MGCARPATHIAN_CAVERNS 0x01 #define MGCARPATHIAN_RIVERS 0x02 -class BiomeManager; extern const FlagDesc flagdesc_mapgen_carpathian[]; diff --git a/src/mapgen/mapgen_flat.h b/src/mapgen/mapgen_flat.h index 6eb303765..9071edb9e 100644 --- a/src/mapgen/mapgen_flat.h +++ b/src/mapgen/mapgen_flat.h @@ -12,7 +12,6 @@ #define MGFLAT_HILLS 0x02 #define MGFLAT_CAVERNS 0x04 -class BiomeManager; extern const FlagDesc flagdesc_mapgen_flat[]; diff --git a/src/mapgen/mapgen_fractal.h b/src/mapgen/mapgen_fractal.h index 1a9e4f28e..9dead3e8e 100644 --- a/src/mapgen/mapgen_fractal.h +++ b/src/mapgen/mapgen_fractal.h @@ -10,7 +10,6 @@ ///////////// Mapgen Fractal flags #define MGFRACTAL_TERRAIN 0x01 -class BiomeManager; extern const FlagDesc flagdesc_mapgen_fractal[]; diff --git a/src/mapgen/mapgen_v5.h b/src/mapgen/mapgen_v5.h index f849d534a..ddda724db 100644 --- a/src/mapgen/mapgen_v5.h +++ b/src/mapgen/mapgen_v5.h @@ -11,7 +11,6 @@ ///////// Mapgen V5 flags #define MGV5_CAVERNS 0x01 -class BiomeManager; extern const FlagDesc flagdesc_mapgen_v5[]; diff --git a/src/mapgen/mapgen_v6.cpp b/src/mapgen/mapgen_v6.cpp index 5dd15e7cd..c8c788879 100644 --- a/src/mapgen/mapgen_v6.cpp +++ b/src/mapgen/mapgen_v6.cpp @@ -49,6 +49,18 @@ const FlagDesc flagdesc_mapgen_v6[] = { MapgenV6::MapgenV6(MapgenV6Params *params, EmergeParams *emerge) : Mapgen(MAPGEN_V6, params, emerge) { + if (csize.X != csize.Y || csize.Y != csize.Z) { + // In practice: + // (5,2,1) segfaults in mudflow + // (5,2,5) generates very broken terrain + throw BaseException("MapgenV6: chunk size must be cubic"); + } + if (csize.Y % 2 == 0) { + // weird ledges appear in some places + warningstream << "MapgenV6: chunk heights divisible by two are known " + "to be buggy." << std::endl; + } + ystride = csize.X; heightmap = new s16[csize.X * csize.Z]; diff --git a/src/mapgen/mapgen_v7.h b/src/mapgen/mapgen_v7.h index e3595aa49..8dc984141 100644 --- a/src/mapgen/mapgen_v7.h +++ b/src/mapgen/mapgen_v7.h @@ -15,7 +15,6 @@ #define MGV7_CAVERNS 0x08 #define MGV7_BIOMEREPEAT 0x10 // Now unused -class BiomeManager; extern const FlagDesc flagdesc_mapgen_v7[]; diff --git a/src/mapgen/mapgen_valleys.h b/src/mapgen/mapgen_valleys.h index e395bbc29..6c2c3fc5d 100644 --- a/src/mapgen/mapgen_valleys.h +++ b/src/mapgen/mapgen_valleys.h @@ -21,7 +21,6 @@ Licensing changed by permission of Gael de Sailly. #define MGVALLEYS_VARY_RIVER_DEPTH 0x04 #define MGVALLEYS_ALT_DRY 0x08 -class BiomeManager; class BiomeGenOriginal; extern const FlagDesc flagdesc_mapgen_valleys[]; diff --git a/src/mapgen/mg_decoration.cpp b/src/mapgen/mg_decoration.cpp index 1e3b7ec53..600de1446 100644 --- a/src/mapgen/mg_decoration.cpp +++ b/src/mapgen/mg_decoration.cpp @@ -132,6 +132,10 @@ void Decoration::placeDeco(Mapgen *mg, u32 blockseed, v3s16 nmin, v3s16 nmax) PcgRandom ps(blockseed + 53); int carea_size = nmax.X - nmin.X + 1; + if (nmax.Z - nmin.Z + 1 != carea_size) { + // TODO: this is a stupid restriction, which we should lift + throw BaseException("Decoration::placeDeco requires a square area (XZ)"); + } // Divide area into parts // If chunksize is changed it may no longer be divisable by sidelen diff --git a/src/mapgen/mg_schematic.h b/src/mapgen/mg_schematic.h index 02b40a6ba..dcb2db994 100644 --- a/src/mapgen/mg_schematic.h +++ b/src/mapgen/mg_schematic.h @@ -11,9 +11,7 @@ class Map; class ServerMap; -class Mapgen; class MMVManip; -class PseudoRandom; class NodeResolver; class Server; diff --git a/src/mapnode.cpp b/src/mapnode.cpp index bcb713c80..fd1b171f4 100644 --- a/src/mapnode.cpp +++ b/src/mapnode.cpp @@ -712,7 +712,7 @@ void MapNode::deSerialize(const u8 *source, u8 version) Buffer MapNode::serializeBulk(int version, const MapNode *nodes, u32 nodecount, - u8 content_width, u8 params_width) + u8 content_width, u8 params_width, bool is_mono_block) { if (!ser_ver_supported_write(version)) throw VersionMismatchException("ERROR: MapNode format not supported"); @@ -724,14 +724,22 @@ Buffer MapNode::serializeBulk(int version, // Writing to the buffer linearly is faster u8 *p = &databuf[0]; - for (u32 i = 0; i < nodecount; i++, p += 2) - writeU16(p, nodes[i].param0); - - for (u32 i = 0; i < nodecount; i++, p++) - writeU8(p, nodes[i].param1); - - for (u32 i = 0; i < nodecount; i++, p++) - writeU8(p, nodes[i].param2); + if (is_mono_block) { + MapNode n = nodes[0]; + for (u32 i = 0; i < nodecount; i++, p += 2) + writeU16(p, n.param0); + for (u32 i = 0; i < nodecount; i++, p++) + writeU8(p, n.param1); + for (u32 i = 0; i < nodecount; i++, p++) + writeU8(p, n.param2); + } else { + for (u32 i = 0; i < nodecount; i++, p += 2) + writeU16(p, nodes[i].param0); + for (u32 i = 0; i < nodecount; i++, p++) + writeU8(p, nodes[i].param1); + for (u32 i = 0; i < nodecount; i++, p++) + writeU8(p, nodes[i].param2); + } return databuf; } diff --git a/src/mapnode.h b/src/mapnode.h index bc7035f02..520f0aad6 100644 --- a/src/mapnode.h +++ b/src/mapnode.h @@ -322,9 +322,10 @@ struct alignas(u32) MapNode // content_width = the number of bytes of content per node // params_width = the number of bytes of params per node // compressed = true to zlib-compress output + // is_mono_block = if true, nodes is array of size 1 static Buffer serializeBulk(int version, const MapNode *nodes, u32 nodecount, - u8 content_width, u8 params_width); + u8 content_width, u8 params_width, bool is_mono_block = false); static void deSerializeBulk(std::istream &is, int version, MapNode *nodes, u32 nodecount, u8 content_width, u8 params_width); diff --git a/src/mapsector.cpp b/src/mapsector.cpp index 465b6e1a9..5b851a9f0 100644 --- a/src/mapsector.cpp +++ b/src/mapsector.cpp @@ -22,12 +22,18 @@ MapSector::~MapSector() deleteBlocks(); } -void MapSector::deleteBlocks() +void MapSector::deleteBlocks(size_t *used_count) { - // Clear cache m_block_cache = nullptr; - // Delete all blocks + size_t u = 0; + for (auto &it : m_blocks) { + if (it.second->refGet() > 0) + u++; + it.second.reset(); + } + if (used_count) + *used_count += u; m_blocks.clear(); } diff --git a/src/mapsector.h b/src/mapsector.h index e5856471a..9fc028b04 100644 --- a/src/mapsector.h +++ b/src/mapsector.h @@ -31,7 +31,9 @@ public: MapSector(Map *parent, v2s16 pos, IGameDef *gamedef); virtual ~MapSector(); - void deleteBlocks(); + /// @brief Deletes all blocks (regardless of reference count). + /// @param used_count output: number of blocks which were still ref'd + void deleteBlocks(size_t *used_count = nullptr); v2s16 getPos() const { @@ -62,7 +64,8 @@ public: bool empty() const { return m_blocks.empty(); } - int size() const { return m_blocks.size(); } + size_t size() const { return m_blocks.size(); } + protected: // The pile of MapBlocks diff --git a/src/network/clientopcodes.cpp b/src/network/clientopcodes.cpp index 6ad61b0b9..7ac4592f4 100644 --- a/src/network/clientopcodes.cpp +++ b/src/network/clientopcodes.cpp @@ -111,6 +111,7 @@ const ToClientCommandHandler toClientCommandTable[TOCLIENT_NUM_MSG_TYPES] = { "TOCLIENT_FORMSPEC_PREPEND", TOCLIENT_STATE_CONNECTED, &Client::handleCommand_FormspecPrepend }, // 0x61, { "TOCLIENT_MINIMAP_MODES", TOCLIENT_STATE_CONNECTED, &Client::handleCommand_MinimapModes }, // 0x62, { "TOCLIENT_SET_LIGHTING", TOCLIENT_STATE_CONNECTED, &Client::handleCommand_SetLighting }, // 0x63, + { "TOCLIENT_SPAWN_PARTICLE_BATCH", TOCLIENT_STATE_CONNECTED, &Client::handleCommand_SpawnParticleBatch }, // 0x64, }; const static ServerCommandFactory null_command_factory = { nullptr, 0, false }; diff --git a/src/network/clientpackethandler.cpp b/src/network/clientpackethandler.cpp index efea0ba47..2772f0c90 100644 --- a/src/network/clientpackethandler.cpp +++ b/src/network/clientpackethandler.cpp @@ -44,6 +44,7 @@ #include "skyparams.h" #include "particles.h" #include +#include const char *accessDeniedStrings[SERVER_ACCESSDENIED_MAX] = { N_("Invalid password"), @@ -163,6 +164,14 @@ void Client::handleCommand_AuthAccept(NetworkPacket* pkt) Send(&resp_pkt); m_state = LC_Init; + + // Log meaningful info + if (!m_internal_server) { + Address remote = m_con->GetPeerAddress(PEER_ID_SERVER); + actionstream << "Connected to " << m_address_name << " ("; + remote.print(actionstream); + actionstream << ")" << std::endl; + } } void Client::handleCommand_AcceptSudoMode(NetworkPacket* pkt) @@ -408,6 +417,9 @@ void Client::handleCommand_ChatMessage(NetworkPacket *pkt) chatMessage->type = (ChatMessageType) message_type; + // log the chat message + actionstream << "CHAT: " << wide_to_utf8(unescape_enriched(chatMessage->message)) << std::endl; + // @TODO send this to CSM using ChatMessage object if (modsLoaded() && m_script->on_receiving_message( wide_to_utf8(chatMessage->message))) { @@ -996,6 +1008,29 @@ void Client::handleCommand_SpawnParticle(NetworkPacket* pkt) m_client_event_queue.push(event); } +void Client::handleCommand_SpawnParticleBatch(NetworkPacket *pkt) +{ + std::stringstream particle_batch_data(std::ios::binary | std::ios::in | std::ios::out); + { + std::istringstream compressed(pkt->readLongString(), std::ios::binary); + decompressZstd(compressed, particle_batch_data); + } + + while (particle_batch_data.peek() != EOF) { + auto p = std::make_unique(); + { + std::istringstream particle_data(deSerializeString32(particle_batch_data), std::ios::binary); + p->deSerialize(particle_data, m_proto_ver); + } + + ClientEvent *event = new ClientEvent(); + event->type = CE_SPAWN_PARTICLE; + event->spawn_particle = p.release(); + + m_client_event_queue.push(event); + } +} + void Client::handleCommand_AddParticleSpawner(NetworkPacket* pkt) { std::string datastring(pkt->getString(0), pkt->getSize()); diff --git a/src/network/connection.cpp b/src/network/connection.cpp index 8575ea05b..f8da5a2cf 100644 --- a/src/network/connection.cpp +++ b/src/network/connection.cpp @@ -18,10 +18,12 @@ namespace con { -IConnection *createMTP(float timeout, bool ipv6, PeerHandler *handler) +IConnection *createMTP(float timeout, bool ipv6, PeerHandler *handler, bool simple_singleplayer_mode) { + constexpr auto MAX_PACKET_SIZE_SINGLEPLAYER = 65000; // safe minimum across internet networks for ipv4 and ipv6 - constexpr u32 MAX_PACKET_SIZE = 1400; // 512; + u32 MAX_PACKET_SIZE = simple_singleplayer_mode ? MAX_PACKET_SIZE_SINGLEPLAYER : 1300; + #if USE_MULTI return new con::ConnectionMulti(MAX_PACKET_SIZE, timeout, ipv6, handler); #elif USE_ENET diff --git a/src/network/connection.h b/src/network/connection.h index 246391822..4a04d1879 100644 --- a/src/network/connection.h +++ b/src/network/connection.h @@ -77,6 +77,6 @@ public: }; // MTP = Minetest Protocol -IConnection *createMTP(float timeout, bool ipv6, PeerHandler *handler); +IConnection *createMTP(float timeout, bool ipv6, PeerHandler *handler, bool simple_singleplayer_mode); } // namespace diff --git a/src/network/networkprotocol.cpp b/src/network/networkprotocol.cpp index 6f9e1fa40..c7e2a9827 100644 --- a/src/network/networkprotocol.cpp +++ b/src/network/networkprotocol.cpp @@ -68,10 +68,13 @@ PROTOCOL VERSION 49 Support of showing a player inventory using 'core.show_formspec' [scheduled bump for 5.13.0] + PROTOCOL VERSION 50 + Support for TOCLIENT_SPAWN_PARTICLE_BATCH + [scheduled bump for 5.14.0] */ // Note: Also update core.protocol_versions in builtin when bumping -const u16 LATEST_PROTOCOL_VERSION = 49; +const u16 LATEST_PROTOCOL_VERSION = 50; // See also formspec [Version History] in doc/lua_api.md const u16 FORMSPEC_API_VERSION = 10; diff --git a/src/network/networkprotocol.h b/src/network/networkprotocol.h index 46f838039..5fb0e9011 100644 --- a/src/network/networkprotocol.h +++ b/src/network/networkprotocol.h @@ -296,6 +296,8 @@ enum ToClientCommand : u16 TOCLIENT_SPAWN_PARTICLE = 0x46, /* + ParticleParameters params: + using range = RangedParameter { T min, max f32 bias @@ -700,7 +702,14 @@ enum ToClientCommand : u16 f32 center_weight_power */ - TOCLIENT_NUM_MSG_TYPES = 0x64, + TOCLIENT_SPAWN_PARTICLE_BATCH = 0x64, + /* + std::string data, zstd-compressed, for each particle: + u32 len + u8[len] serialized ParticleParameters + */ + + TOCLIENT_NUM_MSG_TYPES = 0x65, }; enum ToServerCommand : u16 diff --git a/src/network/serveropcodes.cpp b/src/network/serveropcodes.cpp index b43158fc2..2eb621bbe 100644 --- a/src/network/serveropcodes.cpp +++ b/src/network/serveropcodes.cpp @@ -216,4 +216,5 @@ const ClientCommandFactory clientCommandFactoryTable[TOCLIENT_NUM_MSG_TYPES] = { "TOCLIENT_FORMSPEC_PREPEND", 0, true }, // 0x61 { "TOCLIENT_MINIMAP_MODES", 0, true }, // 0x62 { "TOCLIENT_SET_LIGHTING", 0, true }, // 0x63 + { "TOCLIENT_SPAWN_PARTICLE_BATCH", 0, true }, // 0x64 }; diff --git a/src/nodedef.cpp b/src/nodedef.cpp index 868dd7d3e..72777911b 100644 --- a/src/nodedef.cpp +++ b/src/nodedef.cpp @@ -1185,8 +1185,16 @@ void ContentFeatures::updateTextures(ITextureSource *tsrc, IShaderSource *shdsrc if (tsrc) // minimap pixel color = average color of top tile - if (tsettings.enable_minimap && !tdef[0].name.empty() && drawtype != NDT_AIRLIKE) - minimap_color = tsrc->getTextureAverageColor(tdef[0].name); + if (tsettings.enable_minimap && drawtype != NDT_AIRLIKE && !tdef[0].name.empty()) + { + if (!tdef_overlay[0].name.empty()) { + // Merge overlay and base texture + std::string combined = tdef[0].name + "^(" + tdef_overlay[0].name + ")"; + minimap_color = tsrc->getTextureAverageColor(combined); + } else { + minimap_color = tsrc->getTextureAverageColor(tdef[0].name); + } + } // Tiles (fill in f->tiles[]) bool any_polygon_offset = false; diff --git a/src/nodedef.h b/src/nodedef.h index 9eb479f67..d52a26061 100644 --- a/src/nodedef.h +++ b/src/nodedef.h @@ -253,7 +253,6 @@ private: }; struct MapNode; -class NodeMetadata; enum LeavesStyle { LEAVES_FANCY, diff --git a/src/object_properties.cpp b/src/object_properties.cpp index 1a5e2c002..c9b48c9b0 100644 --- a/src/object_properties.cpp +++ b/src/object_properties.cpp @@ -34,6 +34,11 @@ ObjectProperties::ObjectProperties() std::string ObjectProperties::dump() const { + const auto &put_color = [] (std::ostream &os, video::SColor color) { + os << "\"" << color.getAlpha() << "," << color.getRed() << "," + << color.getGreen() << "," << color.getBlue() << "\" "; + }; + std::ostringstream os(std::ios::binary); os << "hp_max=" << hp_max; os << ", breath_max=" << breath_max; @@ -49,10 +54,8 @@ std::string ObjectProperties::dump() const } os << "]"; os << ", colors=["; - for (const video::SColor &color : colors) { - os << "\"" << color.getAlpha() << "," << color.getRed() << "," - << color.getGreen() << "," << color.getBlue() << "\" "; - } + for (const video::SColor &color : colors) + put_color(os, color); os << "]"; os << ", spritediv=" << spritediv; os << ", initial_sprite_basepos=" << initial_sprite_basepos; @@ -63,15 +66,18 @@ std::string ObjectProperties::dump() const os << ", backface_culling="<< backface_culling; os << ", glow=" << glow; os << ", nametag=" << nametag; - os << ", nametag_color=" << "\"" << nametag_color.getAlpha() << "," << nametag_color.getRed() - << "," << nametag_color.getGreen() << "," << nametag_color.getBlue() << "\" "; - + os << ", nametag_color="; + put_color(os, nametag_color); + os << ", nametag_bgcolor="; if (nametag_bgcolor) - os << ", nametag_bgcolor=" << "\"" << nametag_color.getAlpha() << "," << nametag_color.getRed() - << "," << nametag_color.getGreen() << "," << nametag_color.getBlue() << "\" "; + put_color(os, nametag_bgcolor.value()); else - os << ", nametag_bgcolor=null "; - + os << "=null "; + os << ", nametag_fontsize="; + if (nametag_fontsize) + os << "=" << nametag_fontsize.value() << " "; + else + os << "=null "; os << ", selectionbox=" << selectionbox.MinEdge << "," << selectionbox.MaxEdge; os << ", rotate_selectionbox=" << rotate_selectionbox; os << ", pointable=" << Pointabilities::toStringPointabilityType(pointable); @@ -84,22 +90,24 @@ std::string ObjectProperties::dump() const os << ", damage_texture_modifier=" << damage_texture_modifier; os << ", shaded=" << shaded; os << ", show_on_minimap=" << show_on_minimap; + os << ", nametag_scale_z=" << nametag_scale_z; return os.str(); } -static auto tie(const ObjectProperties &o) +static inline auto tie(const ObjectProperties &o) { // Make sure to add new members to this list! return std::tie( o.textures, o.colors, o.collisionbox, o.selectionbox, o.visual, o.mesh, o.damage_texture_modifier, o.nametag, o.infotext, o.wield_item, o.visual_size, - o.nametag_color, o.nametag_bgcolor, o.spritediv, o.initial_sprite_basepos, + o.nametag_color, o.nametag_bgcolor, o.nametag_fontsize, o.spritediv, + o.initial_sprite_basepos, o.stepheight, o.automatic_rotate, o.automatic_face_movement_dir_offset, o.automatic_face_movement_max_rotation_per_sec, o.eye_height, o.zoom_fov, o.node, o.hp_max, o.breath_max, o.glow, o.pointable, o.physical, o.collideWithObjects, o.rotate_selectionbox, o.is_visible, o.makes_footstep_sound, o.automatic_face_movement_dir, o.backface_culling, o.static_save, o.use_texture_alpha, - o.shaded, o.show_on_minimap + o.shaded, o.show_on_minimap, o.nametag_scale_z ); } @@ -209,6 +217,13 @@ void ObjectProperties::serialize(std::ostream &os) const writeU8(os, node.getParam1()); writeU8(os, node.getParam2()); + if (!nametag_fontsize) + writeU32(os, U32_MAX); // null placeholder + else + writeU32(os, nametag_fontsize.value()); + + writeU8(os, nametag_scale_z); + // Add stuff only at the bottom. // Never remove anything, because we don't want new versions of this! } @@ -319,5 +334,14 @@ void ObjectProperties::deSerialize(std::istream &is) node.param1 = readU8(is); node.param2 = readU8(is); + u32 fontsize; + if (!tryRead(fontsize, is)) + return; + if (fontsize != U32_MAX) + nametag_fontsize = fontsize; + else + nametag_fontsize = std::nullopt; + nametag_scale_z = readU8(is); + // Add new properties down here and remember to use either tryRead<> or a try-catch. } diff --git a/src/object_properties.h b/src/object_properties.h index 7755c3f8b..8bd4e3c27 100644 --- a/src/object_properties.h +++ b/src/object_properties.h @@ -58,6 +58,7 @@ struct ObjectProperties // FMTODO: public shared_locker f32 automatic_face_movement_max_rotation_per_sec = -1.0f; float eye_height = 1.625f; float zoom_fov = 0.0f; + std::optional nametag_fontsize; MapNode node = MapNode(CONTENT_IGNORE); u16 hp_max = 1; u16 breath_max = 0; @@ -75,6 +76,7 @@ struct ObjectProperties // FMTODO: public shared_locker bool use_texture_alpha = false; bool shaded = true; bool show_on_minimap = false; + bool nametag_scale_z = false; // fm: bool force_load = false; diff --git a/src/player.cpp b/src/player.cpp index e7f38fa1b..205c0e33f 100644 --- a/src/player.cpp +++ b/src/player.cpp @@ -114,8 +114,6 @@ ItemStack &Player::getWieldedItem(ItemStack *selected, ItemStack *hand) const u32 Player::addHud(HudElement *toadd) { - MutexAutoLock lock(m_mutex); - u32 id = getFreeHudID(); if (id < hud.size()) @@ -128,37 +126,27 @@ u32 Player::addHud(HudElement *toadd) HudElement* Player::getHud(u32 id) { - MutexAutoLock lock(m_mutex); - if (id < hud.size()) return hud[id]; - - return NULL; -} - -void Player::hudApply(std::function&)> f) -{ - MutexAutoLock lock(m_mutex); - f(hud); + return nullptr; } HudElement* Player::removeHud(u32 id) { - MutexAutoLock lock(m_mutex); - - HudElement* retval = NULL; + HudElement* retval = nullptr; if (id < hud.size()) { retval = hud[id]; - hud[id] = NULL; + hud[id] = nullptr; } + // shrink list if possible + while (!hud.empty() && hud.back() == nullptr) + hud.pop_back(); return retval; } void Player::clearHud() { - MutexAutoLock lock(m_mutex); - - while(!hud.empty()) { + while (!hud.empty()) { delete hud.back(); hud.pop_back(); } diff --git a/src/player.h b/src/player.h index 24a560036..2d603c8d7 100644 --- a/src/player.h +++ b/src/player.h @@ -13,8 +13,6 @@ #include "constants.h" #include "util/basic_macros.h" #include "util/string.h" -#include -#include #include #define PLAYERNAME_SIZE 20 @@ -141,9 +139,7 @@ enum CameraMode { extern const struct EnumString es_CameraMode[]; -class Map; struct HudElement; -class Environment; class Player : public shared_locker @@ -233,8 +229,8 @@ public: return m_fov_override_spec; } + const auto &getHudElements() const { return hud; } HudElement* getHud(u32 id); - void hudApply(std::function&)> f); u32 addHud(HudElement* hud); HudElement* removeHud(u32 id); void clearHud(); @@ -256,12 +252,6 @@ protected: std::atomic_uint16_t m_wield_index {0}; PlayerFovSpec m_fov_override_spec = { 0.0f, false, 0.0f }; - std::vector hud; - private: - // Protect some critical areas - // hud for example can be modified by EmergeThread - // and ServerThread - // FIXME: ^ this sounds like nonsense. should be checked. - std::mutex m_mutex; + std::vector hud; }; diff --git a/src/rollback_interface.h b/src/rollback_interface.h index aa45cbf28..0a41895fd 100644 --- a/src/rollback_interface.h +++ b/src/rollback_interface.h @@ -13,7 +13,6 @@ class Map; class IGameDef; -struct MapNode; class InventoryManager; struct RollbackNode diff --git a/src/script/common/c_content.cpp b/src/script/common/c_content.cpp index f368c3853..1cc30f568 100644 --- a/src/script/common/c_content.cpp +++ b/src/script/common/c_content.cpp @@ -267,7 +267,7 @@ void push_item_definition_full(lua_State *L, const ItemDefinition &i) } /******************************************************************************/ -const std::array object_property_keys = { +const std::array object_property_keys = { "hp_max", "breath_max", "physical", @@ -302,6 +302,8 @@ const std::array object_property_keys = { "damage_texture_modifier", "show_on_minimap", // "node" is intentionally not here as it's gated behind `fallback` below! + "nametag_fontsize", + "nametag_scale_z", }; /******************************************************************************/ @@ -469,7 +471,7 @@ void read_object_properties(lua_State *L, int index, lua_pop(L, 1); lua_getfield(L, -1, "nametag_bgcolor"); if (!lua_isnil(L, -1)) { - if (lua_toboolean(L, -1)) { + if (lua_toboolean(L, -1)) { // truthy video::SColor color; if (read_color(L, -1, &color)) prop->nametag_bgcolor = color; @@ -478,6 +480,16 @@ void read_object_properties(lua_State *L, int index, } } lua_pop(L, 1); + lua_getfield(L, -1, "nametag_fontsize"); + if (!lua_isnil(L, -1)) { + if (lua_toboolean(L, -1)) { // truthy + prop->nametag_fontsize = lua_tointeger(L, -1); + } else { + prop->nametag_fontsize = std::nullopt; + } + } + lua_pop(L, 1); + getboolfield(L, -1, "nametag_scale_z", prop->nametag_scale_z); getstringfield(L, -1, "infotext", prop->infotext); getboolfield(L, -1, "static_save", prop->static_save); @@ -572,13 +584,18 @@ void push_object_properties(lua_State *L, const ObjectProperties *prop) lua_setfield(L, -2, "nametag"); push_ARGB8(L, prop->nametag_color); lua_setfield(L, -2, "nametag_color"); - if (prop->nametag_bgcolor) { + if (prop->nametag_bgcolor) push_ARGB8(L, prop->nametag_bgcolor.value()); - lua_setfield(L, -2, "nametag_bgcolor"); - } else { + else lua_pushboolean(L, false); - lua_setfield(L, -2, "nametag_bgcolor"); - } + lua_setfield(L, -2, "nametag_bgcolor"); + if (prop->nametag_fontsize) + lua_pushinteger(L, prop->nametag_fontsize.value()); + else + lua_pushboolean(L, false); + lua_setfield(L, -2, "nametag_fontsize"); + lua_pushboolean(L, prop->nametag_scale_z); + lua_setfield(L, -2, "nametag_scale_z"); lua_pushlstring(L, prop->infotext.c_str(), prop->infotext.size()); lua_setfield(L, -2, "infotext"); lua_pushboolean(L, prop->static_save); diff --git a/src/script/common/c_content.h b/src/script/common/c_content.h index f57c15797..0587ed7f3 100644 --- a/src/script/common/c_content.h +++ b/src/script/common/c_content.h @@ -51,7 +51,6 @@ struct DigParams; struct HitParams; struct EnumString; struct NoiseParams; -class Schematic; class ServerActiveObject; struct collisionMoveResult; namespace treegen { struct TreeDef; } @@ -60,8 +59,7 @@ extern struct EnumString es_TileAnimationType[]; extern struct EnumString es_ItemType[]; extern struct EnumString es_TouchInteractionMode[]; - -extern const std::array object_property_keys; +extern const std::array object_property_keys; void read_content_features(lua_State *L, ContentFeatures &f, int index); void push_content_features(lua_State *L, const ContentFeatures &c); diff --git a/src/script/cpp_api/s_async.cpp b/src/script/cpp_api/s_async.cpp index d7c1bc245..e5b7c6055 100644 --- a/src/script/cpp_api/s_async.cpp +++ b/src/script/cpp_api/s_async.cpp @@ -96,38 +96,44 @@ void AsyncEngine::addWorkerThread() } /******************************************************************************/ -u32 AsyncEngine::queueAsyncJob(std::string &&func, std::string &¶ms, - const std::string &mod_origin) + +u32 AsyncEngine::queueAsyncJob(LuaJobInfo &&job) { MutexAutoLock autolock(jobQueueMutex); u32 jobId = jobIdCounter++; - jobQueue.emplace_back(); - auto &to_add = jobQueue.back(); - to_add.id = jobId; - to_add.function = std::move(func); - to_add.params = std::move(params); - to_add.mod_origin = mod_origin; + assert(!job.function.empty()); + job.id = jobId; + jobQueue.push_back(std::move(job)); jobQueueCounter.post(); return jobId; } +u32 AsyncEngine::queueAsyncJob(std::string &&func, std::string &¶ms, + const std::string &mod_origin) +{ + LuaJobInfo to_add(std::move(func), std::move(params), mod_origin); + return queueAsyncJob(std::move(to_add)); +} + u32 AsyncEngine::queueAsyncJob(std::string &&func, PackedValue *params, const std::string &mod_origin) +{ + LuaJobInfo to_add(std::move(func), params, mod_origin); + return queueAsyncJob(std::move(to_add)); +} + +bool AsyncEngine::cancelAsyncJob(u32 id) { MutexAutoLock autolock(jobQueueMutex); - u32 jobId = jobIdCounter++; - - jobQueue.emplace_back(); - auto &to_add = jobQueue.back(); - to_add.id = jobId; - to_add.function = std::move(func); - to_add.params_ext.reset(params); - to_add.mod_origin = mod_origin; - - jobQueueCounter.post(); - return jobId; + for (auto job = jobQueue.begin(); job != jobQueue.end(); job++) { + if (job->id == id) { + jobQueue.erase(job); + return true; + } + } + return false; } /******************************************************************************/ @@ -421,3 +427,24 @@ void* AsyncWorkerThread::run() return 0; } +u32 ScriptApiAsync::queueAsync(std::string &&serialized_func, + PackedValue *param, const std::string &mod_origin) +{ + return asyncEngine.queueAsyncJob(std::move(serialized_func), + param, mod_origin); +} + +bool ScriptApiAsync::cancelAsync(u32 id) +{ + return asyncEngine.cancelAsyncJob(id); +} + +void ScriptApiAsync::stepAsync() +{ + const auto _script_lock = std::unique_lock(m_luastackmutex, std::try_to_lock); + if (!_script_lock.owns_lock()) { + return; + } + + asyncEngine.step(getStack()); +} diff --git a/src/script/cpp_api/s_async.h b/src/script/cpp_api/s_async.h index 1b6743dea..fd82f6f36 100644 --- a/src/script/cpp_api/s_async.h +++ b/src/script/cpp_api/s_async.h @@ -26,6 +26,12 @@ class AsyncEngine; struct LuaJobInfo { LuaJobInfo() = default; + LuaJobInfo(std::string &&func, std::string &¶ms, const std::string &mod_origin = "") : + function(func), params(params), mod_origin(mod_origin) {} + LuaJobInfo(std::string &&func, PackedValue *params, const std::string &mod_origin = "") : + function(func), mod_origin(mod_origin) { + params_ext.reset(params); + } // Function to be called in async environment (from string.dump) std::string function; @@ -102,12 +108,26 @@ public: u32 queueAsyncJob(std::string &&func, PackedValue *params, const std::string &mod_origin = ""); + /** + * Try to cancel an async job + * @param id The ID of the job + * @return Whether the job was cancelled + */ + bool cancelAsyncJob(u32 id); + /** * Engine step to process finished jobs * @param L The Lua stack */ void step(lua_State *L); + /** + * Get the maximum number of threads that can be used by the async environment + */ + unsigned int getThreadingCapacity() const { + return MYMAX(workerThreads.size(), autoscaleMaxWorkers); + } + protected: /** * Get a Job from queue to be processed @@ -117,6 +137,13 @@ protected: */ bool getJob(LuaJobInfo *job); + /** + * Queue an async job + * @param job The job to queue (takes ownership!) + * @return Id of the queued job + */ + u32 queueAsyncJob(LuaJobInfo &&job); + /** * Put a Job result back to result queue * @param result result of completed job @@ -206,3 +233,23 @@ private: // Counter semaphore for job dispatching Semaphore jobQueueCounter; }; + +class ScriptApiAsync: + virtual public ScriptApiBase +{ +public: + ScriptApiAsync(Server *server): asyncEngine(server) {} + + virtual void initAsync() = 0; + void stepAsync(); + + u32 queueAsync(std::string &&serialized_func, + PackedValue *param, const std::string &mod_origin); + bool cancelAsync(u32 id); + unsigned int getThreadingCapacity() const { + return asyncEngine.getThreadingCapacity(); + } + +protected: + AsyncEngine asyncEngine; +}; diff --git a/src/script/cpp_api/s_item.h b/src/script/cpp_api/s_item.h index 8c07dfae7..52569bc4d 100644 --- a/src/script/cpp_api/s_item.h +++ b/src/script/cpp_api/s_item.h @@ -11,7 +11,6 @@ struct PointedThing; struct ItemStack; class ServerActiveObject; -struct ItemDefinition; class LuaItemStack; class ModApiItem; class InventoryList; diff --git a/src/script/cpp_api/s_node.cpp b/src/script/cpp_api/s_node.cpp index 4ac16e671..ac10cadaf 100644 --- a/src/script/cpp_api/s_node.cpp +++ b/src/script/cpp_api/s_node.cpp @@ -216,7 +216,7 @@ void ScriptApiNode::node_after_destruct(v3s16 p, MapNode node) lua_pop(L, 1); // Pop error handler } -bool ScriptApiNode::node_on_timer(v3s16 p, MapNode node, f32 dtime) +bool ScriptApiNode::node_on_timer(v3s16 p, MapNode node, f32 elapsed, f32 timeout) { SCRIPTAPI_PRECHECKHEADER @@ -230,10 +230,14 @@ bool ScriptApiNode::node_on_timer(v3s16 p, MapNode node, f32 dtime) // Call function push_v3s16(L, p); - lua_pushnumber(L,dtime); - PCALL_RES(lua_pcall(L, 2, 1, error_handler)); - lua_remove(L, error_handler); - return readParam(L, -1, false); + lua_pushnumber(L, elapsed); + pushnode(L, node); + lua_pushnumber(L, timeout); + PCALL_RES(lua_pcall(L, 4, 1, error_handler)); + bool ret = readParam(L, -1, false); + lua_pop(L, 2); // error handler, return value + + return ret; } void ScriptApiNode::node_on_receive_fields(v3s16 p, diff --git a/src/script/cpp_api/s_node.h b/src/script/cpp_api/s_node.h index 29e5a6812..e27cd2679 100644 --- a/src/script/cpp_api/s_node.h +++ b/src/script/cpp_api/s_node.h @@ -29,7 +29,7 @@ public: void node_on_destruct(v3s16 p, MapNode node); bool node_on_flood(v3s16 p, MapNode node, MapNode newnode); void node_after_destruct(v3s16 p, MapNode node); - bool node_on_timer(v3s16 p, MapNode node, f32 dtime); + bool node_on_timer(v3s16 p, MapNode node, f32 elapsed, f32 timeout); void node_on_receive_fields(v3s16 p, const std::string &formname, const StringMap &fields, @@ -40,6 +40,7 @@ public: void node_on_activate(v3pos_t p, MapNode node); void node_on_deactivate(v3pos_t p, MapNode node); void node_drop(v3pos_t p, int fast); +// == public: static struct EnumString es_DrawType[]; diff --git a/src/script/lua_api/CMakeLists.txt b/src/script/lua_api/CMakeLists.txt index ffa10b4d8..c97abfc62 100644 --- a/src/script/lua_api/CMakeLists.txt +++ b/src/script/lua_api/CMakeLists.txt @@ -5,6 +5,7 @@ set(common_SCRIPT_LUA_API_SRCS ${common_SCRIPT_LUA_API_HDRS} ${CMAKE_CURRENT_SOURCE_DIR}/l_areastore.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/l_async.cpp ${CMAKE_CURRENT_SOURCE_DIR}/l_auth.cpp ${CMAKE_CURRENT_SOURCE_DIR}/l_base.cpp ${CMAKE_CURRENT_SOURCE_DIR}/l_craft.cpp diff --git a/src/script/lua_api/l_async.cpp b/src/script/lua_api/l_async.cpp new file mode 100644 index 000000000..00c5e0eb4 --- /dev/null +++ b/src/script/lua_api/l_async.cpp @@ -0,0 +1,64 @@ +// Luanti +// SPDX-License-Identifier: LGPL-2.1-or-later + +#include "lua_api/l_internal.h" +#include "lua_api/l_async.h" +#include "cpp_api/s_async.h" + +static std::string get_serialized_function(lua_State *L, int index) +{ + luaL_checktype(L, index, LUA_TFUNCTION); + call_string_dump(L, index); + size_t func_length; + const char *serialized_func_raw = lua_tolstring(L, -1, &func_length); + std::string serialized_func(serialized_func_raw, func_length); + lua_pop(L, 1); + return serialized_func; +} + +// do_async_callback(func, params, mod_origin) +int ModApiAsync::l_do_async_callback(lua_State *L) +{ + NO_MAP_LOCK_REQUIRED; + ScriptApiAsync *script = getScriptApi(L); + + luaL_checktype(L, 2, LUA_TTABLE); + luaL_checktype(L, 3, LUA_TSTRING); + + auto serialized_func = get_serialized_function(L, 1); + PackedValue *param = script_pack(L, 2); + std::string mod_origin = readParam(L, 3); + + u32 jobId = script->queueAsync( + std::move(serialized_func), + param, mod_origin); + + lua_pushinteger(L, jobId); + return 1; +} + +// cancel_async_callback(id) +int ModApiAsync::l_cancel_async_callback(lua_State *L) +{ + NO_MAP_LOCK_REQUIRED; + ScriptApiAsync *script = getScriptApi(L); + u32 id = luaL_checkinteger(L, 1); + lua_pushboolean(L, script->cancelAsync(id)); + return 1; +} + +// get_async_capacity() +int ModApiAsync::l_get_async_threading_capacity(lua_State *L) +{ + NO_MAP_LOCK_REQUIRED; + ScriptApiAsync *script = getScriptApi(L); + lua_pushinteger(L, script->getThreadingCapacity()); + return 1; +} + +void ModApiAsync::Initialize(lua_State *L, int top) +{ + API_FCT(do_async_callback); + API_FCT(cancel_async_callback); + API_FCT(get_async_threading_capacity); +} diff --git a/src/script/lua_api/l_async.h b/src/script/lua_api/l_async.h new file mode 100644 index 000000000..1632a9e2f --- /dev/null +++ b/src/script/lua_api/l_async.h @@ -0,0 +1,19 @@ +// Luanti +// SPDX-License-Identifier: LGPL-2.1-or-later + +#pragma once + +#include "lua_api/l_base.h" + +class ModApiAsync : public ModApiBase +{ +public: + static void Initialize(lua_State *L, int top); +private: + // do_async_callback(func, params, mod_origin) + static int l_do_async_callback(lua_State *L); + // cancel_async_callback(id) + static int l_cancel_async_callback(lua_State *L); + // get_async_threading_capacity() + static int l_get_async_threading_capacity(lua_State *L); +}; diff --git a/src/script/lua_api/l_auth.cpp b/src/script/lua_api/l_auth.cpp index d65cd013b..d669a9f5e 100644 --- a/src/script/lua_api/l_auth.cpp +++ b/src/script/lua_api/l_auth.cpp @@ -15,14 +15,8 @@ // common start: ensure auth db AuthDatabase *ModApiAuth::getAuthDb(lua_State *L) { - ServerEnvironment *server_environment = - dynamic_cast(getEnv(L)); - if (!server_environment) { - luaL_error(L, "Attempt to access an auth function but the auth" - " system is yet not initialized. This causes bugs."); - return nullptr; - } - return server_environment->getAuthDatabase(); + GET_ENV_PTR_NO_MAP_LOCK; + return env->getAuthDatabase(); } void ModApiAuth::pushAuthEntry(lua_State *L, const AuthEntry &authEntry) diff --git a/src/script/lua_api/l_env.cpp b/src/script/lua_api/l_env.cpp index f607ecf6a..53b42ef5a 100644 --- a/src/script/lua_api/l_env.cpp +++ b/src/script/lua_api/l_env.cpp @@ -1228,7 +1228,6 @@ int ModApiEnv::l_raycast(lua_State *L) int ModApiEnv::l_load_area(lua_State *L) { GET_ENV_PTR; - MAP_LOCK_REQUIRED; Map *map = &(env->getMap()); v3s16 bp1 = getNodeBlockPos(check_v3s16(L, 1)); @@ -1444,7 +1443,8 @@ int ModApiEnv::l_forceload_free_block(lua_State *L) // get_translated_string(lang_code, string) int ModApiEnv::l_get_translated_string(lua_State * L) { - GET_ENV_PTR; + NO_MAP_LOCK_REQUIRED; + std::string lang_code = luaL_checkstring(L, 1); std::string string = luaL_checkstring(L, 2); diff --git a/src/script/lua_api/l_http.cpp b/src/script/lua_api/l_http.cpp index eadc6f95d..c570ae993 100644 --- a/src/script/lua_api/l_http.cpp +++ b/src/script/lua_api/l_http.cpp @@ -39,8 +39,9 @@ void ModApiHttp::read_http_fetch_request(lua_State *L, HTTPFetchRequest &req) getstringfield(L, 1, "url", req.url); getstringfield(L, 1, "user_agent", req.useragent); req.multipart = getboolfield_default(L, 1, "multipart", false); - if (getintfield(L, 1, "timeout", req.timeout)) - req.timeout *= 1000; + float timeout_sec = 0; + if (getfloatfield(L, 1, "timeout", timeout_sec)) + req.timeout = timeout_sec * 1000; lua_getfield(L, 1, "method"); if (lua_isstring(L, -1)) diff --git a/src/script/lua_api/l_internal.h b/src/script/lua_api/l_internal.h index e4f539ef8..bf9d9acb0 100644 --- a/src/script/lua_api/l_internal.h +++ b/src/script/lua_api/l_internal.h @@ -45,8 +45,11 @@ #define GET_ENV_PTR_NO_MAP_LOCK \ DEBUG_ASSERT_NO_CLIENTAPI; \ ServerEnvironment *env = (ServerEnvironment *)getEnv(L); \ - if (env == NULL) \ - return 0 + if (!env) { \ + log_deprecated(L, "Calling this function during script init is disallowed.", 1); \ + return 0; \ + } \ + ((void)0) // Retrieve ServerEnvironment pointer as `env` #define GET_ENV_PTR \ diff --git a/src/script/lua_api/l_inventory.h b/src/script/lua_api/l_inventory.h index b320536b3..12be19bb7 100644 --- a/src/script/lua_api/l_inventory.h +++ b/src/script/lua_api/l_inventory.h @@ -9,7 +9,6 @@ #include "inventory.h" #include "inventorymanager.h" -class RemotePlayer; /* InvRef diff --git a/src/script/lua_api/l_localplayer.cpp b/src/script/lua_api/l_localplayer.cpp index 0e0ceda2f..1ae53d711 100644 --- a/src/script/lua_api/l_localplayer.cpp +++ b/src/script/lua_api/l_localplayer.cpp @@ -425,15 +425,14 @@ int LuaLocalPlayer::l_hud_get_all(lua_State *L) return 0; lua_newtable(L); - player->hudApply([&](const std::vector& hud) { - for (std::size_t id = 0; id < hud.size(); ++id) { - HudElement *elem = hud[id]; - if (elem != nullptr) { - push_hud_element(L, elem); - lua_rawseti(L, -2, id); - } + u32 id = 0; + for (HudElement *elem : player->getHudElements()) { + if (elem != nullptr) { + push_hud_element(L, elem); + lua_rawseti(L, -2, id); } - }); + ++id; + } return 1; } diff --git a/src/script/lua_api/l_mainmenu.h b/src/script/lua_api/l_mainmenu.h index 79221f7f6..3c8a8ab48 100644 --- a/src/script/lua_api/l_mainmenu.h +++ b/src/script/lua_api/l_mainmenu.h @@ -6,7 +6,6 @@ #include "lua_api/l_base.h" -class AsyncEngine; /** Implementation of lua api support for mainmenu */ class ModApiMainMenu: public ModApiBase diff --git a/src/script/lua_api/l_mapgen.cpp b/src/script/lua_api/l_mapgen.cpp index 3eeb70fd6..df33cf2b2 100644 --- a/src/script/lua_api/l_mapgen.cpp +++ b/src/script/lua_api/l_mapgen.cpp @@ -1637,7 +1637,7 @@ int ModApiMapgen::l_generate_ores(lua_State *L) } -// generate_decorations(vm, p1, p2) +// generate_decorations(vm, p1, p2, use_mapgen_biomes) int ModApiMapgen::l_generate_decorations(lua_State *L) { NO_MAP_LOCK_REQUIRED; @@ -1647,27 +1647,58 @@ int ModApiMapgen::l_generate_decorations(lua_State *L) return 0; DecorationManager *decomgr; - if (auto mg = getMapgen(L)) + Mapgen mg, *mgp = nullptr; + bool use_mapgen_biomes = readParam(L, 4, false); + MMVManip *oldvm = nullptr, *vm = checkObject(L, 1)->vm; + if (auto mg = getMapgen(L)) { decomgr = mg->m_emerge->decomgr; - else + if (use_mapgen_biomes) { + mgp = mg; + oldvm = mgp->vm; + if (!oldvm) { + goto no_vm; + } + } + } else { + if (use_mapgen_biomes) { + no_vm: + throw LuaError("use_mapgen_biomes specified outside a " + "map generation context"); + } decomgr = emerge->decomgr; + } + if (!mgp) { + mgp = &mg; + // Intentionally truncates to s32, see Mapgen::Mapgen() + mg.seed = (s32)emerge->mgparams->seed; + mg.ndef = emerge->ndef; + } - Mapgen mg; - mg.env = emerge->env; - // Intentionally truncates to s32, see Mapgen::Mapgen() - mg.seed = (s32)emerge->mgparams->seed; - mg.vm = checkObject(L, 1)->vm; - mg.ndef = emerge->ndef; - - v3s16 pmin = lua_istable(L, 2) ? check_v3s16(L, 2) : - mg.vm->m_area.MinEdge + v3s16(1,1,1) * MAP_BLOCKSIZE; - v3s16 pmax = lua_istable(L, 3) ? check_v3s16(L, 3) : - mg.vm->m_area.MaxEdge - v3s16(1,1,1) * MAP_BLOCKSIZE; + const v3s16 default_pmin = vm->m_area.MinEdge + MAP_BLOCKSIZE, + default_pmax = vm->m_area.MaxEdge - MAP_BLOCKSIZE; + v3s16 pmin = lua_istable(L, 2) ? check_v3s16(L, 2) : default_pmin; + v3s16 pmax = lua_istable(L, 3) ? check_v3s16(L, 3) : default_pmax; sortBoxVerticies(pmin, pmax); + if (use_mapgen_biomes) { + assert(oldvm); + const v3s16 required_pmin = oldvm->m_area.MinEdge + MAP_BLOCKSIZE, + required_pmax = oldvm->m_area.MaxEdge - MAP_BLOCKSIZE; + if (pmin != required_pmin || pmax != required_pmax) + throw LuaError("use_mapgen_biomes requires extents matching chunk area"); + } u32 blockseed = Mapgen::getBlockSeed(pmin, mg.seed); - decomgr->placeAllDecos(&mg, blockseed, pmin, pmax); + mgp->env = emerge->env; + + mgp->vm = vm; + try { + decomgr->placeAllDecos(mgp, blockseed, pmin, pmax); + } catch (...) { + mgp->vm = oldvm; + throw; + } + mgp->vm = oldvm; return 0; } @@ -1676,14 +1707,13 @@ int ModApiMapgen::l_generate_decorations(lua_State *L) // create_schematic(p1, p2, probability_list, filename, y_slice_prob_list) int ModApiMapgen::l_create_schematic(lua_State *L) { - MAP_LOCK_REQUIRED; + GET_ENV_PTR; const NodeDefManager *ndef = getServer(L)->getNodeDefManager(); const char *filename = luaL_checkstring(L, 4); CHECK_SECURE_PATH(L, filename, true); - Map *map = &(getEnv(L)->getMap()); Schematic schem; v3s16 p1 = check_v3s16(L, 1); @@ -1721,7 +1751,7 @@ int ModApiMapgen::l_create_schematic(lua_State *L) } } - if (!schem.getSchematicFromMap(map, p1, p2)) { + if (!schem.getSchematicFromMap(&env->getMap(), p1, p2)) { errorstream << "create_schematic: failed to get schematic " "from map" << std::endl; return 0; @@ -1742,8 +1772,6 @@ int ModApiMapgen::l_create_schematic(lua_State *L) // replacements, force_placement, flagstring) int ModApiMapgen::l_place_schematic(lua_State *L) { - MAP_LOCK_REQUIRED; - GET_ENV_PTR; ServerMap *map = &(env->getServerMap()); diff --git a/src/script/lua_api/l_mapgen.h b/src/script/lua_api/l_mapgen.h index 67c48a0b0..45d1aed33 100644 --- a/src/script/lua_api/l_mapgen.h +++ b/src/script/lua_api/l_mapgen.h @@ -10,9 +10,9 @@ typedef u16 biome_t; // copy from mg_biome.h to avoid an unnecessary include class MMVManip; -class BiomeManager; class BiomeGen; class Mapgen; +class EmergeManager; class ModApiMapgen : public ModApiBase { diff --git a/src/script/lua_api/l_object.cpp b/src/script/lua_api/l_object.cpp index ab4f631a3..09940d376 100644 --- a/src/script/lua_api/l_object.cpp +++ b/src/script/lua_api/l_object.cpp @@ -776,7 +776,7 @@ int ObjectRef::l_get_bone_overrides(lua_State *L) // set_attach(self, parent, bone, position, rotation, force_visible) int ObjectRef::l_set_attach(lua_State *L) { - GET_ENV_PTR; + GET_ENV_PTR_NO_MAP_LOCK; ObjectRef *ref = checkObject(L, 1); ObjectRef *parent_ref = checkObject(L, 2); ServerActiveObject *sao = getobject(ref); @@ -803,7 +803,7 @@ int ObjectRef::l_set_attach(lua_State *L) // get_attach(self) int ObjectRef::l_get_attach(lua_State *L) { - GET_ENV_PTR; + GET_ENV_PTR_NO_MAP_LOCK; ObjectRef *ref = checkObject(L, 1); ServerActiveObject *sao = getobject(ref); if (sao == nullptr) @@ -832,7 +832,7 @@ int ObjectRef::l_get_attach(lua_State *L) // get_children(self) int ObjectRef::l_get_children(lua_State *L) { - GET_ENV_PTR; + GET_ENV_PTR_NO_MAP_LOCK; ObjectRef *ref = checkObject(L, 1); ServerActiveObject *sao = getobject(ref); if (sao == nullptr) @@ -907,7 +907,7 @@ int ObjectRef::l_get_properties(lua_State *L) // set_observers(self, observers) int ObjectRef::l_set_observers(lua_State *L) { - GET_ENV_PTR; + GET_ENV_PTR_NO_MAP_LOCK; ObjectRef *ref = checkObject(L, 1); ServerActiveObject *sao = getobject(ref); if (sao == nullptr) @@ -1912,15 +1912,14 @@ int ObjectRef::l_hud_get_all(lua_State *L) return 0; lua_newtable(L); - player->hudApply([&](const std::vector& hud) { - for (std::size_t id = 0; id < hud.size(); ++id) { - HudElement *elem = hud[id]; - if (elem != nullptr) { - push_hud_element(L, elem); - lua_rawseti(L, -2, id); - } + u32 id = 0; + for (HudElement *elem : player->getHudElements()) { + if (elem != nullptr) { + push_hud_element(L, elem); + lua_rawseti(L, -2, id); } - }); + ++id; + } return 1; } diff --git a/src/script/lua_api/l_particles.cpp b/src/script/lua_api/l_particles.cpp index efcf3725e..ac785215d 100644 --- a/src/script/lua_api/l_particles.cpp +++ b/src/script/lua_api/l_particles.cpp @@ -157,7 +157,7 @@ int ModApiParticles::l_add_particlespawner(lua_State *L) // Get parameters ParticleSpawnerParameters p; ServerActiveObject *attached = NULL; - std::string playername; + std::string playername, not_playername; using namespace ParticleParamTypes; if (lua_gettop(L) > 1) //deprecated @@ -257,7 +257,6 @@ int ModApiParticles::l_add_particlespawner(lua_State *L) lua_pop(L, 1); p.vertical = getboolfield_default(L, 1, "vertical", p.vertical); - playername = getstringfield_default(L, 1, "playername", ""); p.glow = getintfield_default(L, 1, "glow", p.glow); lua_getfield(L, 1, "texpool"); @@ -279,12 +278,16 @@ int ModApiParticles::l_add_particlespawner(lua_State *L) lua_pop(L, 1); p.node_tile = getintfield_default(L, 1, "node_tile", p.node_tile); + + // meta parameters + playername = getstringfield_default(L, 1, "playername", ""); + not_playername = getstringfield_default(L, 1, "exclude_player", ""); } if (p.time < 0) throw LuaError("particle spawner 'time' must be >= 0"); - u32 id = getServer(L)->addParticleSpawner(p, attached, playername); + u32 id = getServer(L)->addParticleSpawner(p, attached, playername, not_playername); lua_pushnumber(L, id); return 1; diff --git a/src/script/lua_api/l_server.cpp b/src/script/lua_api/l_server.cpp index 698b2dba6..86e15fd99 100644 --- a/src/script/lua_api/l_server.cpp +++ b/src/script/lua_api/l_server.cpp @@ -47,8 +47,7 @@ int ModApiServer::l_get_server_uptime(lua_State *L) // get_server_max_lag() int ModApiServer::l_get_server_max_lag(lua_State *L) { - NO_MAP_LOCK_REQUIRED; - GET_ENV_PTR; + GET_ENV_PTR_NO_MAP_LOCK; lua_pushnumber(L, env->getMaxLagEstimate()); return 1; } @@ -124,35 +123,34 @@ int ModApiServer::l_get_player_privs(lua_State *L) // get_player_ip() int ModApiServer::l_get_player_ip(lua_State *L) { - NO_MAP_LOCK_REQUIRED; - - Server *server = getServer(L); + GET_ENV_PTR_NO_MAP_LOCK; const char *name = luaL_checkstring(L, 1); - RemotePlayer *player = server->getEnv().getPlayer(name); + RemotePlayer *player = env->getPlayer(name); if (!player) { lua_pushnil(L); // no such player return 1; } - lua_pushstring(L, server->getPeerAddress(player->getPeerId()).serializeString().c_str()); + lua_pushstring(L, env->getGameDef()->getPeerAddress( + player->getPeerId()).serializeString().c_str() + ); return 1; } // get_player_information(name) int ModApiServer::l_get_player_information(lua_State *L) { - NO_MAP_LOCK_REQUIRED; - - Server *server = getServer(L); + GET_ENV_PTR_NO_MAP_LOCK; const char *name = luaL_checkstring(L, 1); - RemotePlayer *player = server->getEnv().getPlayer(name); + RemotePlayer *player = env->getPlayer(name); if (!player) { lua_pushnil(L); // no such player return 1; } + Server *server = env->getGameDef(); ClientInfo info; if (!server->getClientInfo(player->getPeerId(), info)) { warningstream << FUNCTION_NAME << ": no client info?!" << std::endl; @@ -271,15 +269,14 @@ int ModApiServer::l_get_player_information(lua_State *L) // get_player_window_information(name) int ModApiServer::l_get_player_window_information(lua_State *L) { - NO_MAP_LOCK_REQUIRED; - - Server *server = getServer(L); + GET_ENV_PTR_NO_MAP_LOCK; const char *name = luaL_checkstring(L, 1); - RemotePlayer *player = server->getEnv().getPlayer(name); + RemotePlayer *player = env->getPlayer(name); if (!player) return 0; + Server *server = env->getGameDef(); auto dynamic = server->getClientDynamicInfo(player->getPeerId()); if (!dynamic || dynamic->render_target_size == v2u32()) @@ -331,19 +328,16 @@ int ModApiServer::l_get_ban_description(lua_State *L) // ban_player() int ModApiServer::l_ban_player(lua_State *L) { - NO_MAP_LOCK_REQUIRED; + GET_ENV_PTR_NO_MAP_LOCK; - if (!getEnv(L)) - throw LuaError("Can't ban player before server has started up"); - - Server *server = getServer(L); const char *name = luaL_checkstring(L, 1); - RemotePlayer *player = server->getEnv().getPlayer(name); + RemotePlayer *player = env->getPlayer(name); if (!player) { lua_pushboolean(L, false); // no such player return 1; } + Server *server = env->getGameDef(); std::string ip_str = server->getPeerAddress(player->getPeerId()).serializeString(); server->setIpBanned(ip_str, name); lua_pushboolean(L, true); @@ -353,10 +347,7 @@ int ModApiServer::l_ban_player(lua_State *L) // disconnect_player(name[, reason[, reconnect]]) -> success int ModApiServer::l_disconnect_player(lua_State *L) { - NO_MAP_LOCK_REQUIRED; - - if (!getEnv(L)) - throw LuaError("Can't kick player before server has started up"); + GET_ENV_PTR_NO_MAP_LOCK; const char *name = luaL_checkstring(L, 1); std::string message; @@ -365,9 +356,7 @@ int ModApiServer::l_disconnect_player(lua_State *L) else message.append("Disconnected."); - Server *server = getServer(L); - - RemotePlayer *player = server->getEnv().getPlayer(name); + RemotePlayer *player = env->getPlayer(name); if (!player) { lua_pushboolean(L, false); // No such player return 1; @@ -375,6 +364,7 @@ int ModApiServer::l_disconnect_player(lua_State *L) bool reconnect = readParam(L, 3, false); + Server *server = env->getGameDef(); server->DenyAccess(player->getPeerId(), SERVER_ACCESSDENIED_CUSTOM_STRING, message, reconnect); lua_pushboolean(L, true); return 1; @@ -382,15 +372,12 @@ int ModApiServer::l_disconnect_player(lua_State *L) int ModApiServer::l_remove_player(lua_State *L) { - NO_MAP_LOCK_REQUIRED; + GET_ENV_PTR_NO_MAP_LOCK; std::string name = luaL_checkstring(L, 1); - ServerEnvironment *s_env = dynamic_cast(getEnv(L)); - if (!s_env) - throw LuaError("Can't remove player before server has started up"); - RemotePlayer *player = s_env->getPlayer(name.c_str()); + RemotePlayer *player = env->getPlayer(name.c_str()); if (!player) - lua_pushinteger(L, s_env->removePlayerFromDatabase(name) ? 0 : 1); + lua_pushinteger(L, env->removePlayerFromDatabase(name) ? 0 : 1); else lua_pushinteger(L, 2); @@ -564,9 +551,11 @@ int ModApiServer::l_dynamic_add_media(lua_State *L) args.data.reset(); getstringfield(L, 1, "to_player", args.to_player); getboolfield(L, 1, "ephemeral", args.ephemeral); + args.client_cache = getboolfield_default(L, 1, "client_cache", !args.ephemeral); } else { tmp = readParam(L, 1); args.filepath = tmp; + log_deprecated(L, "Deprecated call to core.dynamic_add_media() with string argument", 1, true); } if (at_startup) { if (!lua_isnoneornil(L, 2)) @@ -625,33 +614,6 @@ int ModApiServer::l_notify_authentication_modified(lua_State *L) return 0; } -// do_async_callback(func, params, mod_origin) -int ModApiServer::l_do_async_callback(lua_State *L) -{ - NO_MAP_LOCK_REQUIRED; - ServerScripting *script = getScriptApi(L); - - luaL_checktype(L, 1, LUA_TFUNCTION); - luaL_checktype(L, 2, LUA_TTABLE); - luaL_checktype(L, 3, LUA_TSTRING); - - call_string_dump(L, 1); - size_t func_length; - const char *serialized_func_raw = lua_tolstring(L, -1, &func_length); - - PackedValue *param = script_pack(L, 2); - - std::string mod_origin = readParam(L, 3); - - u32 jobId = script->queueAsync( - std::string(serialized_func_raw, func_length), - param, mod_origin); - - lua_settop(L, 0); - lua_pushinteger(L, jobId); - return 1; -} - // register_async_dofile(path) int ModApiServer::l_register_async_dofile(lua_State *L) { @@ -747,7 +709,6 @@ void ModApiServer::Initialize(lua_State *L, int top) API_FCT(unban_player_or_ip); API_FCT(notify_authentication_modified); - API_FCT(do_async_callback); API_FCT(register_async_dofile); API_FCT(serialize_roundtrip); diff --git a/src/script/lua_api/l_server.h b/src/script/lua_api/l_server.h index 6de7de363..0d2253e57 100644 --- a/src/script/lua_api/l_server.h +++ b/src/script/lua_api/l_server.h @@ -100,9 +100,6 @@ private: // notify_authentication_modified(name) static int l_notify_authentication_modified(lua_State *L); - // do_async_callback(func, params, mod_origin) - static int l_do_async_callback(lua_State *L); - // register_async_dofile(path) static int l_register_async_dofile(lua_State *L); diff --git a/src/script/lua_api/l_util.cpp b/src/script/lua_api/l_util.cpp index 5ac290b2e..f91f4ca6f 100644 --- a/src/script/lua_api/l_util.cpp +++ b/src/script/lua_api/l_util.cpp @@ -695,6 +695,17 @@ int ModApiUtil::l_is_valid_player_name(lua_State *L) return 1; } +// strip_escapes(str) +int ModApiUtil::l_strip_escapes(lua_State *L) +{ + NO_MAP_LOCK_REQUIRED; + + auto s = readParam(L, 1); + auto r = unescape_enriched(s); + lua_pushlstring(L, r.c_str(), r.size()); + return 1; +} + void ModApiUtil::Initialize(lua_State *L, int top) { API_FCT(log); @@ -746,6 +757,7 @@ void ModApiUtil::Initialize(lua_State *L, int top) API_FCT(urlencode); API_FCT(is_valid_player_name); + API_FCT(strip_escapes); LuaSettings::create(L, g_settings, g_settings_path); lua_setfield(L, top, "settings"); @@ -780,6 +792,7 @@ void ModApiUtil::InitializeClient(lua_State *L, int top) API_FCT(set_last_run_mod); API_FCT(urlencode); + API_FCT(strip_escapes); LuaSettings::create(L, g_settings, g_settings_path); lua_setfield(L, top, "settings"); @@ -828,6 +841,7 @@ void ModApiUtil::InitializeAsync(lua_State *L, int top) API_FCT(set_last_run_mod); API_FCT(urlencode); + API_FCT(strip_escapes); LuaSettings::create(L, g_settings, g_settings_path); lua_setfield(L, top, "settings"); diff --git a/src/script/lua_api/l_util.h b/src/script/lua_api/l_util.h index 0df2c3ae4..7185f369a 100644 --- a/src/script/lua_api/l_util.h +++ b/src/script/lua_api/l_util.h @@ -6,7 +6,6 @@ #include "lua_api/l_base.h" -class AsyncEngine; class ModApiUtil : public ModApiBase { @@ -128,6 +127,9 @@ private: // is_valid_player_name(name) static int l_is_valid_player_name(lua_State *L); + // strip_escapes(str) + static int l_strip_escapes(lua_State *L); + public: static void Initialize(lua_State *L, int top); static void InitializeAsync(lua_State *L, int top); diff --git a/src/script/lua_api/l_vmanip.h b/src/script/lua_api/l_vmanip.h index 95bb82ce2..f353709e4 100644 --- a/src/script/lua_api/l_vmanip.h +++ b/src/script/lua_api/l_vmanip.h @@ -8,7 +8,6 @@ #include "lua_api/l_base.h" class Map; -class MapBlock; class MMVManip; /* diff --git a/src/script/scripting_server.cpp b/src/script/scripting_server.cpp index 70b327c3b..5e632d636 100644 --- a/src/script/scripting_server.cpp +++ b/src/script/scripting_server.cpp @@ -9,6 +9,7 @@ #include "filesys.h" #include "cpp_api/s_internal.h" #include "lua_api/l_areastore.h" +#include "lua_api/l_async.h" #include "lua_api/l_auth.h" #include "lua_api/l_base.h" #include "lua_api/l_craft.h" @@ -40,7 +41,7 @@ extern "C" { ServerScripting::ServerScripting(Server* server): ScriptApiBase(ScriptingType::Server), - asyncEngine(server) + ScriptApiAsync(server) { setGameDef(server); @@ -119,23 +120,6 @@ void ServerScripting::initAsync() asyncEngine.initialize(0); } -void ServerScripting::stepAsync() -{ - const auto _script_lock = std::unique_lock(m_luastackmutex, std::try_to_lock); - if (!_script_lock.owns_lock()) { - return; - } - - asyncEngine.step(getStack()); -} - -u32 ServerScripting::queueAsync(std::string &&serialized_func, - PackedValue *param, const std::string &mod_origin) -{ - return asyncEngine.queueAsyncJob(std::move(serialized_func), - param, mod_origin); -} - void ServerScripting::InitializeModApi(lua_State *L, int top) { @@ -163,6 +147,7 @@ void ServerScripting::InitializeModApi(lua_State *L, int top) ModChannelRef::Register(L); // Initialize mod api modules + ModApiAsync::Initialize(L, top); ModApiAuth::Initialize(L, top); ModApiCraft::Initialize(L, top); ModApiEnv::Initialize(L, top); diff --git a/src/script/scripting_server.h b/src/script/scripting_server.h index 6c0583553..8b661a476 100644 --- a/src/script/scripting_server.h +++ b/src/script/scripting_server.h @@ -22,6 +22,7 @@ struct PackedValue; class ServerScripting: virtual public ScriptApiBase, + public ScriptApiAsync, public ScriptApiDetached, public ScriptApiEntity, public ScriptApiEnv, @@ -41,14 +42,7 @@ public: void saveGlobals(); // Initialize async engine, call this AFTER loading all mods - void initAsync(); - - // Global step handler to collect async results - void stepAsync(); - - // Pass job to async threads - u32 queueAsync(std::string &&serialized_func, - PackedValue *param, const std::string &mod_origin); + void initAsync() override; protected: // from ScriptApiSecurity: @@ -63,6 +57,4 @@ private: void InitializeModApi(lua_State *L, int top); static void InitializeAsync(lua_State *L, int top); - - AsyncEngine asyncEngine; }; diff --git a/src/server.cpp b/src/server.cpp index ec24f6331..4c762ae98 100644 --- a/src/server.cpp +++ b/src/server.cpp @@ -3,12 +3,6 @@ // Copyright (C) 2010-2013 celeron55, Perttu Ahola #include "server.h" -#include -#include -#include -#include -#include -#include "irr_v3d.h" #include "irr_v2d.h" #include "network/connection.h" #include "network/networkpacket.h" @@ -68,6 +62,10 @@ #include "gettext.h" #include "util/tracy_wrapper.h" +#include +#include +#include +#include #include @@ -291,13 +289,7 @@ Server::Server( m_gamespec(gamespec), m_simple_singleplayer_mode(simple_singleplayer_mode), m_dedicated(dedicated), - m_async_fatal_error(""), - /* fmtodo merge m_con(std::make_shared(PROTOCOL_ID, - simple_singleplayer_mode ? MAX_PACKET_SIZE_SINGLEPLAYER : MAX_PACKET_SIZE, - CONNECTION_TIMEOUT, - m_bind_addr.isIPv6(), - this)),*/ - m_con(con::createMTP(CONNECTION_TIMEOUT, m_bind_addr.isIPv6(), this)), + m_con(con::createMTP(CONNECTION_TIMEOUT, m_bind_addr.isIPv6(), this, simple_singleplayer_mode)), m_itemdef(createItemDefManager()), m_nodedef(createNodeDefManager()), m_craftdef(createCraftDefManager()), @@ -1015,6 +1007,7 @@ void Server::AsyncRunStep(float dtime, bool initial_step) } +#if 1 || USE_CURL // send masterserver announce { float &counter = m_masterserver_timer; @@ -1035,6 +1028,14 @@ void Server::AsyncRunStep(float dtime, bool initial_step) } counter += dtime; } +#endif + + // Send queued particles + { + EnvAutoLock envlock(this); + SendSpawnParticles(); + } + /* Check added and deleted active objects */ @@ -1968,88 +1969,126 @@ void Server::SendShowFormspecMessage(session_t peer_id, const std::string &forms Send(&pkt); } -// Spawns a particle on peer with peer_id -void Server::SendSpawnParticle(session_t peer_id, u16 protocol_version, - const ParticleParameters &p) +void Server::SendSpawnParticles(RemotePlayer *player, + const std::vector &particles) { static thread_local const float radius = - g_settings->getS16("max_block_send_distance") * MAP_BLOCKSIZE * BS; + g_settings->getS16("max_block_send_distance") * MAP_BLOCKSIZE * BS; + const float radius_sq = radius * radius; - if (peer_id == PEER_ID_INEXISTENT) { - std::vector clients = m_clients.getClientIDs(); - const v3f pos = p.pos * BS; - const float radius_sq = radius * radius; - - for (const session_t client_id : clients) { - RemotePlayer *player = m_env->getPlayer(client_id); - if (!player) - continue; - - PlayerSAO *sao = player->getPlayerSAO(); - if (!sao) - continue; - - // Do not send to distant clients - if (sao->getBasePosition().getDistanceFromSQ(pos) > radius_sq) - continue; - - SendSpawnParticle(client_id, player->protocol_version, p); - } + PlayerSAO *sao = player->getPlayerSAO(); + if (!sao) return; - } - assert(protocol_version != 0); - NetworkPacket pkt(TOCLIENT_SPAWN_PARTICLE, 0, peer_id); + std::ostringstream particle_batch_data(std::ios_base::binary); + for (const auto &particle : particles) { + if (sao->getBasePosition().getDistanceFromSQ(particle.pos * BS) > radius_sq) + continue; // out of range - { - // NetworkPacket and iostreams are incompatible... - std::ostringstream oss(std::ios_base::binary); - p.serialize(oss, protocol_version); - pkt.putRawString(oss.str()); + std::ostringstream particle_data(std::ios_base::binary); + particle.serialize(particle_data, player->protocol_version); + std::string particle_data_str = particle_data.str(); + SANITY_CHECK(particle_data_str.size() < U32_MAX); + if (player->protocol_version < 50) { + // Client only supports TOCLIENT_SPAWN_PARTICLE, + // so turn the written particle into a packet immediately + NetworkPacket pkt(TOCLIENT_SPAWN_PARTICLE, particle_data_str.size(), player->getPeerId()); + pkt.putRawString(particle_data_str); + Send(&pkt); + } else { + particle_batch_data << serializeString32(particle_data_str); + } } + if (particle_batch_data.tellp() == 0) + return; // no batch to send + + // Client supports TOCLIENT_SPAWN_PARTICLE_BATCH + assert(player->protocol_version >= 50); + std::ostringstream compressed(std::ios_base::binary); + compressZstd(particle_batch_data.str(), compressed); + + NetworkPacket pkt(TOCLIENT_SPAWN_PARTICLE_BATCH, + 4 + compressed.tellp(), player->getPeerId()); + pkt.putLongString(compressed.str()); Send(&pkt); } -// Adds a ParticleSpawner on peer with peer_id -void Server::SendAddParticleSpawner(session_t peer_id, u16 protocol_version, +void Server::SendSpawnParticles() +{ + for (const auto &[pname, particles] : m_particles_to_send) { + if (pname.empty()) + continue; // sent to all clients + + RemotePlayer *player = m_env->getPlayer(pname.c_str()); + if (!player) + continue; + + SendSpawnParticles(player, particles); + } + + for (auto *player : m_env->getPlayers()) { + SendSpawnParticles(player, m_particles_to_send[""]); + } + + m_particles_to_send.clear(); +} + +void Server::SendAddParticleSpawner(const std::string &to_player, + const std::string &exclude_player, const ParticleSpawnerParameters &p, u16 attached_id, u32 id) { static thread_local const float radius = g_settings->getS16("max_block_send_distance") * MAP_BLOCKSIZE * BS; + const float radius_sq = radius * radius; - if (peer_id == PEER_ID_INEXISTENT) { - std::vector clients = m_clients.getClientIDs(); - const v3f pos = ( - p.pos.start.min.val + - p.pos.start.max.val + - p.pos.end.min.val + - p.pos.end.max.val - ) / 4.0f * BS; - const float radius_sq = radius * radius; - /* Don't send short-lived spawners to distant players. - * This could be replaced with proper tracking at some point. - * A lifetime of 0 means that the spawner exists forever.*/ - const bool distance_check = !attached_id && p.time <= 1.0f && p.time != 0.0f; + // Average position where particles would spawn (approximate) + const v3f pos = ( + p.pos.start.min.val + + p.pos.start.max.val + + p.pos.end.min.val + + p.pos.end.max.val + ) / 4.0f * BS; + /* Don't send short-lived spawners to distant players. + * This could be replaced with proper tracking at some point. + * A lifetime of 0 means that the spawner exists forever. */ + const bool distance_check = !attached_id && p.time <= 1.0f && p.time != 0.0f; - for (const session_t client_id : clients) { - RemotePlayer *player = m_env->getPlayer(client_id); - if (!player) - continue; - - if (distance_check) { - PlayerSAO *sao = player->getPlayerSAO(); - if (!sao) - continue; - if (sao->getBasePosition().getDistanceFromSQ(pos) > radius_sq) - continue; - } - - SendAddParticleSpawner(client_id, player->protocol_version, - p, attached_id, id); + const auto &consider_player = [&] (RemotePlayer *player) { + if (distance_check) { + PlayerSAO *sao = player->getPlayerSAO(); + if (!sao) + return; + if (sao->getBasePosition().getDistanceFromSQ(pos) > radius_sq) + return; } + + SendAddParticleSpawner(player->getPeerId(), player->protocol_version, + p, attached_id, id); + }; + + // Send to one -or- all (except one) + if (!to_player.empty()) { + RemotePlayer *player = m_env->getPlayer(to_player); + if (player) + consider_player(player); return; } + std::vector clients = m_clients.getClientIDs(); + for (const session_t client_id : clients) { + RemotePlayer *player = m_env->getPlayer(client_id); + if (!player) + continue; + if (!exclude_player.empty() && exclude_player == player->getName()) + continue; + consider_player(player); + } +} + +void Server::SendAddParticleSpawner(session_t peer_id, u16 protocol_version, + const ParticleSpawnerParameters &p, u16 attached_id, u32 id) +{ + assert(peer_id != PEER_ID_INEXISTENT); assert(protocol_version != 0); NetworkPacket pkt(TOCLIENT_ADD_PARTICLESPAWNER, 100, peer_id); @@ -3185,9 +3224,8 @@ void Server::sendRequestedMedia(session_t peer_id, } const auto &m = it->second; - // no_announce <=> usually ephemeral dynamic media, which may - // have duplicate filenames. So we can't check it. - if (!m.no_announce) { + // Ephemeral dynamic media may have duplicate filenames. So we can't check it. + if (!m.ephemeral) { if (!client->markMediaSent(name)) { warningstream << "Server::sendRequestedMedia(): Client has " "requested \"" << name << "\" before, not sending it again." @@ -3256,31 +3294,41 @@ void Server::sendRequestedMedia(session_t peer_id, } #endif +namespace { + // unordered_map erase_if is only C++20 + template + void erase_if(C &container, F predicate) { + for (auto it = container.begin(); it != container.end(); ) { + if (predicate(*it)) + it = container.erase(it); + else + ++it; + } + } +} + void Server::stepPendingDynMediaCallbacks(float dtime) { EnvAutoLock lock(this); - for (auto it = m_pending_dyn_media.begin(); it != m_pending_dyn_media.end();) { - it->second.expiry_timer -= dtime; - bool del = it->second.waiting_players.empty() || it->second.expiry_timer < 0; + erase_if(m_pending_dyn_media, [&] (decltype(m_pending_dyn_media)::value_type &it) { + auto &[token, state] = it; - if (!del) { - it++; - continue; - } + state.expiry_timer -= dtime; + if (!state.waiting_players.empty() && state.expiry_timer >= 0) + return false; - const auto &name = it->second.filename; + const auto &name = state.filename; if (!name.empty()) { assert(m_media.count(name)); - // if no_announce isn't set we're definitely deleting the wrong file! - sanity_check(m_media[name].no_announce); + sanity_check(m_media[name].ephemeral); fs::DeleteSingleFileOrEmptyDirectory(m_media[name].path); m_media.erase(name); } - getScriptIface()->freeDynamicMediaCallback(it->first); - it = m_pending_dyn_media.erase(it); - } + getScriptIface()->freeDynamicMediaCallback(token); + return true; + }); } void Server::SendMinimapModes(session_t peer_id, @@ -4041,36 +4089,16 @@ void Server::spawnParticle(const std::string &playername, if (!m_env) return; - session_t peer_id = PEER_ID_INEXISTENT; - u16 proto_ver = 0; - if (!playername.empty()) { - RemotePlayer *player = m_env->getPlayer(playername.c_str()); - if (!player) - return; - peer_id = player->getPeerId(); - proto_ver = player->protocol_version; - } - - SendSpawnParticle(peer_id, proto_ver, p); + m_particles_to_send[playername].push_back(p); } u32 Server::addParticleSpawner(const ParticleSpawnerParameters &p, - ServerActiveObject *attached, const std::string &playername) + ServerActiveObject *attached, const std::string &to_player, + const std::string &exclude_player) { - // m_env will be NULL if the server is initializing if (!m_env) return -1; - session_t peer_id = PEER_ID_INEXISTENT; - u16 proto_ver = 0; - if (!playername.empty()) { - RemotePlayer *player = m_env->getPlayer(playername.c_str()); - if (!player) - return -1; - peer_id = player->getPeerId(); - proto_ver = player->protocol_version; - } - u16 attached_id = attached ? attached->getId() : 0; u32 id; @@ -4079,13 +4107,12 @@ u32 Server::addParticleSpawner(const ParticleSpawnerParameters &p, else id = m_env->addParticleSpawner(p.time, attached_id); - SendAddParticleSpawner(peer_id, proto_ver, p, attached_id, id); + SendAddParticleSpawner(to_player, exclude_player, p, attached_id, id); return id; } void Server::deleteParticleSpawner(const std::string &playername, u32 id) { - // m_env will be NULL if the server is initializing if (!m_env) throw ServerError("Can't delete particle spawners during initialisation!"); @@ -4097,7 +4124,11 @@ void Server::deleteParticleSpawner(const std::string &playername, u32 id) peer_id = player->getPeerId(); } + // FIXME: we don't track which client still knows about this spawner, so + // just deleting it entirely is problematic! + // We also don't check if the ID is even in use. FAIL! m_env->deleteParticleSpawner(id); + SendDeleteParticleSpawner(peer_id, id); } @@ -4122,11 +4153,17 @@ namespace { bool Server::dynamicAddMedia(const DynamicMediaArgs &a) { - std::string filename = a.filename; - std::string filepath; + if (!m_env && (!a.to_player.empty() || a.ephemeral)) { + errorstream << "Server: " + "adding ephemeral or player-specific media at startup is nonsense" + << std::endl; + return false; + } // Deal with file -or- data, as provided // (Note: caller must ensure validity, so sanity_check is okay) + std::string filename = a.filename; + std::string filepath; if (a.filepath) { sanity_check(!a.data); filepath = *a.filepath; @@ -4148,29 +4185,30 @@ bool Server::dynamicAddMedia(const DynamicMediaArgs &a) << filepath << std::endl; } - // Do some checks - auto it = m_media.find(filename); - if (it != m_media.end()) { - // Allow the same path to be "added" again in certain conditions - if (a.ephemeral || it->second.path != filepath) { + { + auto it = m_media.find(filename); + if (it == m_media.end()) { + // standard case + } else if (a.ephemeral || it->second.ephemeral || it->second.path != filepath) { + // If the path is the same we can safely allow adding the same file twice. + // Note that we already trust mods to not to modify files after the fact. + // Ephemeral files are excluded too, because currently each + // PendingDynamicMediaCallback "owns" the matching m_media[] entry + // so that would mess up. errorstream << "Server::dynamicAddMedia(): file \"" << filename - << "\" already exists in media cache" << std::endl; + << "\" already exists in media list" << std::endl; return false; } } - if (!m_env && (!a.to_player.empty() || a.ephemeral)) { - errorstream << "Server::dynamicAddMedia(): " - "adding ephemeral or player-specific media at startup is nonsense" - << std::endl; - return false; - } - // Load the file and add it to our media cache std::string filedata, raw_hash; bool ok = addMediaFile(filename, filepath, &filedata, &raw_hash); - if (!ok) + if (!ok) { + if (a.data) // file was temporary + fs::DeleteSingleFileOrEmptyDirectory(filepath); return false; + } assert(!filedata.empty()); const auto &media_it = m_media.find(filename); @@ -4193,6 +4231,7 @@ bool Server::dynamicAddMedia(const DynamicMediaArgs &a) } media_it->second.no_announce = true; + media_it->second.ephemeral = true; // stepPendingDynMediaCallbacks will clean the file up later } else if (a.data) { // data is in a temporary file but not ephemeral, so the cleanup point @@ -4210,10 +4249,10 @@ bool Server::dynamicAddMedia(const DynamicMediaArgs &a) if (m_env) { NetworkPacket pkt(TOCLIENT_MEDIA_PUSH, 0); pkt << raw_hash << filename; - // NOTE: the meaning of a.ephemeral was accidentally inverted between proto 39 and 40, + // NOTE: the meaning of this bit was accidentally inverted between proto 39 and 40, // when dynamic_add_media v2 was added. As of 5.12.0 the server sends it correctly again. // Compatibility code on the client-side was not added. - pkt << static_cast(!a.ephemeral); + pkt << static_cast(a.client_cache); NetworkPacket legacy_pkt = pkt; @@ -4869,15 +4908,28 @@ ModStorageDatabase *Server::openModStorageDatabase(const std::string &world_path std::string backend = world_mt.exists("mod_storage_backend") ? world_mt.get("mod_storage_backend") : "files"; - if (backend == "files") + if (backend == "files") { warningstream << "/!\\ You are using the old mod storage files backend. " - << "This backend is deprecated and may be removed in a future release /!\\" - << std::endl << "Switching to SQLite3 is advised, " - << "please read https://docs.luanti.org/for-server-hosts/database-backends." << std::endl; + "This backend is deprecated and may be removed in a future release /!\\" + "\nSwitching to SQLite3 is advised, " + "please read https://docs.luanti.org/for-server-hosts/database-backends." << std::endl; + } return openModStorageDatabase(backend, world_path, world_mt); } +std::vector Server::getModStorageDatabaseBackends() +{ + std::vector ret; + ret.emplace_back("sqlite3"); +#if USE_POSTGRESQL + ret.emplace_back("postgresql"); +#endif + ret.emplace_back("files"); + ret.emplace_back("dummy"); + return ret; +} + ModStorageDatabase *Server::openModStorageDatabase(const std::string &backend, const std::string &world_path, const Settings &world_mt) { diff --git a/src/server.h b/src/server.h index eb5ce62cd..d89399dfb 100644 --- a/src/server.h +++ b/src/server.h @@ -130,6 +130,8 @@ struct MediaInfo std::string sha1_digest; // true = not announced in TOCLIENT_ANNOUNCE_MEDIA (at player join) bool no_announce; + // if true, this is an ephemeral entry. used by dynamic media. + bool ephemeral; // does what it says. used by some cases of dynamic media. bool delete_at_shutdown; @@ -138,6 +140,7 @@ struct MediaInfo path(path_), sha1_digest(sha1_digest_), no_announce(false), + ephemeral(false), delete_at_shutdown(false) { } @@ -287,7 +290,7 @@ public: This is accessed by the map, which is inside the environment, so it shouldn't be a problem. */ - void onMapEditEvent(const MapEditEvent &event); + void onMapEditEvent(const MapEditEvent &event) override; // Connection must be locked when called std::string getStatusString(); @@ -324,7 +327,8 @@ public: const ParticleParameters &p); u32 addParticleSpawner(const ParticleSpawnerParameters &p, - ServerActiveObject *attached, const std::string &playername); + ServerActiveObject *attached, const std::string &to_player, + const std::string &exclude_player); void deleteParticleSpawner(const std::string &playername, u32 id); @@ -335,6 +339,7 @@ public: u32 token; std::string to_player; bool ephemeral = false; + bool client_cache = true; }; bool dynamicAddMedia(const DynamicMediaArgs &args); @@ -350,27 +355,28 @@ public: std::list *log); // IGameDef interface + bool isClient() override { return false; } // Under envlock - virtual IItemDefManager* getItemDefManager(); - virtual const NodeDefManager* getNodeDefManager(); - virtual ICraftDefManager* getCraftDefManager(); - virtual u16 allocateUnknownNodeId(const std::string &name); - IRollbackManager *getRollbackManager() { return m_rollback; } - virtual EmergeManager *getEmergeManager() { return m_emerge.get(); } - virtual ModStorageDatabase *getModStorageDatabase() { return m_mod_storage_database; } + IItemDefManager* getItemDefManager() override; + const NodeDefManager* getNodeDefManager() override; + ICraftDefManager* getCraftDefManager() override; + u16 allocateUnknownNodeId(const std::string &name) override; + IRollbackManager *getRollbackManager() override { return m_rollback; } + EmergeManager *getEmergeManager() { return m_emerge.get(); } + ModStorageDatabase *getModStorageDatabase() override { return m_mod_storage_database; } IWritableItemDefManager* getWritableItemDefManager(); NodeDefManager* getWritableNodeDefManager(); IWritableCraftDefManager* getWritableCraftDefManager(); // Not under envlock - virtual const std::vector &getMods() const; - virtual const ModSpec* getModSpec(const std::string &modname) const; - virtual const SubgameSpec* getGameSpec() const { return &m_gamespec; } + const std::vector &getMods() const override; + const ModSpec* getModSpec(const std::string &modname) const override; + const SubgameSpec* getGameSpec() const override { return &m_gamespec; } static std::string getBuiltinLuaPath(); - virtual std::string getWorldPath() const { return m_path_world; } - virtual std::string getModDataPath() const { return m_path_mod_data; } - virtual ModIPCStore *getModIPCStore() { return &m_ipcstore; } + std::string getWorldPath() const override { return m_path_world; } + std::string getModDataPath() const override { return m_path_mod_data; } + ModIPCStore *getModIPCStore() override { return &m_ipcstore; } inline bool isSingleplayer() const { return m_simple_singleplayer_mode; } @@ -424,8 +430,12 @@ public: void setLighting(RemotePlayer *player, const Lighting &lighting); /* con::PeerHandler implementation. */ +/* + void peerAdded(con::IPeer *peer) override; + void deletingPeer(con::IPeer *peer, bool timeout) override; +*/ void peerAdded(session_t peer_id); - void deletingPeer(session_t peer_id, bool timeout); + void deletingPeer(session_t peer_id, bool timeout) override; void DenySudoAccess(session_t peer_id); void DenyAccess(session_t peer_id, AccessDeniedCode reason, @@ -456,10 +466,10 @@ public: void sendDetachedInventories(session_t peer_id, bool incremental); - bool joinModChannel(const std::string &channel); - bool leaveModChannel(const std::string &channel); - bool sendModChannelMessage(const std::string &channel, const std::string &message); - ModChannel *getModChannel(const std::string &channel); + bool joinModChannel(const std::string &channel) override; + bool leaveModChannel(const std::string &channel) override; + bool sendModChannelMessage(const std::string &channel, const std::string &message) override; + ModChannel *getModChannel(const std::string &channel) override; // Send block to specific player only bool SendBlock(session_t peer_id, const v3s16 &blockpos); @@ -471,6 +481,8 @@ public: // map key = binary sha1, map value = file path std::unordered_map getMediaList(); + static std::vector getModStorageDatabaseBackends(); + static ModStorageDatabase *openModStorageDatabase(const std::string &world_path); static ModStorageDatabase *openModStorageDatabase(const std::string &backend, @@ -629,15 +641,21 @@ private: const std::unordered_set &tosend); void stepPendingDynMediaCallbacks(float dtime); - // Adds a ParticleSpawner on peer with peer_id (PEER_ID_INEXISTENT == all) + /// @brief send particle spawner to a selection of clients + void SendAddParticleSpawner(const std::string &to_player, + const std::string &exclude_player, + const ParticleSpawnerParameters &p, u16 attached_id, u32 id); + /// @brief send particle spawner to one client (internal) void SendAddParticleSpawner(session_t peer_id, u16 protocol_version, const ParticleSpawnerParameters &p, u16 attached_id, u32 id); void SendDeleteParticleSpawner(session_t peer_id, u32 id); - // Spawns particle on peer with peer_id (PEER_ID_INEXISTENT == all) - void SendSpawnParticle(session_t peer_id, u16 protocol_version, - const ParticleParameters &p); + // Spawn particles for a specific client, batching them if clients support it. + void SendSpawnParticles(RemotePlayer *player, + const std::vector &particles); + // Spawn all particles for this step, batching them if clients support it. + void SendSpawnParticles(); void SendActiveObjectRemoveAdd(RemoteClient *client, PlayerSAO *playersao); //mt compat: @@ -900,6 +918,10 @@ public: MetricCounterPtr m_packet_recv_counter; MetricCounterPtr m_packet_recv_processed_counter; MetricCounterPtr m_map_edit_event_counter; + + // Particles to send this server step + // [playername] = list of params, empty playername for broadcast + std::unordered_map> m_particles_to_send; }; /* diff --git a/src/serverenvironment.cpp b/src/serverenvironment.cpp index e504c9c39..ba069ea1d 100644 --- a/src/serverenvironment.cpp +++ b/src/serverenvironment.cpp @@ -630,8 +630,8 @@ void ServerEnvironment::activateBlock(MapBlock *block) return; // Run node timers - block->step((float)dtime_s, [&](v3s16 p, MapNode n, f32 d) -> bool { - return m_script->node_on_timer(p, n, d); + block->step((float)dtime_s, [&](v3s16 p, MapNode n, NodeTimer t) -> bool { + return m_script->node_on_timer(p, n, t.elapsed, t.timeout); }); } @@ -1213,11 +1213,11 @@ void ServerEnvironment::step(float dtime, double uptime, unsigned int max_cycle_ if (!block->m_node_timers.m_uptime_last) // not very good place, but minimum modifications block->m_node_timers.m_uptime_last = uptime - dtime; - const auto dtime_s = uptime - block->m_node_timers.m_uptime_last; + const auto dtime = uptime - block->m_node_timers.m_uptime_last; block->m_node_timers.m_uptime_last = uptime; - block->step(dtime_s, [&](v3pos_t p, MapNode n, f32 d) -> bool { - return m_script->node_on_timer(p, n, d); + block->step(dtime, [&](v3s16 p, MapNode n, NodeTimer t) -> bool { + return m_script->node_on_timer(p, n, t.elapsed, t.timeout); }); if (porting::getTimeMs() > end_ms) { @@ -2186,6 +2186,21 @@ void ServerEnvironment::processActiveObjectRemove(ServerActiveObjectPtr obj) }); } +std::vector ServerEnvironment::getPlayerDatabaseBackends() +{ + std::vector ret; + ret.emplace_back("sqlite3"); + ret.emplace_back("dummy"); +#if USE_POSTGRESQL + ret.emplace_back("postgresql"); +#endif +#if USE_LEVELDB + ret.emplace_back("leveldb"); +#endif + ret.emplace_back("files"); + return ret; +} + PlayerDatabase *ServerEnvironment::openPlayerDatabase(const std::string &name, const std::string &savedir, const Settings &conf) { @@ -2307,6 +2322,21 @@ bool ServerEnvironment::migratePlayersDatabase(const GameParams &game_params, return true; } +std::vector ServerEnvironment::getAuthDatabaseBackends() +{ + std::vector ret; + ret.emplace_back("sqlite3"); + ret.emplace_back("dummy"); +#if USE_POSTGRESQL + ret.emplace_back("postgresql"); +#endif + ret.emplace_back("files"); +#if USE_LEVELDB + ret.emplace_back("leveldb"); +#endif + return ret; +} + AuthDatabase *ServerEnvironment::openAuthDatabase( const std::string &name, const std::string &savedir, const Settings &conf) { diff --git a/src/serverenvironment.h b/src/serverenvironment.h index 192f2e1e9..35b3b8e88 100644 --- a/src/serverenvironment.h +++ b/src/serverenvironment.h @@ -26,7 +26,6 @@ #include #include "util/metricsbackend.h" -class IGameDef; struct GameParams; class RemotePlayer; class PlayerDatabase; @@ -291,15 +290,16 @@ public: const std::vector getPlayers() const { return m_players; } u32 getPlayerCount() const { return m_players.size(); } + static std::vector getPlayerDatabaseBackends(); static bool migratePlayersDatabase(const GameParams &game_params, const Settings &cmd_args); AuthDatabase *getAuthDatabase() { return m_auth_database; } + static std::vector getAuthDatabaseBackends(); static bool migrateAuthDatabase(const GameParams &game_params, const Settings &cmd_args); // freeminer - public: KeyValueStorage &getKeyValueStorage(std::string name = "key_value_storage"); KeyValueStorage &getPlayerStorage() { return getKeyValueStorage("players"); }; @@ -308,14 +308,11 @@ public: std::shared_ptr spawnFallingActiveObject(const std::string &nodeName, v3opos_t pos, const MapNode &n, int fast = 2); -private: // is weather active in this environment? -public: bool m_use_weather = true; bool m_use_weather_biome = true; bool m_more_threads = true; -public: ABMHandler m_abmhandler; uint8_t analyzeBlock(MapBlockPtr block); private: @@ -326,8 +323,6 @@ public: size_t blockStep(MapBlockPtr block, float dtime = 0, uint8_t activate = 0); int analyzeBlocks(float dtime, unsigned int max_cycle_ms); u32 m_game_time_start = 0; - -public: size_t nodeUpdate(const v3pos_t &pos, u8 recursion_limit = 5, u8 fast = 2, bool destroy = false); private: @@ -339,7 +334,6 @@ private: bool destroy{false}; }; size_t nodeUpdateReal(const v3pos_t &pos, u8 recursion_limit = 5, u8 fast = 2, bool destroy = false); -private: void handleNodeDrops(const ContentFeatures &f, v3f pos, PlayerSAO* player=NULL); /* @@ -377,7 +371,7 @@ public: KeyValueCached blocks_with_abm; size_t abm_world_last = 0; size_t world_merge_last = 0; -//end of freeminer +// === end of freeminer diff --git a/src/servermap.cpp b/src/servermap.cpp index dff402aed..6514d8e4d 100644 --- a/src/servermap.cpp +++ b/src/servermap.cpp @@ -2,8 +2,8 @@ // SPDX-License-Identifier: LGPL-2.1-or-later // Copyright (C) 2010-2024 celeron55, Perttu Ahola -#include -#include +#include + #include "map.h" #include "mapblock.h" #include "mapsector.h" @@ -211,8 +211,8 @@ bool ServerMap::initBlockMake(v3s16 blockpos, BlockMakeData *data) { assert(data); s16 csize = getMapgenParams()->chunksize; - v3s16 bpmin = EmergeManager::getContainingChunk(blockpos, csize); - v3s16 bpmax = bpmin + v3s16(1, 1, 1) * (csize - 1); + const v3s16 bpmin = EmergeManager::getContainingChunk(blockpos, csize); + const v3s16 bpmax = bpmin + v3s16(1, 1, 1) * (csize - 1); if (!m_chunks_in_progress.insert(bpmin).second) return false; @@ -233,11 +233,10 @@ bool ServerMap::initBlockMake(v3s16 blockpos, BlockMakeData *data) } // == - v3s16 extra_borders(1, 1, 1); - v3s16 full_bpmin = bpmin - extra_borders; - v3s16 full_bpmax = bpmax + extra_borders; + const v3s16 full_bpmin = bpmin - EMERGE_EXTRA_BORDER; + const v3s16 full_bpmax = bpmax + EMERGE_EXTRA_BORDER; - // Do nothing if not inside mapgen limits (+-1 because of neighbors) + // Do nothing if not fully inside mapgen limits if (blockpos_over_mapgen_limit(full_bpmin) || blockpos_over_mapgen_limit(full_bpmax)) return false; @@ -270,6 +269,7 @@ bool ServerMap::initBlockMake(v3s16 blockpos, BlockMakeData *data) bool ug = m_emerge->isBlockUnderground(p); block->setIsUnderground(ug); } + block->refGrab(); } } @@ -287,13 +287,28 @@ bool ServerMap::initBlockMake(v3s16 blockpos, BlockMakeData *data) return true; } +void ServerMap::cancelBlockMake(BlockMakeData *data) +{ + assert(data->vmanip); // no vmanip = initBlockMake did not complete (caller mistake) + + const v3s16 full_bpmin = data->blockpos_min - EMERGE_EXTRA_BORDER; + const v3s16 full_bpmax = data->blockpos_max + EMERGE_EXTRA_BORDER; + for (s16 x = full_bpmin.X; x <= full_bpmax.X; x++) + for (s16 z = full_bpmin.Z; z <= full_bpmax.Z; z++) + for (s16 y = full_bpmin.Y; y <= full_bpmax.Y; y++) { + MapBlock *block = getBlockNoCreateNoEx(v3s16(x, y, z)); + if (block) + block->refDrop(); + } +} + void ServerMap::finishBlockMake(BlockMakeData *data, std::map *changed_blocks, u32 now) { assert(data); assert(changed_blocks); - v3s16 bpmin = data->blockpos_min; - v3s16 bpmax = data->blockpos_max; + const v3s16 bpmin = data->blockpos_min; + const v3s16 bpmax = data->blockpos_max; bool enable_mapgen_debug_info = m_emerge->enable_mapgen_debug_info; EMERGE_DBG_OUT("finishBlockMake(): " << bpmin << " - " << bpmax); @@ -338,23 +353,35 @@ void ServerMap::finishBlockMake(BlockMakeData *data, block->setLightingComplete(0); } - ServerEnvironment *senv = &((Server *)m_gamedef)->getEnv(); - // Note: this does not apply to the extra border area - for (s16 x = bpmin.X; x <= bpmax.X; x++) - for (s16 z = bpmin.Z; z <= bpmax.Z; z++) - for (s16 y = bpmin.Y; y <= bpmax.Y; y++) { - v3pos_t p(x, y, z); - auto block = getBlockNoCreateNoEx(p, false, true); - if (!block) + auto *senv = &((Server *)m_gamedef)->getEnv(); + + const v3s16 full_bpmin = bpmin - EMERGE_EXTRA_BORDER; + const v3s16 full_bpmax = bpmax + EMERGE_EXTRA_BORDER; + + v3s16 bp; + for (bp.X = full_bpmin.X; bp.X <= full_bpmax.X; bp.X++) + for (bp.Z = full_bpmin.Z; bp.Z <= full_bpmax.Z; bp.Z++) + for (bp.Y = full_bpmin.Y; bp.Y <= full_bpmax.Y; bp.Y++) { + auto block = getBlockNoCreateNoEx(bp, false, true); + if (!block) { + warningstream << "ServerMap::finishBlockMake: block " << bp + << " disappeared during generation" << std::endl; continue; + } - block->setGenerated(true); + block->refDrop(); - updateBlockHeat(senv, p * MAP_BLOCKSIZE, block); - updateBlockHumidity(senv, p * MAP_BLOCKSIZE, block); + /* Border blocks are grabbed during + generation but mustn't be marked generated. */ + if (bp >= bpmin && bp <= bpmax) { + block->setGenerated(true); + // Set timestamp to ensure correct application + // of LBMs and other stuff. + block->setTimestampNoChangedFlag(now); + } - // Set timestamp to ensure correct application of LBMs and other stuff - block->setTimestampNoChangedFlag(now); + updateBlockHeat(senv, bp * MAP_BLOCKSIZE, block); + updateBlockHumidity(senv, bp * MAP_BLOCKSIZE, block); } m_chunks_in_progress.erase(bpmin); @@ -657,38 +684,65 @@ void ServerMap::listAllLoadedBlocks(std::vector &dst) */ } +std::vector ServerMap::getDatabaseBackends() +{ + std::vector ret; + ret.emplace_back("sqlite3"); + ret.emplace_back("dummy"); +#if USE_LEVELDB + ret.emplace_back("leveldb"); +#endif +#if USE_REDIS + ret.emplace_back("redis"); +#endif +#if USE_POSTGRESQL + ret.emplace_back("postgresql"); +#endif + return ret; +} + MapDatabase *ServerMap::createDatabase( const std::string &name, const std::string &savedir, Settings &conf) { - MapDatabase *db = nullptr; - verbosestream << "Creating map database with backend \"" << name << "\"" << std::endl; + // Hopefully this way we don't forget to keep them in sync. + auto valid = getDatabaseBackends(); + if (!CONTAINS(valid, name)) { + auto err = std::string("Database backend \"") + name + "\" unknown or not supported"; + errorstream << err << std::endl; + throw BaseException(err); + } - #if USE_SQLITE3 - if (name == "sqlite3") + MapDatabase *db = nullptr; + infostream << "Creating map database with backend \"" << name << "\"" << std::endl; + + if (0) { } +#if USE_SQLITE3 + else if (name == "sqlite3") db = new MapDatabaseSQLite3(savedir); - #endif - if (name == "dummy") +#endif + else if (name == "dummy") db = new Database_Dummy(); - #if USE_LEVELDB - if (name == "leveldb") +#if USE_LEVELDB + else if (name == "leveldb") db = new Database_LevelDB(savedir); - #endif - #if USE_REDIS - if (name == "redis") +#endif +#if USE_REDIS + else if (name == "redis") db = new Database_Redis(conf); - #endif - #if USE_POSTGRESQL - if (name == "postgresql") { +#endif +#if USE_POSTGRESQL + else if (name == "postgresql") { std::string connect_string; conf.getNoEx("pgsql_connection", connect_string); db = new MapDatabasePostgreSQL(connect_string); } - #endif +#endif + + // Constructor can't return null, only throw + sanity_check(db); - if (!db) - throw BaseException(std::string("Database backend ") + name + " not supported."); // Do this to get feedback about errors asap db->verifyDatabase(); assert(db->initialized()); diff --git a/src/servermap.h b/src/servermap.h index 51abb6c29..81709c6a9 100644 --- a/src/servermap.h +++ b/src/servermap.h @@ -21,7 +21,6 @@ class Server; class Settings; class MapDatabase; -class IRollbackManager; class EmergeManager; class ServerEnvironment; struct BlockMakeData; @@ -150,6 +149,7 @@ public: /// @param now current game time void finishBlockMake(BlockMakeData *data, std::map *changed_blocks, u32 now); + void cancelBlockMake(BlockMakeData *data); /* Get a block from somewhere. @@ -186,6 +186,7 @@ public: /* Database functions */ + static std::vector getDatabaseBackends(); static MapDatabase *createDatabase(const std::string &name, const std::string &savedir, Settings &conf); // Call these before and after saving of blocks @@ -259,6 +260,9 @@ protected: private: friend class ModApiMapgen; // for m_transforming_liquid + // extra border area during mapgen (in blocks) + constexpr static v3s16 EMERGE_EXTRA_BORDER{1, 1, 1}; + // Emerge manager EmergeManager *m_emerge; diff --git a/src/settings_translation_file.cpp b/src/settings_translation_file.cpp index d090a7b41..0196ead83 100644 --- a/src/settings_translation_file.cpp +++ b/src/settings_translation_file.cpp @@ -167,7 +167,7 @@ fake_function() { gettext("Undersampling is similar to using a lower screen resolution, but it applies\nto the game world only, keeping the GUI intact.\nIt should give a significant performance boost at the cost of less detailed image.\nHigher values result in a less detailed image.\nNote: Undersampling is currently not supported if the \"3d_mode\" setting is set\nto a non-default value."); gettext("3D"); gettext("3D mode"); - gettext("3D support.\nCurrently supported:\n- none: no 3d output.\n- anaglyph: cyan/magenta color 3d.\n- interlaced: odd/even line based polarization screen support.\n- topbottom: split screen top/bottom.\n- sidebyside: split screen side by side.\n- crossview: Cross-eyed 3d"); + gettext("3D support.\nCurrently supported:\n- none: no 3D output\n- anaglyph: cyan/magenta color 3D\n- topbottom: split screen top/bottom\n- sidebyside: split screen side-by-side\n- crossview: cross-eyed 3D"); gettext("3D mode parallax strength"); gettext("Strength of 3D mode parallax."); gettext("Bobbing"); @@ -716,6 +716,10 @@ fake_function() { gettext("Mod Profiler"); gettext("Load the game profiler"); gettext("Load the game profiler to collect game profiling data.\nProvides a /profiler command to access the compiled profile.\nUseful for mod developers and server operators."); + gettext("Measure time samples"); + gettext("Disable if you only want to instrument with Tracy."); + gettext("Capture Tracy zones"); + gettext("Capture Tracy zones with the profiler's instrumentation.\nYou need to build with Tracy to use this, see doc/developing/profiling.md\nfor details."); gettext("Default report format"); gettext("The default format in which profiles are being saved,\nwhen calling `/profiler save [format]` without format."); gettext("Report path"); diff --git a/src/tool.h b/src/tool.h index 156a67f53..c98de90d7 100644 --- a/src/tool.h +++ b/src/tool.h @@ -16,7 +16,6 @@ #include #include -struct ItemDefinition; class IItemDefManager; #include "util/msgpack_serialize.h" diff --git a/src/unittest/mock_inventorymanager.h b/src/unittest/mock_inventorymanager.h index dec1b0503..e68dc0c02 100644 --- a/src/unittest/mock_inventorymanager.h +++ b/src/unittest/mock_inventorymanager.h @@ -8,7 +8,6 @@ #include "inventory.h" #include "server/serverinventorymgr.h" -class ServerEnvironment; class MockInventoryManager : public ServerInventoryManager { diff --git a/src/unittest/mock_server.h b/src/unittest/mock_server.h index 722e55f5d..a4fbbaf2f 100644 --- a/src/unittest/mock_server.h +++ b/src/unittest/mock_server.h @@ -32,5 +32,5 @@ public: void stop() = delete; private: - void SendChatMessage(session_t peer_id, const ChatMessage &message) {} + void SendChatMessage(session_t peer_id, const ChatMessage &message) override {} }; diff --git a/src/unittest/test_irr_matrix4.cpp b/src/unittest/test_irr_matrix4.cpp index 823166636..b89ebdc56 100644 --- a/src/unittest/test_irr_matrix4.cpp +++ b/src/unittest/test_irr_matrix4.cpp @@ -113,7 +113,9 @@ SECTION("getScale") { } SECTION("getRotationRadians") { - auto test_rotation_degrees = [](v3f rad, v3f scale) { + // Test that we can correctly extract a previously set rotation, + // even after applying a scale, with reasonable precision. + auto test_rotation_radians = [](v3f rad, v3f scale) { matrix4 S; S.setScale(scale); matrix4 R; @@ -121,12 +123,23 @@ SECTION("getRotationRadians") { v3f rot = (R * S).getRotationRadians(); matrix4 B; B.setRotationRadians(rot); - // TODO we would like to use a lower tolerance here, but that makes the test likely to fail. - f32 tol = 0.001f; - CHECK(matrix_equals(R, B, tol)); + // Decrease the precision when the angles are close to gimbal lock, as + // that breaks the expectations of precision with Tait-Bryan angles. + // Gimbal lock happens when pitch (the angle applied second) is 90 deg + if (std::abs(std::abs(rot.Y) - QUARTER_TURN) < 0.01f) { + f32 tol = 0.001f; + CHECK(matrix_equals(R, B, tol)); + } else { + CHECK(matrix_equals(R, B)); + } }; SECTION("returns a rotation equivalent to the original rotation") { - test_rotation_degrees({1.0f, 2.0f, 3.0f}, v3f(1)); + test_rotation_radians({1.0f, 2.0f, 3.0f}, v3f(1)); + // Test cases at or near gimbal lock. These cases fail when using a + // smaller tolerance. + test_rotation_radians({1.0f, QUARTER_TURN, 3.0f}, v3f(10.f)); + test_rotation_radians({1.0f, QUARTER_TURN + 0.01001f, 3.0f}, v3f(10.f)); + test_rotation_radians({1.0f, QUARTER_TURN + 0.00999f, 3.0f}, v3f(10.f)); Catch::Generators::RandomFloatingGenerator gen_angle(0.0f, 2 * core::PI, Catch::getSeed()); Catch::Generators::RandomFloatingGenerator gen_scale(0.1f, 10, Catch::getSeed()); auto draw = [](auto &gen) { @@ -138,13 +151,13 @@ SECTION("getRotationRadians") { return v3f{draw(gen), draw(gen), draw(gen)}; }; for (int i = 0; i < 1000; ++i) - test_rotation_degrees(draw_v3f(gen_angle), draw_v3f(gen_scale)); + test_rotation_radians(draw_v3f(gen_angle), draw_v3f(gen_scale)); for (f32 i = 0; i < 4; ++i) for (f32 j = 0; j < 4; ++j) for (f32 k = 0; k < 4; ++k) { v3f rad = core::PI / 4.0f * v3f(i, j, k); for (int l = 0; l < 100; ++l) { - test_rotation_degrees(rad, draw_v3f(gen_scale)); + test_rotation_radians(rad, draw_v3f(gen_scale)); } } } diff --git a/src/unittest/test_mapblock.cpp b/src/unittest/test_mapblock.cpp index 1d26b40a8..31315ee97 100644 --- a/src/unittest/test_mapblock.cpp +++ b/src/unittest/test_mapblock.cpp @@ -10,6 +10,7 @@ #include "serialization.h" #include "noise.h" #include "inventory.h" +#include "voxel.h" class TestMapBlock : public TestBase { @@ -33,6 +34,9 @@ public: // Tests loading a non-standard MapBlock void testLoadNonStd(IGameDef *gamedef); + + // Tests blocks with a single recurring node + void testMonoblock(IGameDef *gamedef); }; static TestMapBlock g_test_instance; @@ -45,10 +49,110 @@ void TestMapBlock::runTests(IGameDef *gamedef) TEST(testLoad29, gamedef); TEST(testLoad20, gamedef); TEST(testLoadNonStd, gamedef); + TEST(testMonoblock, gamedef); } //////////////////////////////////////////////////////////////////////////////// +void TestMapBlock::testMonoblock(IGameDef *gamedef) +{ + MapBlock block({}, gamedef); + UASSERT(!block.m_is_mono_block); + + // make the array is expanded + block.expandNodesIfNeeded(); + UASSERT(std::all_of(block.data, block.data + MapBlock::nodecount, [](MapNode &n) { return n == MapNode(CONTENT_IGNORE); })); + + // covert to monoblock + block.tryShrinkNodes(); + UASSERT(block.m_is_mono_block); + UASSERT(block.data[0].param0 == CONTENT_IGNORE); + + block.data[0] = MapNode(CONTENT_AIR); + UASSERT(block.m_is_mono_block); + UASSERT(block.data[0].param0 == CONTENT_AIR); + + block.expandNodesIfNeeded(); + UASSERT(!block.m_is_mono_block); + UASSERT(std::all_of(block.data, block.data + MapBlock::nodecount, [](MapNode &n) { return n == MapNode(CONTENT_AIR); })); + + // covert back to mono block + block.tryShrinkNodes(); + UASSERT(block.m_is_mono_block); + + // deconvert explicitly + block.expandNodesIfNeeded(); + UASSERT(!block.m_is_mono_block); + + // covert back to mono block + block.tryShrinkNodes(); + UASSERT(block.m_is_mono_block); + + static_assert(CONTENT_AIR != 42); + // set a node, should deconvert the block + block.setNode(5,5,5, MapNode(42)); + UASSERT(!block.m_is_mono_block); + + // cannot covert to mono block + block.tryShrinkNodes(); + UASSERT(!block.m_is_mono_block); + + // set all nodes to 42 + for (size_t i = 0; i < MapBlock::nodecount; ++i) { + block.data[i] = MapNode(42); + } + + // can covert to mono block + block.tryShrinkNodes(); + UASSERT(block.m_is_mono_block); + UASSERT(block.data[0].param0 == 42); + + VoxelManipulator vmm; + v3s16 data_size(MAP_BLOCKSIZE, MAP_BLOCKSIZE, MAP_BLOCKSIZE); + vmm.addArea(VoxelArea(block.getPosRelative(), block.getPosRelative() + data_size + v3s16(1,1,1))); + block.copyTo(vmm); + UASSERT(block.m_is_mono_block); + UASSERT(vmm.getNode({5,5,5}).param0 == 42); + + block.setNode(5,5,5,MapNode(23)); + + block.copyFrom(vmm); + UASSERT(block.m_is_mono_block); + UASSERT(block.data[0].param0 == 42); + + vmm.setNode({5,5,5}, MapNode(23)); + block.copyFrom(vmm); + UASSERT(!block.m_is_mono_block); + + vmm.setNode({5,5,5}, MapNode(42,1,0)); + block.copyFrom(vmm); + UASSERT(!block.m_is_mono_block); + + vmm.setNode({5,5,5}, MapNode(42,0,1)); + block.copyFrom(vmm); + UASSERT(!block.m_is_mono_block); + + vmm.setNode({5,5,5}, MapNode(42)); + block.copyFrom(vmm); + UASSERT(block.m_is_mono_block); + + block.setNode(5,5,5,MapNode(23)); + block.tryShrinkNodes(); + UASSERT(!block.m_is_mono_block); + + block.setNode(5,5,5,MapNode(42, 1, 0)); + block.tryShrinkNodes(); + UASSERT(!block.m_is_mono_block); + + block.setNode(5,5,5,MapNode(42, 0, 1)); + block.tryShrinkNodes(); + UASSERT(!block.m_is_mono_block); + + block.setNode(5,5,5,MapNode(42)); + block.tryShrinkNodes(); + UASSERT(block.m_is_mono_block); +} + void TestMapBlock::testSaveLoad(IGameDef *gamedef, const u8 version) { // Use the bottom node ids for this test diff --git a/src/unittest/test_scriptapi.cpp b/src/unittest/test_scriptapi.cpp index b03dd8412..0e8d7ea7c 100644 --- a/src/unittest/test_scriptapi.cpp +++ b/src/unittest/test_scriptapi.cpp @@ -17,7 +17,7 @@ namespace { public: MyScriptApi() : ScriptApiBase(ScriptingType::Async) {}; void init(); - using ScriptApiBase::getStack; + using ScriptApiBase::getStack; // make public }; } diff --git a/src/unittest/test_translations.cpp b/src/unittest/test_translations.cpp index 5bab3e15c..96f5acb9b 100644 --- a/src/unittest/test_translations.cpp +++ b/src/unittest/test_translations.cpp @@ -25,40 +25,59 @@ TEST_CASE("test translations") { SECTION("Plural-Forms function for translations") { -#define REQUIRE_FORM_SIZE(x) {REQUIRE(form); REQUIRE(form->size() == (x));} - // Test cases from https://www.gnu.org/software/gettext/manual/html_node/Plural-forms.html - auto form = GettextPluralForm::parseHeaderLine(L"Plural-Forms: nplurals=2; plural=n != 1;"); +#define REQUIRE_FORM_SIZE(x) {REQUIRE(form); REQUIRE(form.size() == (x));} + // Basic test cases + auto form = GettextPluralForm(L"Plural-Forms: nplurals=2; plural=1;"); REQUIRE_FORM_SIZE(2); - CHECK((*form)(0) == 1); - CHECK((*form)(1) == 0); - CHECK((*form)(2) == 1); + CHECK(form(0) == 1); - form = GettextPluralForm::parseHeaderLine(L"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2;"); + form = GettextPluralForm(L""); + REQUIRE(form.size() == 0); + CHECK(form(0) == 0); + + // Test cases from https://www.gnu.org/software/gettext/manual/html_node/Plural-forms.html + form = GettextPluralForm(L"Plural-Forms: nplurals=2; plural=n != 1;"); + REQUIRE_FORM_SIZE(2); + CHECK(form(0) == 1); + CHECK(form(1) == 0); + CHECK(form(2) == 1); + + form = GettextPluralForm(L"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2;"); REQUIRE_FORM_SIZE(3); - CHECK((*form)(0) == 2); - CHECK((*form)(1) == 0); - CHECK((*form)(102) == 1); - CHECK((*form)(111) == 1); + CHECK(form(0) == 2); + CHECK(form(1) == 0); + CHECK(form(102) == 1); + CHECK(form(111) == 1); - form = GettextPluralForm::parseHeaderLine(L"Plural-Forms: nplurals=3; " + form = GettextPluralForm(L"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;"); REQUIRE_FORM_SIZE(3); - CHECK((*form)(0) == 2); - CHECK((*form)(1) == 0); - CHECK((*form)(102) == 1); - CHECK((*form)(104) == 1); - CHECK((*form)(111) == 2); - CHECK((*form)(112) == 2); - CHECK((*form)(121) == 0); - CHECK((*form)(122) == 1); + CHECK(form(0) == 2); + CHECK(form(1) == 0); + CHECK(form(102) == 1); + CHECK(form(104) == 1); + CHECK(form(111) == 2); + CHECK(form(112) == 2); + CHECK(form(121) == 0); + CHECK(form(122) == 1); // Edge cases - form = GettextPluralForm::parseHeaderLine(L"Plural-Forms: nplurals=3; plural= (n-1+1)<=1 ? n||1?0:1 : 1?(!!2):2;"); + form = GettextPluralForm(L"Plural-Forms: nplurals=3; plural= (n-1+1)<=1 ? n||1?0:1 : 1?(!!2):2;"); REQUIRE_FORM_SIZE(3); - CHECK((*form)(0) == 0); - CHECK((*form)(1) == 0); - CHECK((*form)(2) == 1); + CHECK(form(0) == 0); + CHECK(form(1) == 0); + CHECK(form(2) == 1); + + form = GettextPluralForm(L"Plural-Forms: nplurals=2; plural=4/n;"); + REQUIRE_FORM_SIZE(2); + CHECK(form(1) == 4); + CHECK(form(0) == 0); + + form = GettextPluralForm(L"Plural-Forms: nplurals=2; plural=7%n;"); + REQUIRE_FORM_SIZE(2); + CHECK(form(3) == 1); + CHECK(form(0) == 0); #undef REQUIRE_FORM_SIZE } diff --git a/src/unittest/test_utilities.cpp b/src/unittest/test_utilities.cpp index 17be58613..59c0bd745 100644 --- a/src/unittest/test_utilities.cpp +++ b/src/unittest/test_utilities.cpp @@ -337,6 +337,8 @@ void TestUtilities::testRemoveEscapes() L"abc\x1b(escaped)def") == L"abcdef"); UASSERT(unescape_enriched( L"abc\x1b((escaped with parenthesis\\))def") == L"abcdef"); + UASSERTEQ(auto, unescape_enriched("abc\x1b(not this\\\\)def"), + "abcdef"); UASSERT(unescape_enriched( L"abc\x1b(incomplete") == L"abc"); UASSERT(unescape_enriched( @@ -344,6 +346,9 @@ void TestUtilities::testRemoveEscapes() // Nested escapes not supported UASSERT(unescape_enriched( L"abc\x1b(outer \x1b(inner escape)escape)def") == L"abcescape)def"); + // Multiple + UASSERTEQ(auto, unescape_enriched("one\x1bX two \x1b(four)three"), + "one two three"); } void TestUtilities::testWrapRows() diff --git a/src/util/bitmap.h b/src/util/bitmap.h new file mode 100644 index 000000000..39e114c8e --- /dev/null +++ b/src/util/bitmap.h @@ -0,0 +1,93 @@ +// Luanti +// SPDX-License-Identifier: LGPL-2.1-or-later +// Copyright (C) 2021-2025 sfan5 + +#include "irrlichttypes.h" +#include +#include +#include + +/** + * Rudimentary header-only 2D bitmap class. + * @warning not thread-safe + */ +class Bitmap { + u32 linesize, lines; + std::vector data; + + static inline u32 bytepos(u32 index) { return index >> 3; } + static inline u8 bitpos(u32 index) { return index & 7; } + + template + bool modify_(u32 x, u32 y) + { + u32 index = y * linesize + x; + u8 mask = 1 << bitpos(index); + u8 byte = data[bytepos(index)]; + if constexpr (set) + byte |= mask; + else if constexpr (toggle) + byte ^= mask; + else if constexpr (clear) + byte &= ~mask; + data[bytepos(index)] = byte; + return byte & mask; + } + +public: + /// @brief Create an empty bitmap + Bitmap() : linesize(0), lines(0) {} + + /// @brief Create a new zero-filled bitmap + Bitmap(u32 width, u32 height) + { + resize(width, height); + } + + inline u32 width() const { return linesize; } + inline u32 height() const { return lines; } + + inline void resize(u32 width, u32 height, bool initial_value=false) + { + assert(width <= 65534 && height <= 65534); // index would overflow + linesize = width; + lines = height; + data.clear(); // make sure to discard all data + if (width && height) + data.resize(bytepos(width * height) + 1, static_cast(initial_value ? 0xff : 0)); + } + + inline void reset(bool value) + { + std::fill(data.begin(), data.end(), value ? 0xff : 0); + } + + inline bool get(u32 x, u32 y) const + { + u32 index = y * linesize + x; + return data[bytepos(index)] & (1 << bitpos(index)); + } + + inline void set(u32 x, u32 y) { modify_<1, 0, 0>(x, y); } + inline void unset(u32 x, u32 y) { modify_<0, 0, 1>(x, y); } + inline bool toggle(u32 x, u32 y) { return modify_<0, 1, 0>(x, y); } + + /// @brief Returns true if all bits in the bitmap are set + inline bool all() const + { + if (!linesize || !lines) + return (assert(0), true); + for (u32 i = 0; i < data.size() - 1; i++) { + if (data[i] != 0xff) + return false; + } + u8 last_byte = data.back(); // not used entirely + for (u8 i = 0; i < bitpos(linesize * lines); i++) { + if (!(last_byte & (1 << i))) + return false; + } + return true; + } +}; + +// Note: a 3D class could be written based on the 2D one. Or maybe the other way? diff --git a/src/util/container.h b/src/util/container.h index 107547188..803821e36 100644 --- a/src/util/container.h +++ b/src/util/container.h @@ -108,7 +108,11 @@ public: return result; } - void clear() { m_values.clear(); } + void clear() + { + MutexAutoLock lock(m_mutex); + m_values.clear(); + } private: std::map m_values; diff --git a/src/util/guid.h b/src/util/guid.h index 8a87db33f..64798e8fa 100644 --- a/src/util/guid.h +++ b/src/util/guid.h @@ -10,7 +10,6 @@ #include #include -class ServerEnvironment; /** * A global unique identifier. diff --git a/src/util/string.cpp b/src/util/string.cpp index c39f92cbf..440dc275f 100644 --- a/src/util/string.cpp +++ b/src/util/string.cpp @@ -1258,7 +1258,7 @@ std::optional my_string_to_double(const std::string &s) char *end = nullptr; // Note: this also supports hexadecimal notation like "0x1.0p+1" double number = std::strtod(s.c_str(), &end); - if (end != &*s.end()) + if (end && *end != '\0') return std::nullopt; return number; } diff --git a/src/util/string.h b/src/util/string.h index 1109f7f0b..425c846e3 100644 --- a/src/util/string.h +++ b/src/util/string.h @@ -593,27 +593,25 @@ inline std::basic_string unescape_string(const std::basic_string &s) */ template [[nodiscard]] -std::basic_string unescape_enriched(const std::basic_string &s) +std::basic_string unescape_enriched(std::basic_string_view s) { std::basic_string output; output.reserve(s.size()); size_t i = 0; while (i < s.length()) { - if (s[i] == '\x1b') { + if (s[i] == static_cast('\x1b')) { ++i; - if (i == s.length()) continue; - if (s[i] == '(') { + if (i == s.length()) + continue; + if (s[i] == static_cast('(')) { ++i; - while (i < s.length() && s[i] != ')') { - if (s[i] == '\\') { + while (i < s.length() && s[i] != static_cast(')')) { + if (s[i] == static_cast('\\')) ++i; - } ++i; } - ++i; - } else { - ++i; } + ++i; continue; } output += s[i]; @@ -622,6 +620,18 @@ std::basic_string unescape_enriched(const std::basic_string &s) return output; } +// (same templating issue here) +[[nodiscard]] +inline std::string unescape_enriched(std::string_view s) +{ + return unescape_enriched(s); +} +[[nodiscard]] +inline std::wstring unescape_enriched(std::wstring_view s) +{ + return unescape_enriched(s); +} + template [[nodiscard]] std::vector > split(const std::basic_string &s, T delim) diff --git a/src/util/thread.h b/src/util/thread.h index 849180917..b24c921b3 100644 --- a/src/util/thread.h +++ b/src/util/thread.h @@ -20,12 +20,13 @@ template class MutexedVariable { public: + // default initialization + MutexedVariable() {} + MutexedVariable(const T &value): - m_value(value) - {} + m_value(value) {} MutexedVariable(T &&value): - m_value(std::move(value)) - {} + m_value(std::move(value)) {} T get() { diff --git a/src/voxel.cpp b/src/voxel.cpp index be7b19d42..d16102d10 100644 --- a/src/voxel.cpp +++ b/src/voxel.cpp @@ -188,7 +188,7 @@ void VoxelManipulator::addArea(const VoxelArea &area) delete[] old_flags; } -void VoxelManipulator::copyFrom(MapNode *src, const VoxelArea& src_area, +void VoxelManipulator::copyFrom(MapNode *src, bool is_mono_block, const VoxelArea& src_area, v3s16 from_pos, v3s16 to_pos, const v3s16 &size) { /* The reason for this optimised code is that we're a member function @@ -227,8 +227,12 @@ void VoxelManipulator::copyFrom(MapNode *src, const VoxelArea& src_area, for (s16 z = 0; z < size.Z; z++) { for (s16 y = 0; y < size.Y; y++) { - memcpy(&m_data[i_local], &src[i_src], size.X * sizeof(*m_data)); - memset(&m_flags[i_local], 0, size.X); + if (is_mono_block) { + std::fill_n(m_data + i_local, size.X, src[0]); + } else { + std::copy_n(src + i_src, size.X, m_data + i_local); + } + std::fill_n(m_flags + i_local, size.X, 0); i_src += src_step; i_local += dest_step; } diff --git a/src/voxel.h b/src/voxel.h index af47e23be..ec04003fa 100644 --- a/src/voxel.h +++ b/src/voxel.h @@ -483,7 +483,7 @@ public: Copy data and set flags to 0 dst_area.getExtent() <= src_area.getExtent() */ - void copyFrom(MapNode *src, const VoxelArea& src_area, + void copyFrom(MapNode *src, bool is_mono_block, const VoxelArea& src_area, v3s16 from_pos, v3s16 to_pos, const v3s16 &size); // Copy data diff --git a/util/ci/common.sh b/util/ci/common.sh index 675022139..476d4508a 100644 --- a/util/ci/common.sh +++ b/util/ci/common.sh @@ -38,6 +38,9 @@ install_linux_deps() { # macOS build only install_macos_deps() { + # Uninstall the bundled cmake, it is outdated, and brew does not want to install the newest version with this one present since they are from different taps. + brew uninstall cmake || : + local pkgs=( cmake gettext freetype gmp jpeg-turbo jsoncpp leveldb snappy boost diff --git a/util/download_sign_android.sh b/util/download_sign_android.sh new file mode 100755 index 000000000..255b05f73 --- /dev/null +++ b/util/download_sign_android.sh @@ -0,0 +1,54 @@ +#!/bin/bash + +# Install gh +# Login with gh auth login +# +# Usage: ./download_sign_android.sh 5.13.0 + +set -e + +TAG="$1" +REPO="luanti-org/luanti" +WORKFLOW_NAME="android" +APKSIGNER="$HOME/Android/Sdk/build-tools/35.0.0/apksigner" +KEYSTORE="$HOME/Documents/keystore-luanti.jks" + +if [[ -z "$TAG" ]]; then + echo "Usage: $0 " + exit 1 +fi + +echo "Finding workflow run for '$WORKFLOW_NAME' with tag '$TAG'..." + +RUN_ID=$(gh run list --workflow="$WORKFLOW_NAME" --repo "$REPO" --branch "$TAG" --json databaseId -q '.[0].databaseId') + +if [[ -z "$RUN_ID" ]]; then + echo "No run found for workflow '$WORKFLOW_NAME' and tag '$TAG'" + exit 1 +fi + +echo "Found run ID: $RUN_ID" + +echo "Downloading all artifacts from run..." + +mkdir -p unsigned +gh run download "$RUN_ID" --repo "$REPO" -D unsigned + + +echo "Signing packages" +read -s -p "Enter your password: " PASSWORD +echo + +sign() { + echo "Signing $2" + "$APKSIGNER" sign --ks "$KEYSTORE" --ks-pass "pass:$PASSWORD" --min-sdk-version 21 --in "$1" --out "$2" +} + +mkdir -p signed +sign unsigned/Luanti-arm64-v8a.apk/app-arm64-v8a-release-unsigned.apk "signed/luanti-$TAG-arm64-v8a.apk" +sign unsigned/Luanti-armeabi-v7a.apk/app-armeabi-v7a-release-unsigned.apk "signed/luanti-$TAG-armeabi-v7a.apk" +sign unsigned/Luanti-release.aab/app-release.aab "signed/luanti-$TAG.aab" +sign unsigned/Luanti-x86_64.apk/app-x86_64-release-unsigned.apk "signed/luanti-$TAG-x86_64.apk" +sign unsigned/Luanti-x86.apk/app-x86-release-unsigned.apk "signed/luanti-$TAG-x86.apk" + +echo "Done." diff --git a/vcpkg.json b/vcpkg.json index 47774356b..c099d34ca 100644 --- a/vcpkg.json +++ b/vcpkg.json @@ -3,10 +3,11 @@ "dependencies": [ "zlib", "zstd", + "openssl", { "name": "curl", "features": [ - "winssl" + "ssl" ] }, "openal-soft",