# French translations for minetest-c55 package. # Copyright (C) 2011 celeron # This file is distributed under the same license as the minetest-c55 package. # Cyriaque 'Cisoun' Skrapits , 2011 # msgid "" msgstr "" "Project-Id-Version: 0.0.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2017-08-24 18:42+0200\n" "PO-Revision-Date: 2017-06-03 08:11+0000\n" "Last-Translator: Loïc Blot \n" "Language-Team: French \n" "Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" "X-Generator: Weblate 2.15-dev\n" #: builtin/client/init.lua msgid "Respawn" msgstr "Réapparaître" #: builtin/client/init.lua msgid "You died." msgstr "Vous êtes mort." #: builtin/fstk/ui.lua msgid "An error occured in a Lua script, such as a mod:" msgstr "Une erreur est survenue dans un script Lua, il peut s'agir d'un mod :" #: builtin/fstk/ui.lua msgid "An error occured:" msgstr "Une erreur est survenue :" #: builtin/fstk/ui.lua msgid "Main menu" msgstr "Menu principal" #: builtin/fstk/ui.lua msgid "Ok" msgstr "OK" #: builtin/fstk/ui.lua msgid "Reconnect" msgstr "Se reconnecter" #: builtin/fstk/ui.lua msgid "The server has requested a reconnect:" msgstr "Le serveur souhaite rétablir une connexion :" #: builtin/mainmenu/common.lua msgid "Loading..." msgstr "Chargement..." #: builtin/mainmenu/common.lua msgid "Protocol version mismatch. " msgstr "La version du protocole ne correspond pas. " #: builtin/mainmenu/common.lua msgid "Server enforces protocol version $1. " msgstr "Le serveur impose la version $1 du protocole. " #: builtin/mainmenu/common.lua msgid "Server supports protocol versions between $1 and $2. " msgstr "Le serveur supporte les versions de protocole entre $1 et $2. " #: builtin/mainmenu/common.lua msgid "Try reenabling public serverlist and check your internet connection." msgstr "" "Rechargez la liste des serveurs publics et vérifiez votre connexion Internet." #: builtin/mainmenu/common.lua msgid "We only support protocol version $1." msgstr "Nous supportons seulement la version du protocole $1." #: builtin/mainmenu/common.lua msgid "We support protocol versions between version $1 and $2." msgstr "Nous supportons seulement les versions du protocole entre $1 et $2." #: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/dlg_create_world.lua #: builtin/mainmenu/dlg_delete_mod.lua builtin/mainmenu/dlg_delete_world.lua #: builtin/mainmenu/dlg_rename_modpack.lua #: builtin/mainmenu/dlg_settings_advanced.lua src/guiKeyChangeMenu.cpp #: src/guiPasswordChange.cpp src/keycode.cpp msgid "Cancel" msgstr "Annuler" #: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/tab_mods.lua msgid "Dependencies:" msgstr "Dépend de :" #: builtin/mainmenu/dlg_config_world.lua msgid "Disable MP" msgstr "Désactiver les packs de mods" #: builtin/mainmenu/dlg_config_world.lua msgid "Disable all" msgstr "Tout désactiver" #: builtin/mainmenu/dlg_config_world.lua msgid "Enable MP" msgstr "Activer le pack de mods" #: builtin/mainmenu/dlg_config_world.lua msgid "Enable all" msgstr "Tout activer" #: builtin/mainmenu/dlg_config_world.lua msgid "" "Failed to enable mod \"$1\" as it contains disallowed characters. Only " "chararacters [a-z0-9_] are allowed." msgstr "" "Échec du chargement du mod \"$1\" car il contient des caractères non-" "autorisés.\n" "Seuls les caractères alphanumériques [a-z0-9_] sont autorisés." #: builtin/mainmenu/dlg_config_world.lua msgid "Mod:" msgstr "Mod :" #: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/tab_mods.lua msgid "Optional dependencies:" msgstr "Dépendances optionnelles :" #: builtin/mainmenu/dlg_config_world.lua #: builtin/mainmenu/dlg_settings_advanced.lua src/guiKeyChangeMenu.cpp msgid "Save" msgstr "Enregistrer" #: builtin/mainmenu/dlg_config_world.lua msgid "World:" msgstr "Sélectionner un monde :" #: builtin/mainmenu/dlg_config_world.lua msgid "enabled" msgstr "activé" #: builtin/mainmenu/dlg_create_world.lua msgid "A world named \"$1\" already exists" msgstr "Le monde \"$1\" existe déjà" #: builtin/mainmenu/dlg_create_world.lua msgid "Create" msgstr "Créer" #: builtin/mainmenu/dlg_create_world.lua msgid "Download a subgame, such as minetest_game, from minetest.net" msgstr "Téléchargez un jeu, comme minetest_game, depuis minetest.net" #: builtin/mainmenu/dlg_create_world.lua msgid "Download one from minetest.net" msgstr "Téléchargez-en un depuis minetest.net" #: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp msgid "Game" msgstr "Jeu" #: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp msgid "Mapgen" msgstr "Générateur de terrain" #: builtin/mainmenu/dlg_create_world.lua #, fuzzy msgid "No game selected" msgstr "Distance de vue" #: builtin/mainmenu/dlg_create_world.lua msgid "Seed" msgstr "Graine" #: builtin/mainmenu/dlg_create_world.lua msgid "Warning: The minimal development test is meant for developers." msgstr "Avertissement : le jeu minimal est fait pour les développeurs." #: builtin/mainmenu/dlg_create_world.lua msgid "World name" msgstr "Nom du monde" #: builtin/mainmenu/dlg_create_world.lua msgid "You have no subgames installed." msgstr "Vous n'avez pas de jeux installés." #: builtin/mainmenu/dlg_delete_mod.lua msgid "Are you sure you want to delete \"$1\"?" msgstr "Êtes-vous sûr de vouloir supprimer \"$1\" ?" #: builtin/mainmenu/dlg_delete_mod.lua builtin/mainmenu/dlg_delete_world.lua #: builtin/mainmenu/tab_local.lua src/keycode.cpp msgid "Delete" msgstr "Supprimer" #: builtin/mainmenu/dlg_delete_mod.lua msgid "Modmgr: failed to delete \"$1\"" msgstr "Le gestionnaire de mods n'a pas pu supprimer \"$1\"" #: builtin/mainmenu/dlg_delete_mod.lua msgid "Modmgr: invalid modpath \"$1\"" msgstr "Gestionnaire de mods : chemin de mod invalide \"$1\"" #: builtin/mainmenu/dlg_delete_world.lua msgid "Delete World \"$1\"?" msgstr "Supprimer le monde \"$1\" ?" #: builtin/mainmenu/dlg_rename_modpack.lua msgid "Accept" msgstr "Accepter" #: builtin/mainmenu/dlg_rename_modpack.lua msgid "Rename Modpack:" msgstr "Renommer le pack de mods :" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "\"$1\" is not a valid flag." msgstr "\"$1\" n'est pas un drapeau valide." #: builtin/mainmenu/dlg_settings_advanced.lua msgid "(No description of setting given)" msgstr "(Aucune description donnée de l'option)" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "< Back to Settings page" msgstr "< Revenir aux paramètres" #: builtin/mainmenu/dlg_settings_advanced.lua #, fuzzy msgid ", , (, , )," msgstr "" "Format : , , (, , ), , " ", " #: builtin/mainmenu/dlg_settings_advanced.lua msgid ", , , " msgstr "" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Browse" msgstr "Naviguer" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Disabled" msgstr "Désactivé" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Edit" msgstr "Modifier" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Enabled" msgstr "Activé" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Format is 3 numbers separated by commas and inside brackets." msgstr "" "Le format est composé de 3 nombres séparés par des virgules et entre " "parenthèses." #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Format:" msgstr "" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Games" msgstr "Jeux" #: builtin/mainmenu/dlg_settings_advanced.lua builtin/mainmenu/tab_mods.lua msgid "Mods" msgstr "Mods" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Please enter a comma seperated list of flags." msgstr "Veuillez séparer les drapeaux par des virgules dans la liste." #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Please enter a valid integer." msgstr "Veuillez entrer un nombre entier valide." #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Please enter a valid number." msgstr "Veuillez entrer un nombre valide." #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Possible values are: " msgstr "Les valeurs possibles sont : " #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Restore Default" msgstr "Réinitialiser" #: builtin/mainmenu/dlg_settings_advanced.lua builtin/mainmenu/tab_online.lua msgid "Search" msgstr "Rechercher" #: builtin/mainmenu/dlg_settings_advanced.lua #, fuzzy msgid "Select directory" msgstr "Répertoire de la carte du monde" #: builtin/mainmenu/dlg_settings_advanced.lua #, fuzzy msgid "Select file" msgstr "Sélectionner le fichier du mod :" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Show technical names" msgstr "Montrer les noms techniques" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "The value must be at least $1." msgstr "La valeur doit être supérieure à $1." #: builtin/mainmenu/dlg_settings_advanced.lua msgid "The value must not be larger than $1." msgstr "La valeur doit être inférieure à $1." #: builtin/mainmenu/modmgr.lua msgid "" "\n" "Install Mod: unsupported filetype \"$1\" or broken archive" msgstr "" "\n" "Installation d'un mod : type de fichier non supporté \"$1\" ou archive " "endommagée" #: builtin/mainmenu/modmgr.lua msgid "Failed to install $1 to $2" msgstr "Échec de l'installation de $1 vers $2" #: builtin/mainmenu/modmgr.lua msgid "Install Mod: file: \"$1\"" msgstr "Installation d'un mod : fichier : \"$1\"" #: builtin/mainmenu/modmgr.lua msgid "Install Mod: unable to find real modname for: $1" msgstr "" "Installation d'un mod : impossible de trouver le vrai nom du mod pour : $1" #: builtin/mainmenu/modmgr.lua msgid "Install Mod: unable to find suitable foldername for modpack $1" msgstr "" "Installation un mod : impossible de trouver un nom de dossier valide pour le " "pack de mods $1" #: builtin/mainmenu/modmgr.lua msgid "Subgame Mods" msgstr "Mods de sous-jeu" #: builtin/mainmenu/tab_credits.lua msgid "Active Contributors" msgstr "Contributeurs actifs" #: builtin/mainmenu/tab_credits.lua msgid "Core Developers" msgstr "Développeurs principaux" #: builtin/mainmenu/tab_credits.lua msgid "Credits" msgstr "Crédits" #: builtin/mainmenu/tab_credits.lua msgid "Previous Contributors" msgstr "Anciens contributeurs" #: builtin/mainmenu/tab_credits.lua msgid "Previous Core Developers" msgstr "Anciens développeurs" #: builtin/mainmenu/tab_local.lua msgid "Announce Server" msgstr "Annoncer le serveur" #: builtin/mainmenu/tab_local.lua msgid "Bind Address" msgstr "Adresse à assigner" #: builtin/mainmenu/tab_local.lua msgid "Configure" msgstr "Configurer" #: builtin/mainmenu/tab_local.lua builtin/mainmenu/tab_simple_main.lua msgid "Creative Mode" msgstr "Mode créatif" #: builtin/mainmenu/tab_local.lua builtin/mainmenu/tab_simple_main.lua msgid "Enable Damage" msgstr "Activer les dégâts" #: builtin/mainmenu/tab_local.lua msgid "Host Game" msgstr "Héberger une partie" #: builtin/mainmenu/tab_local.lua msgid "Host Server" msgstr "Héberger un serveur" #: builtin/mainmenu/tab_local.lua msgid "Local Game" msgstr "Jeu local" #: builtin/mainmenu/tab_local.lua msgid "Name/Password" msgstr "Nom / Mot de passe" #: builtin/mainmenu/tab_local.lua msgid "New" msgstr "Nouveau" #: builtin/mainmenu/tab_local.lua msgid "No world created or selected!" msgstr "Aucun monde créé ou sélectionné !" #: builtin/mainmenu/tab_local.lua msgid "Play Game" msgstr "Jouer" #: builtin/mainmenu/tab_local.lua msgid "Port" msgstr "Port" #: builtin/mainmenu/tab_local.lua msgid "Select World:" msgstr "Sélectionner un monde :" #: builtin/mainmenu/tab_local.lua msgid "Server Port" msgstr "Port du serveur" #: builtin/mainmenu/tab_mods.lua msgid "Installed Mods:" msgstr "Mods installés :" #: builtin/mainmenu/tab_mods.lua msgid "Mod information:" msgstr "Informations du mod :" #: builtin/mainmenu/tab_mods.lua msgid "No dependencies." msgstr "Pas de dépendances." #: builtin/mainmenu/tab_mods.lua msgid "No mod description available" msgstr "Pas de description du mod disponible" #: builtin/mainmenu/tab_mods.lua msgid "Rename" msgstr "Renommer" #: builtin/mainmenu/tab_mods.lua msgid "Select Mod File:" msgstr "Sélectionner le fichier du mod :" #: builtin/mainmenu/tab_mods.lua msgid "Uninstall selected mod" msgstr "Désinstaller le mod sélectionné" #: builtin/mainmenu/tab_mods.lua msgid "Uninstall selected modpack" msgstr "Désinstaller le pack de mods sélectionné" #: builtin/mainmenu/tab_online.lua msgid "Address / Port" msgstr "Adresse / Port :" #: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua msgid "Connect" msgstr "Rejoindre" #: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua msgid "Creative mode" msgstr "Mode créatif" #: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua msgid "Damage enabled" msgstr "Dégâts activés" #: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua msgid "Del. Favorite" msgstr "Supprimer favori :" #: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua msgid "Favorite" msgstr "Favori" #: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua msgid "Name / Password" msgstr "Nom / Mot de passe" #: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua msgid "Ping" msgstr "Ping" #: builtin/mainmenu/tab_online.lua msgid "Play Online" msgstr "Jouer en ligne" #: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua msgid "PvP enabled" msgstr "Combat activé" #: builtin/mainmenu/tab_settings.lua msgid "2x" msgstr "2x" #: builtin/mainmenu/tab_settings.lua msgid "3D Clouds" msgstr "Nuages en 3D" #: builtin/mainmenu/tab_settings.lua msgid "4x" msgstr "4x" #: builtin/mainmenu/tab_settings.lua msgid "8x" msgstr "8x" #: builtin/mainmenu/tab_settings.lua msgid "Advanced Settings" msgstr "Réglages avancés" #: builtin/mainmenu/tab_settings.lua msgid "Antialiasing:" msgstr "Anti-crénelage :" #: builtin/mainmenu/tab_settings.lua msgid "Are you sure to reset your singleplayer world?" msgstr "Êtes-vous sûr de vouloir réinitialiser votre monde ?" #: builtin/mainmenu/tab_settings.lua msgid "Autosave screen size" msgstr "Sauver auto. la taile d'écran" #: builtin/mainmenu/tab_settings.lua msgid "Bilinear Filter" msgstr "Filtrage bilinéaire" #: builtin/mainmenu/tab_settings.lua msgid "Bump Mapping" msgstr "Placage de relief" #: builtin/mainmenu/tab_settings.lua msgid "Change keys" msgstr "Changer les touches" #: builtin/mainmenu/tab_settings.lua msgid "Connected Glass" msgstr "Verre unifié" #: builtin/mainmenu/tab_settings.lua msgid "Fancy Leaves" msgstr "Arbres détaillés" #: builtin/mainmenu/tab_settings.lua msgid "Mipmap" msgstr "MIP mapping" #: builtin/mainmenu/tab_settings.lua msgid "Mipmap + Aniso. Filter" msgstr "MIP map + anisotropie" #: builtin/mainmenu/tab_settings.lua msgid "No" msgstr "Non" #: builtin/mainmenu/tab_settings.lua msgid "No Filter" msgstr "Aucun filtre" #: builtin/mainmenu/tab_settings.lua msgid "No Mipmap" msgstr "Sans MIP map" #: builtin/mainmenu/tab_settings.lua msgid "Node Highlighting" msgstr "Surbrillance des blocs" #: builtin/mainmenu/tab_settings.lua msgid "Node Outlining" msgstr "Non-surbrillance des blocs" #: builtin/mainmenu/tab_settings.lua builtin/mainmenu/tab_texturepacks.lua msgid "None" msgstr "Aucun" #: builtin/mainmenu/tab_settings.lua msgid "Normal Mapping" msgstr "Mappage de texture" #: builtin/mainmenu/tab_settings.lua msgid "Opaque Leaves" msgstr "Arbres minimaux" #: builtin/mainmenu/tab_settings.lua msgid "Opaque Water" msgstr "Eau opaque" #: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp msgid "Parallax Occlusion" msgstr "Occlusion parallaxe" #: builtin/mainmenu/tab_settings.lua msgid "Particles" msgstr "Activer les particules" #: builtin/mainmenu/tab_settings.lua msgid "Reset singleplayer world" msgstr "Réinitialiser le monde" #: builtin/mainmenu/tab_settings.lua msgid "Screen:" msgstr "Ecran :" #: builtin/mainmenu/tab_settings.lua msgid "Settings" msgstr "Réglages" #: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp msgid "Shaders" msgstr "Shaders" #: builtin/mainmenu/tab_settings.lua msgid "Simple Leaves" msgstr "Arbres simples" #: builtin/mainmenu/tab_settings.lua msgid "Smooth Lighting" msgstr "Lumière douce" #: builtin/mainmenu/tab_settings.lua msgid "Texturing:" msgstr "Textures :" #: builtin/mainmenu/tab_settings.lua msgid "To enable shaders the OpenGL driver needs to be used." msgstr "" "Pour activer les textures nuancées, le pilote OpenGL doit être utilisé." #: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp msgid "Tone Mapping" msgstr "mappage tonal" #: builtin/mainmenu/tab_settings.lua msgid "Touchthreshold (px)" msgstr "Sensibilité du toucher (px)" #: builtin/mainmenu/tab_settings.lua msgid "Trilinear Filter" msgstr "Filtrage trilinéaire" #: builtin/mainmenu/tab_settings.lua msgid "Waving Leaves" msgstr "Feuilles ondulantes" #: builtin/mainmenu/tab_settings.lua msgid "Waving Plants" msgstr "Plantes ondulantes" #: builtin/mainmenu/tab_settings.lua msgid "Waving Water" msgstr "Eau ondulante" #: builtin/mainmenu/tab_settings.lua msgid "Yes" msgstr "Oui" #: builtin/mainmenu/tab_simple_main.lua msgid "Config mods" msgstr "Configurer les mods" #: builtin/mainmenu/tab_simple_main.lua msgid "Main" msgstr "Principal" #: builtin/mainmenu/tab_simple_main.lua msgid "Start Singleplayer" msgstr "Démarrer une partie solo" #: builtin/mainmenu/tab_texturepacks.lua msgid "Default textures will be used." msgstr "" #: builtin/mainmenu/tab_texturepacks.lua msgid "No information available" msgstr "Pas d'information disponible" #: builtin/mainmenu/tab_texturepacks.lua msgid "Select texture pack:" msgstr "Sélectionner un pack de textures :" #: builtin/mainmenu/tab_texturepacks.lua msgid "Texturepacks" msgstr "Packs de textures" #: src/client.cpp msgid "Connection timed out." msgstr "Connexion perdue." #: src/client.cpp msgid "Done!" msgstr "Terminé !" #: src/client.cpp msgid "Initializing nodes" msgstr "Initialisation des blocs" #: src/client.cpp msgid "Initializing nodes..." msgstr "Initialisation des blocs..." #: src/client.cpp msgid "Loading textures..." msgstr "Chargement des textures..." #: src/client.cpp msgid "Rebuilding shaders..." msgstr "Reconstruction des textures nuancées..." #: src/client/clientlauncher.cpp msgid "Connection error (timed out?)" msgstr "Erreur de connexion (perte de connexion ?)" #: src/client/clientlauncher.cpp msgid "Could not find or load game \"" msgstr "Impossible de trouver ou charger le jeu" #: src/client/clientlauncher.cpp msgid "Invalid gamespec." msgstr "gamespec invalide." #: src/client/clientlauncher.cpp msgid "Main Menu" msgstr "Menu principal" #: src/client/clientlauncher.cpp msgid "No world selected and no address provided. Nothing to do." msgstr "Pas de monde sélectionné et pas d'adresse fournie. Rien à faire." #: src/client/clientlauncher.cpp msgid "Player name too long." msgstr "Nom du joueur trop long." #: src/client/clientlauncher.cpp msgid "Please choose a name!" msgstr "Veuillez choisir un nom !" #: src/client/clientlauncher.cpp msgid "Provided world path doesn't exist: " msgstr "Le chemin du monde spécifié n'existe pas : " #: src/fontengine.cpp msgid "needs_fallback_font" msgstr "" "needs_fallback_font (besoin ou pas des caractères spéciaux dans une police)" #: src/game.cpp msgid "" "\n" "Check debug.txt for details." msgstr "" "\n" "Voir debug.txt pour plus d'informations." #: src/game.cpp msgid "- Address: " msgstr "- Adresse : " #: src/game.cpp msgid "- Creative Mode: " msgstr "- Mode créatif : " #: src/game.cpp msgid "- Damage: " msgstr "- Dégâts : " #: src/game.cpp msgid "- Mode: " msgstr "- Mode : " #: src/game.cpp msgid "- Port: " msgstr "- Port : " #: src/game.cpp msgid "- Public: " msgstr "- Public : " #: src/game.cpp msgid "- PvP: " msgstr "- JcJ : " #: src/game.cpp msgid "- Server Name: " msgstr "- Nom du serveur : " #: src/game.cpp msgid "Change Keys" msgstr "Changer les touches" #: src/game.cpp msgid "Change Password" msgstr "Changer votre mot de passe" #: src/game.cpp msgid "Continue" msgstr "Continuer" #: src/game.cpp #, c-format msgid "" "Controls:\n" "- %s: move forwards\n" "- %s: move backwards\n" "- %s: move left\n" "- %s: move right\n" "- %s: jump/climb\n" "- %s: sneak/go down\n" "- %s: drop item\n" "- %s: inventory\n" "- Mouse: turn/look\n" "- Mouse left: dig/punch\n" "- Mouse right: place/use\n" "- Mouse wheel: select item\n" "- %s: chat\n" msgstr "" "Contrôles:\n" "- %s1 : avancer\n" "- %s2 : reculer\n" "- %s3 : à gauche\n" "- %s4 : à droite\n" "- %s5 : sauter/grimper\n" "- %s6 : marcher lentement/descendre\n" "- %s7 : lâcher l'objet en main\n" "- %s8 : inventaire\n" "- Souris : tourner/regarder\n" "- Souris gauche : creuser/attaquer\n" "- Souris droite : placer/utiliser\n" "- Molette souris : sélectionner objet\n" "- %s9 : discuter\n" #: src/game.cpp msgid "" "Default Controls:\n" "No menu visible:\n" "- single tap: button activate\n" "- double tap: place/use\n" "- slide finger: look around\n" "Menu/Inventory visible:\n" "- double tap (outside):\n" " -->close\n" "- touch stack, touch slot:\n" " --> move stack\n" "- touch&drag, tap 2nd finger\n" " --> place single item to slot\n" msgstr "" "Touches par défaut :\n" "Sans menu visible :\n" "- un seul appui : touche d'activation\n" "- double-appui : placement / utilisation\n" "- Glissement du doigt : regarder autour\n" "Menu / Inventaire visible :\n" "- double-appui (en dehors) : fermeture\n" "- objet(s) dans l'inventaire : déplacement\n" "- appui, glissement et appui : pose d'un seul item par emplacement\n" #: src/game.cpp msgid "Exit to Menu" msgstr "Quitter vers le menu" #: src/game.cpp msgid "Exit to OS" msgstr "Quitter le jeu" #: src/game.cpp msgid "Game info:" msgstr "Infos de jeu :" #: src/game.cpp msgid "Game paused" msgstr "Jeu en pause" #: src/game.cpp msgid "Hosting server" msgstr "Héberger un serveur" #: src/game.cpp msgid "Item definitions..." msgstr "Définitions des items..." #: src/game.cpp msgid "KiB/s" msgstr "Ko/s" #: src/game.cpp msgid "Media..." msgstr "Média..." #: src/game.cpp msgid "MiB/s" msgstr "Mo/s" #: src/game.cpp msgid "Node definitions..." msgstr "Définitions des blocs..." #: src/game.cpp msgid "Off" msgstr "Désactivé" #: src/game.cpp msgid "On" msgstr "Activé" #: src/game.cpp msgid "Remote server" msgstr "Serveur distant" #: src/game.cpp msgid "Singleplayer" msgstr "Solo" #: src/game.cpp msgid "Sound Volume" msgstr "Volume du son" #: src/game.cpp #, c-format msgid "Volume changed to %d%%" msgstr "Volume réglé sur %d%%" #: src/game.cpp msgid "Volume changed to 0%" msgstr "Volume mis à 0%" #: src/game.cpp msgid "Volume changed to 100%" msgstr "Volume mis à 100%" #: src/game.cpp src/guiFormSpecMenu.cpp msgid "ok" msgstr "ok" #: src/guiFormSpecMenu.cpp msgid "Enter " msgstr "Entrer " #: src/guiFormSpecMenu.cpp msgid "Proceed" msgstr "Procéder" #: src/guiKeyChangeMenu.cpp #, fuzzy msgid "\"Special\" = climb down" msgstr "\"Use\" = descendre" #: src/guiKeyChangeMenu.cpp #, fuzzy msgid "Autoforward" msgstr "Avancer" #: src/guiKeyChangeMenu.cpp msgid "Backward" msgstr "Reculer" #: src/guiKeyChangeMenu.cpp #, fuzzy msgid "Change camera" msgstr "Changer les touches" #: src/guiKeyChangeMenu.cpp msgid "Chat" msgstr "Chatter" #: src/guiKeyChangeMenu.cpp msgid "Command" msgstr "Commande" #: src/guiKeyChangeMenu.cpp msgid "Console" msgstr "Console" #: src/guiKeyChangeMenu.cpp #, fuzzy msgid "Dec. range" msgstr "Plage de visualisation" #: src/guiKeyChangeMenu.cpp msgid "Dec. volume" msgstr "Réduire le volume" #: src/guiKeyChangeMenu.cpp msgid "Double tap \"jump\" to toggle fly" msgstr "Double-appui sur \"saut\" pour voler" #: src/guiKeyChangeMenu.cpp msgid "Drop" msgstr "Lâcher" #: src/guiKeyChangeMenu.cpp msgid "Forward" msgstr "Avancer" #: src/guiKeyChangeMenu.cpp #, fuzzy msgid "Inc. range" msgstr "Plage de visualisation" #: src/guiKeyChangeMenu.cpp msgid "Inc. volume" msgstr "Augmenter le volume" #: src/guiKeyChangeMenu.cpp msgid "Inventory" msgstr "Inventaire" #: src/guiKeyChangeMenu.cpp msgid "Jump" msgstr "Sauter" #: src/guiKeyChangeMenu.cpp msgid "Key already in use" msgstr "Touche déjà utilisée" #: src/guiKeyChangeMenu.cpp msgid "Keybindings. (If this menu screws up, remove stuff from minetest.conf)" msgstr "Raccourcis" #: src/guiKeyChangeMenu.cpp src/keycode.cpp msgid "Left" msgstr "Gauche" #: src/guiKeyChangeMenu.cpp msgid "Local command" msgstr "Commande locale" #: src/guiKeyChangeMenu.cpp msgid "Mute" msgstr "Muet" #: src/guiKeyChangeMenu.cpp msgid "Next item" msgstr "Objet suivant" #: src/guiKeyChangeMenu.cpp msgid "Prev. item" msgstr "Objet précédent" #: src/guiKeyChangeMenu.cpp src/settings_translation_file.cpp msgid "Print stacks" msgstr "Afficher les stacks" #: src/guiKeyChangeMenu.cpp msgid "Range select" msgstr "Distance de vue" #: src/guiKeyChangeMenu.cpp src/keycode.cpp msgid "Right" msgstr "Droite" #: src/guiKeyChangeMenu.cpp src/settings_translation_file.cpp msgid "Screenshot" msgstr "Capture d'écran" #: src/guiKeyChangeMenu.cpp msgid "Sneak" msgstr "Marcher lentement" #: src/guiKeyChangeMenu.cpp msgid "Special" msgstr "" #: src/guiKeyChangeMenu.cpp msgid "Toggle Cinematic" msgstr "Mode cinématique" #: src/guiKeyChangeMenu.cpp #, fuzzy msgid "Toggle HUD" msgstr "Voler" #: src/guiKeyChangeMenu.cpp #, fuzzy msgid "Toggle chat log" msgstr "Mode rapide" #: src/guiKeyChangeMenu.cpp msgid "Toggle fast" msgstr "Mode rapide" #: src/guiKeyChangeMenu.cpp msgid "Toggle fly" msgstr "Voler" #: src/guiKeyChangeMenu.cpp #, fuzzy msgid "Toggle fog" msgstr "Voler" #: src/guiKeyChangeMenu.cpp #, fuzzy msgid "Toggle minimap" msgstr "Mode sans collision" #: src/guiKeyChangeMenu.cpp msgid "Toggle noclip" msgstr "Mode sans collision" #: src/guiKeyChangeMenu.cpp src/keycode.cpp msgid "Zoom" msgstr "Zoomer" #: src/guiKeyChangeMenu.cpp msgid "press key" msgstr "appuyez sur une touche" #: src/guiPasswordChange.cpp msgid "Change" msgstr "Changer" #: src/guiPasswordChange.cpp msgid "Confirm Password" msgstr "Confirmer le mot de passe" #: src/guiPasswordChange.cpp msgid "New Password" msgstr "Nouveau mot de passe" #: src/guiPasswordChange.cpp msgid "Old Password" msgstr "Ancien mot de passe" #: src/guiPasswordChange.cpp msgid "Passwords do not match!" msgstr "Les mots de passe ne correspondent pas !" #: src/guiVolumeChange.cpp msgid "Exit" msgstr "Quitter" #: src/guiVolumeChange.cpp msgid "Sound Volume: " msgstr "Volume du son : " #: src/keycode.cpp msgid "Apps" msgstr "Applications" #: src/keycode.cpp msgid "Back" msgstr "Retour" #: src/keycode.cpp msgid "Caps Lock" msgstr "Verr. Maj" #: src/keycode.cpp msgid "Clear" msgstr "Vider" #: src/keycode.cpp msgid "Control" msgstr "Contrôle" #: src/keycode.cpp msgid "Down" msgstr "Bas" #: src/keycode.cpp msgid "End" msgstr "Fin" #: src/keycode.cpp msgid "Erase EOF" msgstr "Écraser l'EOF" #: src/keycode.cpp msgid "Execute" msgstr "Exécuter" #: src/keycode.cpp msgid "Help" msgstr "Aide" #: src/keycode.cpp msgid "Home" msgstr "Origine" #: src/keycode.cpp msgid "IME Accept" msgstr "Accepter IME" #: src/keycode.cpp msgid "IME Convert" msgstr "Convertir IME" #: src/keycode.cpp msgid "IME Escape" msgstr "Échap. IME" #: src/keycode.cpp msgid "IME Mode Change" msgstr "Changer de mode IME" #: src/keycode.cpp msgid "IME Nonconvert" msgstr "Non converti IME" #: src/keycode.cpp msgid "Insert" msgstr "Insérer" #: src/keycode.cpp msgid "Left Button" msgstr "Bouton gauche" #: src/keycode.cpp msgid "Left Control" msgstr "Contrôle gauche" #: src/keycode.cpp msgid "Left Menu" msgstr "Menu gauche" #: src/keycode.cpp msgid "Left Shift" msgstr "Shift gauche" #: src/keycode.cpp msgid "Left Windows" msgstr "Windows gauche" #: src/keycode.cpp msgid "Menu" msgstr "Menu" #: src/keycode.cpp msgid "Middle Button" msgstr "Bouton du milieu" #: src/keycode.cpp msgid "Next" msgstr "Suivant" #: src/keycode.cpp msgid "Num Lock" msgstr "Verr Num" #: src/keycode.cpp msgid "Numpad *" msgstr "Pavé num. *" #: src/keycode.cpp msgid "Numpad +" msgstr "Pavé num. +" #: src/keycode.cpp msgid "Numpad -" msgstr "Pavé num. -" #: src/keycode.cpp msgid "Numpad ." msgstr "Pavé num. ." #: src/keycode.cpp msgid "Numpad /" msgstr "Pavé num. /" #: src/keycode.cpp msgid "Numpad 0" msgstr "Pavé num. 0" #: src/keycode.cpp msgid "Numpad 1" msgstr "Pavé num. 1" #: src/keycode.cpp msgid "Numpad 2" msgstr "Pavé num. 2" #: src/keycode.cpp msgid "Numpad 3" msgstr "Pavé num. 3" #: src/keycode.cpp msgid "Numpad 4" msgstr "Pavé num. 4" #: src/keycode.cpp msgid "Numpad 5" msgstr "Pavé num. 5" #: src/keycode.cpp msgid "Numpad 6" msgstr "Pavé num. 6" #: src/keycode.cpp msgid "Numpad 7" msgstr "Pavé num. 7" #: src/keycode.cpp msgid "Numpad 8" msgstr "Pavé num. 8" #: src/keycode.cpp msgid "Numpad 9" msgstr "Pavé num. 9" #: src/keycode.cpp msgid "OEM Clear" msgstr "OEM Clear" #: src/keycode.cpp msgid "Pause" msgstr "Pause" #: src/keycode.cpp msgid "Play" msgstr "Jouer" #: src/keycode.cpp msgid "Print" msgstr "Imprimer" #: src/keycode.cpp msgid "Prior" msgstr "Précédent" #: src/keycode.cpp msgid "Return" msgstr "Retour" #: src/keycode.cpp msgid "Right Button" msgstr "Bouton droit" #: src/keycode.cpp msgid "Right Control" msgstr "Contrôle droite" #: src/keycode.cpp msgid "Right Menu" msgstr "Menu droite" #: src/keycode.cpp msgid "Right Shift" msgstr "Shift droit" #: src/keycode.cpp msgid "Right Windows" msgstr "Windows droite" #: src/keycode.cpp msgid "Scroll Lock" msgstr "Verr. défilement" #: src/keycode.cpp msgid "Select" msgstr "Sélectionner" #: src/keycode.cpp msgid "Shift" msgstr "Shift" #: src/keycode.cpp msgid "Sleep" msgstr "Mise en veille" #: src/keycode.cpp msgid "Snapshot" msgstr "Capture d'écran" #: src/keycode.cpp msgid "Space" msgstr "Espace" #: src/keycode.cpp msgid "Tab" msgstr "Tabulation" #: src/keycode.cpp msgid "Up" msgstr "Haut" #: src/keycode.cpp msgid "X Button 1" msgstr "Bouton X 1" #: src/keycode.cpp msgid "X Button 2" msgstr "Bouton X 2" #: src/network/clientpackethandler.cpp msgid "LANG_CODE" msgstr "fr" #: src/settings_translation_file.cpp msgid "" "(X,Y,Z) offset of fractal from world centre in units of 'scale'.\n" "Used to move a suitable spawn area of low land close to (0, 0).\n" "The default is suitable for mandelbrot sets, it needs to be edited for julia " "sets.\n" "Range roughly -2 to 2. Multiply by 'scale' for offset in nodes." msgstr "" "(X,Y,Z) décalage de fractale à partir du centre du monde en unités " "\"d'échelle\".\n" "Utilisé pour déplacer une zone de frai convenable à proximité des basses " "terres (0, 0).\n" "La valeur par défaut est adaptée pour les ensembles de Mandelbrot, elle doit " "être modifiée pour les ensembles de julia.\n" "Portée environ -2 à 2. A multiplier par \"l'échelle\" pour le décalage dans " "les nœuds." #: src/settings_translation_file.cpp msgid "" "0 = parallax occlusion with slope information (faster).\n" "1 = relief mapping (slower, more accurate)." msgstr "" "0 = occlusion parallaxe avec des informations de pente (plus rapide).\n" "1 = cartographie en relief (plus lent, plus précis)." #: src/settings_translation_file.cpp msgid "3D clouds" msgstr "Nuages 3D" #: src/settings_translation_file.cpp msgid "3D mode" msgstr "Mode écran 3D" #: src/settings_translation_file.cpp msgid "3D noise defining giant caverns." msgstr "Bruit 3D définissant les cavernes géantes." #: src/settings_translation_file.cpp msgid "" "3D noise defining mountain structure and height.\n" "Also defines structure of floatland mountain terrain." msgstr "" "Bruit 3D définissant la structure et la hauteur des montagnes.\n" "Définit également la structure des montagnes flottantes." #: src/settings_translation_file.cpp msgid "3D noise defining structure of river canyon walls." msgstr "Bruit 3D définissant la structure des gorges." #: src/settings_translation_file.cpp msgid "" "3D support.\n" "Currently supported:\n" "- none: no 3d output.\n" "- anaglyph: cyan/magenta color 3d.\n" "- interlaced: odd/even line based polarisation screen support.\n" "- topbottom: split screen top/bottom.\n" "- sidebyside: split screen side by side.\n" "- pageflip: quadbuffer based 3d." msgstr "" "Support 3D.\n" "Options :\n" "- aucun : pas de sortie 3D.\n" "- anaglyphe : couleur 3D bleu turquoise/violet.\n" "- entrelacé : polarisation basée sur des lignes avec support de l'écran.\n" "- horizontal : partage de l'écran horizontal.\n" "- vertical : partage de l'écran vertical.\n" "- pageflip: 3D basé sur quadbuffer." #: 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 "" "Une graine de génération de terrain pour un nouveau monde, laisser vide pour " "une graine aléatoire.\n" "Sera annulé lors de la création d'un nouveau monde dans le menu." #: src/settings_translation_file.cpp msgid "A message to be displayed to all clients when the server crashes." msgstr "" "Un message qui sera affiché à tous les joueurs quand le serveur s'interrompt." #: src/settings_translation_file.cpp msgid "A message to be displayed to all clients when the server shuts down." msgstr "" "Un message qui sera affiché à tous les joueurs quand le serveur s’interrompt." #: src/settings_translation_file.cpp msgid "Absolute limit of emerge queues" msgstr "Limite absolue des files émergentes" #: src/settings_translation_file.cpp msgid "Acceleration in air" msgstr "Accélération en l'air" #: src/settings_translation_file.cpp msgid "Active Block Management interval" msgstr "intervalle de gestion des blocs actifs" #: src/settings_translation_file.cpp msgid "Active Block Modifier interval" msgstr "Intervalle du modificateur de bloc actif" #: src/settings_translation_file.cpp msgid "Active Block Modifiers" msgstr "Modificateurs de bloc actif" #: src/settings_translation_file.cpp msgid "Active block range" msgstr "Portée des mapblocks actifs" #: src/settings_translation_file.cpp msgid "Active object send range" msgstr "Portée des objets actifs envoyés" #: src/settings_translation_file.cpp msgid "" "Address to connect to.\n" "Leave this blank to start a local server.\n" "Note that the address field in the main menu overrides this setting." msgstr "" "Adresse où se connecter.\n" "Laisser vide pour démarrer un serveur local.\n" "Notez que le champ de l'adresse dans le menu principal passe outre ce " "réglage." #: src/settings_translation_file.cpp msgid "Adds particles when digging a node." msgstr "Ajoute des particules lorsqu'un bloc est creusé." #: src/settings_translation_file.cpp msgid "" "Adjust dpi configuration to your screen (non X11/Android only) e.g. for 4k " "screens." msgstr "" "Ajuster la résolution de votre écran (non-X11 / Android seulement) ex. pour " "les écrans 4k." #: src/settings_translation_file.cpp msgid "" "Adjust the gamma encoding for the light tables. Higher numbers are " "brighter.\n" "This setting is for the client only and is ignored by the server." msgstr "" "Ajuster la correction gamma. Les valeurs plus basses sont plus claires.\n" "Ce paramètre s'applique au client seulement et est ignoré par le serveur." #: src/settings_translation_file.cpp msgid "Advanced" msgstr "Avancé" #: src/settings_translation_file.cpp msgid "Altitude Chill" msgstr "Refroidissement en altitude" #: src/settings_translation_file.cpp msgid "Always fly and fast" msgstr "Toujours voler et être rapide" #: src/settings_translation_file.cpp msgid "Ambient occlusion gamma" msgstr "Occlusion gamma ambiente" #: src/settings_translation_file.cpp msgid "Amplifies the valleys" msgstr "Amplifier les vallées" #: src/settings_translation_file.cpp msgid "" "Android systems only: Tries to create inventory textures from meshes\n" "when no supported render was found." msgstr "" "Android uniquement: Essaye de créer des textures d'inventaire à partir des " "meshes\n" "quand aucun gestionnaire de rendu n'est trouvé." #: src/settings_translation_file.cpp msgid "Anisotropic filtering" msgstr "Filtrage anisotrope" #: src/settings_translation_file.cpp msgid "Announce server" msgstr "Annoncer le serveur" #: src/settings_translation_file.cpp msgid "" "Announce to this serverlist.\n" "If you want to announce your ipv6 address, use serverlist_url = v6.servers." "minetest.net." msgstr "" "Annoncer à la liste des serveurs publics.\n" "Si vous voulez annoncer votre adresse IPv6, utilisez serverlist_url = v6." "servers.minetest.net." #: src/settings_translation_file.cpp msgid "Apple trees noise" msgstr "Bruit appliqué aux pommiers" #: src/settings_translation_file.cpp msgid "Approximate (X,Y,Z) scale of fractal in nodes." msgstr "Série Julia: échelles (X,Y,Z) en blocs." #: src/settings_translation_file.cpp msgid "Ask to reconnect after crash" msgstr "Demander de se reconnecter après une coupure de connexion" #: src/settings_translation_file.cpp msgid "" "At this distance the server will aggressively optimize which blocks are sent " "to clients.\n" "Small values potentially improve performance a lot, at the expense of " "visible rendering glitches.\n" "(some blocks will not be rendered under water and in caves, as well as " "sometimes on land)\n" "Setting this to a value greater than max_block_send_distance disables this " "optimization.\n" "Stated in mapblocks (16 nodes)" msgstr "" "À cette distance, le serveur va optimiser quels blocs seront envoyés aux " "clients.\n" "Des petites valeurs peuvent augmenter fortement la performance du serveur, " "mais peut\n" "provoquer l'apparition de problèmes de rendu visibles. (Certains blocs ne " "seront pas affichés\n" "sous l'eau ou dans les cavernes, ou parfois sur terre.)\n" "Rendre cette valeur supérieure à max_block_send_distance désactive cette " "optimisation.\n" "Définie en mapblocks (16 nodes)" #: src/settings_translation_file.cpp #, fuzzy msgid "Automatic forwards key" msgstr "Avancer" #: src/settings_translation_file.cpp msgid "Automaticaly report to the serverlist." msgstr "" "Déclarer automatiquement votre serveur à la liste des serveurs publics." #: src/settings_translation_file.cpp #, fuzzy msgid "Autosave Screen Size" msgstr "Sauver auto. la taile d'écran" #: src/settings_translation_file.cpp msgid "Backward key" msgstr "Reculer" #: src/settings_translation_file.cpp msgid "Base terrain height" msgstr "Hauteur du terrain de base" #: src/settings_translation_file.cpp msgid "Basic" msgstr "Principal" #: src/settings_translation_file.cpp msgid "Basic Privileges" msgstr "Privilèges par défaut" #: src/settings_translation_file.cpp msgid "Beach noise" msgstr "Bruit pour les plages" #: src/settings_translation_file.cpp msgid "Beach noise threshold" msgstr "Seuil de bruit pour les plages" #: src/settings_translation_file.cpp msgid "Bilinear filtering" msgstr "Filtrage bilinéaire" #: src/settings_translation_file.cpp msgid "Bind address" msgstr "Adresse à assigner" #: src/settings_translation_file.cpp msgid "Biome API temperature and humidity noise parameters" msgstr "Paramètres de bruit de température et d'humidité de l'API des biomes" #: src/settings_translation_file.cpp msgid "Biome noise" msgstr "Bruit des biomes" #: src/settings_translation_file.cpp msgid "Bits per pixel (aka color depth) in fullscreen mode." msgstr "Bits par pixel (profondeur de couleur) en mode plein-écran." #: src/settings_translation_file.cpp msgid "Build inside player" msgstr "Placement de bloc à la position du joueur" #: src/settings_translation_file.cpp msgid "Builtin" msgstr "Intégré" #: src/settings_translation_file.cpp msgid "Bumpmapping" msgstr "Bump mapping" #: src/settings_translation_file.cpp msgid "Camera smoothing" msgstr "Lissage du mouvement de la caméra" #: src/settings_translation_file.cpp msgid "Camera smoothing in cinematic mode" msgstr "Lissage du mouvement de la caméra en mode cinématique" #: src/settings_translation_file.cpp msgid "Camera update toggle key" msgstr "Touche de mise à jour de la caméra" #: src/settings_translation_file.cpp msgid "Cave noise" msgstr "Bruit des caves" #: src/settings_translation_file.cpp msgid "Cave noise #1" msgstr "Bruit de cave #1" #: src/settings_translation_file.cpp msgid "Cave noise #2" msgstr "Bruit de grotte #2" #: src/settings_translation_file.cpp msgid "Cave width" msgstr "Largeur de la grotte" #: src/settings_translation_file.cpp msgid "Cave1 noise" msgstr "Bruit des cave #1" #: src/settings_translation_file.cpp msgid "Cave2 noise" msgstr "Bruit des caves #2" #: src/settings_translation_file.cpp msgid "Cavern limit" msgstr "Limites des cavernes" #: src/settings_translation_file.cpp msgid "Cavern noise" msgstr "Bruit des caves" #: src/settings_translation_file.cpp msgid "Cavern taper" msgstr "Caillou de caverne" #: src/settings_translation_file.cpp msgid "Cavern threshold" msgstr "Limite des cavernes" #: src/settings_translation_file.cpp msgid "Caves and tunnels form at the intersection of the two noises" msgstr "Les grottes et tunnels se forment à l'intersection de deux bruits" #: src/settings_translation_file.cpp msgid "Chat key" msgstr "Chatter" #: src/settings_translation_file.cpp msgid "Chat toggle key" msgstr "Afficher le chat" #: src/settings_translation_file.cpp msgid "Chatcommands" msgstr "Commandes de chat" #: src/settings_translation_file.cpp msgid "" "Choice of 18 fractals from 9 formulas.\n" "1 = 4D \"Roundy\" mandelbrot set.\n" "2 = 4D \"Roundy\" julia set.\n" "3 = 4D \"Squarry\" mandelbrot set.\n" "4 = 4D \"Squarry\" julia set.\n" "5 = 4D \"Mandy Cousin\" mandelbrot set.\n" "6 = 4D \"Mandy Cousin\" julia set.\n" "7 = 4D \"Variation\" mandelbrot set.\n" "8 = 4D \"Variation\" julia set.\n" "9 = 3D \"Mandelbrot/Mandelbar\" mandelbrot set.\n" "10 = 3D \"Mandelbrot/Mandelbar\" julia set.\n" "11 = 3D \"Christmas Tree\" mandelbrot set.\n" "12 = 3D \"Christmas Tree\" julia set.\n" "13 = 3D \"Mandelbulb\" mandelbrot set.\n" "14 = 3D \"Mandelbulb\" julia set.\n" "15 = 3D \"Cosine Mandelbulb\" mandelbrot set.\n" "16 = 3D \"Cosine Mandelbulb\" julia set.\n" "17 = 4D \"Mandelbulb\" mandelbrot set.\n" "18 = 4D \"Mandelbulb\" julia set." msgstr "" "Choix de 18 fractales provenant de 9 formules.\n" "1 = réglage Mandelbrot \"Roundy\" 4D.\n" "2 = réglage Julia \"Roundy\" 4D.\n" "3 = réglage Mandelbrot \"Squarry\" 4D.\n" "4 = réglage Julia \"Squarry\" 4D.\n" "5 = réglage Mandelbrot \"Cousin Mandy\" 4D.\n" "6 = réglage Julia \"Cousin Mandy\" 4D.\n" "7 = réglage Mandelbrot \"Variation\" 4D.\n" "8 = réglage Julia \"Variation\" 4D.\n" "9 = réglage Mandelbrot \"Mandelbrot/Mandelbar\" 3D.\n" "10 = réglage Julia \"Mandelbrot/Mandelbar\" 3D.\n" "11 = réglage Mandelbrot \"Christmas Tree\" 3D.\n" "12 = réglage Julia \"Christmas Tree\" 3D.\n" "13 = réglage Mandelbrot \"Mandelbulb\" 3D.\n" "14 = réglage Julia \"Mandelbulb\" 3D.\n" "15 = réglage Mandelbrot \"Cosine Mandelbulb\" 3D.\n" "16 = réglage Julia \"Cosine Mandelbulb\" 3D.\n" "17 = réglage Mandelbrot \"Mandelbulb\" 4D.\n" "18 = réglage Julia \"Mandelbulb\" 4D." #: src/settings_translation_file.cpp msgid "Chunk size" msgstr "Taille des chunks" #: src/settings_translation_file.cpp msgid "Cinematic mode" msgstr "Mode cinématique" #: src/settings_translation_file.cpp msgid "Cinematic mode key" msgstr "Mode cinématique" #: src/settings_translation_file.cpp msgid "Clean transparent textures" msgstr "Textures transparentes filtrées" #: src/settings_translation_file.cpp msgid "Client" msgstr "Client" #: src/settings_translation_file.cpp msgid "Client and Server" msgstr "Client et Serveur" #: src/settings_translation_file.cpp msgid "Client modding" msgstr "Personnalisation client" #: src/settings_translation_file.cpp msgid "Climbing speed" msgstr "Vitesse d'escalade du joueur" #: src/settings_translation_file.cpp msgid "Cloud height" msgstr "Hauteur des nuages" #: src/settings_translation_file.cpp msgid "Cloud radius" msgstr "Niveau de détails des nuages" #: src/settings_translation_file.cpp msgid "Clouds" msgstr "Nuages" #: src/settings_translation_file.cpp msgid "Clouds are a client side effect." msgstr "Les nuages ont un effet sur le client exclusivement." #: src/settings_translation_file.cpp msgid "Clouds in menu" msgstr "Nuages dans le menu" #: src/settings_translation_file.cpp msgid "Colored fog" msgstr "Brume colorée" #: 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 "" "Liste des mods de confiance séparés par des virgules qui sont autorisés à " "accéder\n" "aux API HTTP, leur permettant d'envoyer et de télécharger des données vers/" "depuis Internet." #: 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 "" "Liste séparée par des virgules des mods de confiance qui sont autorisés à " "accéder aux fonctions non\n" "sécurisées même lorsque l'option de sécurisation des mods est activée (via " "request_insecure_environment())." #: src/settings_translation_file.cpp msgid "Command key" msgstr "Commande" #: src/settings_translation_file.cpp msgid "Connect glass" msgstr "Verre unifié" #: src/settings_translation_file.cpp msgid "Connect to external media server" msgstr "Se connecter à un serveur de média externe" #: src/settings_translation_file.cpp msgid "Connects glass if supported by node." msgstr "Unifier le verre si le bloc le permet." #: src/settings_translation_file.cpp msgid "Console alpha" msgstr "Opacité du fond de la console de jeu" #: src/settings_translation_file.cpp msgid "Console color" msgstr "Couleur de la console de jeu" #: src/settings_translation_file.cpp msgid "Console height" msgstr "Hauteur de la console" #: src/settings_translation_file.cpp msgid "Console key" msgstr "Console de jeu" #: src/settings_translation_file.cpp msgid "Continuous forward" msgstr "Avancer en continu" #: src/settings_translation_file.cpp #, fuzzy msgid "Continuous forward movement, toggled by autoforward key." msgstr "Mouvement avant permanent (seulement utilisé pour des tests)." #: src/settings_translation_file.cpp msgid "Controls" msgstr "Touches de contrôle" #: src/settings_translation_file.cpp msgid "" "Controls length of day/night cycle.\n" "Examples: 72 = 20min, 360 = 4min, 1 = 24hour, 0 = day/night/whatever stays " "unchanged." msgstr "" "Durée complet du cycle jour/nuit.\n" "Exemples : 72 = 20 minutes, 360 = 4 minutes, 1 = 24 heures, 0 = jour ou nuit " "reste figé(e)." #: src/settings_translation_file.cpp msgid "Controls steepness/depth of lake depressions." msgstr "Contrôle l'élévation/profondeur des dépressions lacustres." #: src/settings_translation_file.cpp msgid "Controls steepness/height of hills." msgstr "Contrôle l'élévation/hauteur des collines." #: src/settings_translation_file.cpp msgid "" "Controls the density of floatland mountain terrain.\n" "Is an offset added to the 'np_mountain' noise value." msgstr "" "Contrôle la densité des terrains montagneux sur les terres flottantes.\n" "C'est un décalage ajouté à la valeur de bruit 'np_mountain'." #: src/settings_translation_file.cpp msgid "Controls width of tunnels, a smaller value creates wider tunnels." msgstr "" "Contrôle la largeur des tunnels, une valeur plus petite crée des tunnels " "plus larges." #: src/settings_translation_file.cpp msgid "Crash message" msgstr "Message d'interruption du serveur" #: src/settings_translation_file.cpp msgid "" "Creates unpredictable lava features in caves.\n" "These can make mining difficult. Zero disables them. (0-10)" msgstr "" "Crée des zones imprévisibles de lave dans les caves.\n" "Elles rendent le minage plus difficile. 0 les désactivent. (0-10)" #: src/settings_translation_file.cpp msgid "" "Creates unpredictable water features in caves.\n" "These can make mining difficult. Zero disables them. (0-10)" msgstr "" "Crée des zones aquatiques imprévisibles dans les caves.\n" "Elles rendent le minage plus difficile. 0 les désactivent. (0-10)" #: src/settings_translation_file.cpp msgid "Creative" msgstr "Créatif" #: src/settings_translation_file.cpp msgid "Crosshair alpha" msgstr "Opacité du réticule" #: src/settings_translation_file.cpp msgid "Crosshair alpha (opaqueness, between 0 and 255)." msgstr "Opacité du réticule (entre 0 et 255)." #: src/settings_translation_file.cpp msgid "Crosshair color" msgstr "Couleur du réticule" #: src/settings_translation_file.cpp msgid "Crosshair color (R,G,B)." msgstr "Couleur du réticule (R,G,B)." #: src/settings_translation_file.cpp msgid "Crouch speed" msgstr "Vitesse du joueur en position accroupie" #: src/settings_translation_file.cpp msgid "DPI" msgstr "DPI" #: src/settings_translation_file.cpp msgid "Damage" msgstr "Dégâts" #: src/settings_translation_file.cpp #, fuzzy msgid "Darkness sharpness" msgstr "Pic du lac" #: src/settings_translation_file.cpp msgid "Debug info toggle key" msgstr "Infos de débogage" #: src/settings_translation_file.cpp msgid "Debug log level" msgstr "Niveau de détails des infos de débogage" #: src/settings_translation_file.cpp msgid "Dec. volume key" msgstr "Touche pour diminuer le volume" #: src/settings_translation_file.cpp msgid "Dedicated server step" msgstr "Intervalle de mise à jour des objets sur le serveur" #: src/settings_translation_file.cpp msgid "Default acceleration" msgstr "Vitesse d’accélération par défaut" #: src/settings_translation_file.cpp msgid "Default game" msgstr "Jeu par défaut" #: src/settings_translation_file.cpp msgid "" "Default game when creating a new world.\n" "This will be overridden when creating a world from the main menu." msgstr "" "Jeu par défaut lors de la création d'un nouveau monde.\n" "Sera annulé lors de la création d'un nouveau monde dans le menu." #: src/settings_translation_file.cpp msgid "Default password" msgstr "Mot de passe par défaut" #: src/settings_translation_file.cpp msgid "Default privileges" msgstr "Privilèges par défaut" #: src/settings_translation_file.cpp msgid "Default report format" msgstr "Format de rapport par défaut" #: src/settings_translation_file.cpp msgid "" "Default timeout for cURL, stated in milliseconds.\n" "Only has an effect if compiled with cURL." msgstr "" "Délais d'interruption de cURL par défaut, établi en millisecondes.\n" "Seulement appliqué si Minetest est compilé avec cURL." #: src/settings_translation_file.cpp msgid "Defines areas of 'terrain_higher' (cliff-top terrain)." msgstr "Définit des zones de 'terrain_higher' (terrains de falaises)." #: src/settings_translation_file.cpp msgid "" "Defines areas of floatland smooth terrain.\n" "Smooth floatlands occur when noise > 0." msgstr "" #: src/settings_translation_file.cpp msgid "" "Defines areas of higher (cliff-top) terrain and affects steepness of cliffs." msgstr "" #: src/settings_translation_file.cpp msgid "Defines areas where trees have apples." msgstr "Définit des zones où les arbres ont des pommes." #: src/settings_translation_file.cpp msgid "Defines areas with sandy beaches." msgstr "Définit des zones où on trouve des plages de sable." #: src/settings_translation_file.cpp msgid "Defines full size of caverns, smaller values create larger caverns." msgstr "" #: src/settings_translation_file.cpp msgid "Defines large-scale river channel structure." msgstr "Définit la structure des canaux fluviaux à grande échelle." #: src/settings_translation_file.cpp msgid "Defines location and terrain of optional hills and lakes." msgstr "" "Définit l'emplacement et le terrain des collines facultatives et des lacs." #: src/settings_translation_file.cpp msgid "" "Defines sampling step of texture.\n" "A higher value results in smoother normal maps." msgstr "" "Niveau de lissage des normal maps.\n" "Une valeur plus grande lisse davantage les normal maps." #: src/settings_translation_file.cpp msgid "Defines the maximal player transfer distance in blocks (0 = unlimited)." msgstr "" "Détermine la distance maximale de transfert du joueur en mapblocks (0 = " "illimité)." #: src/settings_translation_file.cpp msgid "Defines tree areas and tree density." msgstr "Définit des zones avec arbres et leur densité." #: src/settings_translation_file.cpp msgid "" "Delay between mesh updates on the client in ms. Increasing this will slow\n" "down the rate of mesh updates, thus reducing jitter on slower clients." msgstr "" #: src/settings_translation_file.cpp msgid "Delay in sending blocks after building" msgstr "Retard dans les blocs envoyés après la construction" #: src/settings_translation_file.cpp msgid "Delay showing tooltips, stated in milliseconds." msgstr "Latence d'apparition des infobulles, établie en millisecondes." #: src/settings_translation_file.cpp msgid "Deprecated Lua API handling" msgstr "Traitement d'API Lua obsolète(s)" #: src/settings_translation_file.cpp msgid "Depth below which you'll find large caves." msgstr "Profondeur en-dessous duquel se trouvent de grandes caves." #: src/settings_translation_file.cpp msgid "Depth below which you'll find massive caves." msgstr "Profondeur en-dessous duquel se trouvent des caves massives." #: src/settings_translation_file.cpp msgid "" "Description of server, to be displayed when players join and in the " "serverlist." msgstr "Description du serveur affichée sur la liste des serveurs." #: src/settings_translation_file.cpp msgid "Desert noise threshold" msgstr "Limite de bruit pour le désert" #: src/settings_translation_file.cpp msgid "" "Deserts occur when np_biome exceeds this value.\n" "When the new biome system is enabled, this is ignored." msgstr "" #: src/settings_translation_file.cpp msgid "Desynchronize block animation" msgstr "Désynchroniser les textures animées par mapblock" #: src/settings_translation_file.cpp msgid "Digging particles" msgstr "Particules au minage" #: src/settings_translation_file.cpp msgid "Disable anticheat" msgstr "Désactiver l'anti-triche" #: src/settings_translation_file.cpp msgid "Disallow empty passwords" msgstr "Refuser les mots de passe vides" #: src/settings_translation_file.cpp msgid "Domain name of server, to be displayed in the serverlist." msgstr "Nom de domaine du serveur affichée sur la liste des serveurs publics." #: src/settings_translation_file.cpp msgid "Double tap jump for fly" msgstr "Double-appui sur \"saut\" pour voler" #: src/settings_translation_file.cpp msgid "Double-tapping the jump key toggles fly mode." msgstr "Double-appui sur \"saut\" pour voler." #: src/settings_translation_file.cpp msgid "Drop item key" msgstr "Lâcher" #: src/settings_translation_file.cpp msgid "Dump the mapgen debug infos." msgstr "Afficher les infos de débogage de la génération de terrain." #: src/settings_translation_file.cpp msgid "Enable Joysticks" msgstr "Activer souris" #: src/settings_translation_file.cpp msgid "" "Enable Lua modding support on client.\n" "This support is experimental and API can change." msgstr "" "Active le support des mods Lua sur le client.\n" "Ce support est expérimental et l'API peut changer." #: src/settings_translation_file.cpp msgid "Enable VBO" msgstr "Activer Vertex Buffer Object: objet tampon de vertex" #: src/settings_translation_file.cpp msgid "Enable console window" msgstr "Activer la console" #: src/settings_translation_file.cpp msgid "Enable creative mode for new created maps." msgstr "Activer le mode créatif pour les cartes nouvellement créées." #: src/settings_translation_file.cpp msgid "Enable mod security" msgstr "Activer la sécurisation des mods" #: src/settings_translation_file.cpp msgid "Enable players getting damage and dying." msgstr "Active les dégâts et la mort des joueurs." #: src/settings_translation_file.cpp msgid "Enable random user input (only used for testing)." msgstr "" "Active l'entrée aléatoire du joueur (seulement utilisé pour des tests)." #: src/settings_translation_file.cpp msgid "" "Enable smooth lighting with simple ambient occlusion.\n" "Disable for speed or for different looks." msgstr "" "Active l'éclairage doux avec une occlusion ambiante simple.\n" "Désactiver pour davantage de performances." #: 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 "" "Activer pour empêcher les anciens clients de se connecter.\n" "Les anciens clients sont compatibles dans le sens où ils ne s'interrompent " "pas lors de la connexion\n" "aux serveurs récents, mais ils peuvent ne pas supporter certaines " "fonctionnalités." #: 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 "" "Activer l'usage d'un serveur de média distant (si pourvu par le serveur).\n" "Les serveurs de média distants offrent un moyen significativement plus " "rapide de télécharger\n" "des données média (ex.: textures) lors de la connexion au serveur." #: 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 "" "Facteur de mouvement de bras.\n" "Par exemple : 0 = pas de mouvement, 1 = normal, 2 = double." #: src/settings_translation_file.cpp msgid "" "Enable/disable running an IPv6 server. An IPv6 server may be restricted\n" "to IPv6 clients, depending on system configuration.\n" "Ignored if bind_address is set." msgstr "" "Active/désactive l'usage d'un serveur IPv6. Un serveur IPv6 peut être " "restreint\n" "aux clients IPv6, selon leur configuration système.\n" "Ignoré si bind_address est paramétré." #: src/settings_translation_file.cpp msgid "Enables animation of inventory items." msgstr "Active la rotation des items d'inventaire." #: src/settings_translation_file.cpp msgid "" "Enables bumpmapping for textures. Normalmaps need to be supplied by the " "texture pack\n" "or need to be auto-generated.\n" "Requires shaders to be enabled." msgstr "" "Active le bumpmapping pour les textures.\n" "Les normalmaps peuvent être fournies par un pack de textures pour un " "meilleur effet de relief,\n" "ou bien celui-ci est auto-généré.\n" "Nécessite les shaders pour être activé." #: src/settings_translation_file.cpp msgid "Enables caching of facedir rotated meshes." msgstr "Active la mise en cache des meshnodes." #: src/settings_translation_file.cpp msgid "Enables filmic tone mapping" msgstr "Autorise le mappage tonal cinématographique" #: src/settings_translation_file.cpp msgid "Enables minimap." msgstr "Active la mini-carte." #: src/settings_translation_file.cpp msgid "" "Enables on the fly normalmap generation (Emboss effect).\n" "Requires bumpmapping to be enabled." msgstr "" "Active la génération à la volée des normalmaps.\n" "Nécessite le bumpmapping pour être activé." #: src/settings_translation_file.cpp msgid "" "Enables parallax occlusion mapping.\n" "Requires shaders to be enabled." msgstr "" "Active l'occlusion parallaxe.\n" "Nécessite les shaders pour être activé." #: src/settings_translation_file.cpp msgid "Engine profiling data print interval" msgstr "Intervalle d'impression des données du moteur de profil" #: src/settings_translation_file.cpp msgid "Entity methods" msgstr "Systèmes d'entité" #: src/settings_translation_file.cpp msgid "" "Experimental option, might cause visible spaces between blocks\n" "when set to higher number than 0." msgstr "" "Option expérimentale, peut causer un espace vide visible entre les blocs\n" "quand paramétré avec un nombre supérieur à 0." #: src/settings_translation_file.cpp msgid "FPS in pause menu" msgstr "FPS maximum sur le menu pause" #: src/settings_translation_file.cpp msgid "FSAA" msgstr "FSAA" #: src/settings_translation_file.cpp msgid "Factor noise" msgstr "Facteur de bruit" #: src/settings_translation_file.cpp msgid "Fall bobbing factor" msgstr "Intensité du mouvement de tête en tombant" #: src/settings_translation_file.cpp msgid "Fallback font" msgstr "Police alternative" #: src/settings_translation_file.cpp msgid "Fallback font shadow" msgstr "Ombre de la police alternative" #: src/settings_translation_file.cpp msgid "Fallback font shadow alpha" msgstr "Opacité de l'ombre de la police alternative" #: src/settings_translation_file.cpp msgid "Fallback font size" msgstr "Taille de la police alternative" #: src/settings_translation_file.cpp msgid "Fast key" msgstr "Mode rapide" #: src/settings_translation_file.cpp msgid "Fast mode acceleration" msgstr "Accélération en mode rapide" #: src/settings_translation_file.cpp msgid "Fast mode speed" msgstr "Vitesse en mode rapide" #: src/settings_translation_file.cpp msgid "Fast movement" msgstr "Mouvement rapide" #: src/settings_translation_file.cpp msgid "" "Fast movement (via use key).\n" "This requires the \"fast\" privilege on the server." msgstr "" "Mouvement rapide (via la touche utiliser).\n" "Nécessite le privilège \"fast\" sur un serveur." #: src/settings_translation_file.cpp msgid "Field of view" msgstr "Champ de vision" #: src/settings_translation_file.cpp msgid "Field of view for zoom" msgstr "Champ de vision du zoom" #: src/settings_translation_file.cpp msgid "Field of view in degrees." msgstr "Champ de vision en degrés." #: src/settings_translation_file.cpp msgid "" "Field of view while zooming in degrees.\n" "This requires the \"zoom\" privilege on the server." msgstr "" "Champ de vision en degrés pendant le zoom. \n" "Ceci nécessite le privilège \"zoom\" sur le serveur." #: src/settings_translation_file.cpp msgid "" "File in client/serverlist/ that contains your favorite servers displayed in " "the Multiplayer Tab." msgstr "" "Fichier localisé dans /client/serverlist contenant vos serveurs favoris dans " "l'onglet multijoueur." #: src/settings_translation_file.cpp msgid "Filler Depth" msgstr "Profondeur du remplissage" #: src/settings_translation_file.cpp msgid "Filler depth noise" msgstr "Bruit de profondeur de remplissage" #: src/settings_translation_file.cpp msgid "Filmic tone mapping" msgstr "Mappage tonal cinématographique" #: src/settings_translation_file.cpp msgid "" "Filtered textures can blend RGB values with fully-transparent neighbors,\n" "which PNG optimizers usually discard, sometimes resulting in a dark or\n" "light edge to transparent textures. Apply this filter to clean that up\n" "at texture load time." msgstr "" "Les textures filtrées peuvent mélanger des valeurs RGB avec des zones 100% " "transparentes.\n" "aboutissant parfois à des bords foncés ou clairs sur les textures " "transparentes.\n" "Appliquer ce filtre pour nettoyer cela au chargement de la texture." #: src/settings_translation_file.cpp msgid "Filtering" msgstr "Filtrage" #: src/settings_translation_file.cpp msgid "First of 2 3D noises that together define tunnels." msgstr "Le premier des deux bruits 3D qui définissent ensemble les tunnels." #: src/settings_translation_file.cpp msgid "Fixed map seed" msgstr "Graine de génération de terrain déterminée" #: src/settings_translation_file.cpp msgid "Floatland base height noise" msgstr "Le bruit de hauteur de base des terres flottantes" #: src/settings_translation_file.cpp msgid "Floatland base noise" msgstr "Le bruit de base des terres flottantes" #: src/settings_translation_file.cpp msgid "Floatland level" msgstr "Hauteur des terrains flottants" #: src/settings_translation_file.cpp msgid "Floatland mountain density" msgstr "Densité des montagnes flottantes" #: src/settings_translation_file.cpp msgid "Floatland mountain height" msgstr "Hauteur des montagnes flottantes" #: src/settings_translation_file.cpp msgid "Fly key" msgstr "Voler" #: src/settings_translation_file.cpp msgid "Flying" msgstr "Voler" #: src/settings_translation_file.cpp msgid "Fog" msgstr "Brume" #: src/settings_translation_file.cpp msgid "Fog Start" msgstr "Début du brouillard" #: src/settings_translation_file.cpp msgid "Fog toggle key" msgstr "Brume" #: src/settings_translation_file.cpp msgid "Font path" msgstr "Chemin du fichier de police" #: src/settings_translation_file.cpp msgid "Font shadow" msgstr "Ombre de la police" #: src/settings_translation_file.cpp msgid "Font shadow alpha" msgstr "Opacité de l'ombre de la police" #: src/settings_translation_file.cpp msgid "Font shadow alpha (opaqueness, between 0 and 255)." msgstr "Niveau d'opacité de l'ombre de la police (entre 0 et 255)." #: src/settings_translation_file.cpp msgid "Font shadow offset, if 0 then shadow will not be drawn." msgstr "" "Décalage de l'ombre de la police, si 0 est choisi alors l'ombre ne " "s'affichera pas." #: src/settings_translation_file.cpp msgid "Font size" msgstr "Taille de la police" #: src/settings_translation_file.cpp msgid "Format of screenshots." msgstr "Format de captures d'écran." #: src/settings_translation_file.cpp msgid "Forward key" msgstr "Avancer" #: src/settings_translation_file.cpp msgid "Fractal type" msgstr "Type fractal" #: src/settings_translation_file.cpp msgid "Fraction of the visible distance at which fog starts to be rendered" msgstr "" "Fraction de la distance de vue à partir de laquelle le brouillard est affiché" #: src/settings_translation_file.cpp msgid "Freetype fonts" msgstr "Polices Freetype" #: src/settings_translation_file.cpp msgid "" "From how far blocks are generated for clients, stated in mapblocks (16 " "nodes)." msgstr "" "Distance maximale de génération des mapblocks (16^3 blocs) depuis la " "position du client." #: src/settings_translation_file.cpp msgid "" "From how far blocks are sent to clients, stated in mapblocks (16 nodes)." msgstr "" "Distance maximale d'envoi des mapblocks aux clients, établie en mapblocks " "(16^3 blocs)." #: src/settings_translation_file.cpp msgid "" "From how far clients know about objects, stated in mapblocks (16 nodes)." msgstr "" "Distance maximale d'envoi de données sur les objets aux clients, établie en " "mapblocks (16^3 blocs)." #: src/settings_translation_file.cpp msgid "Full screen" msgstr "Plein écran" #: src/settings_translation_file.cpp msgid "Full screen BPP" msgstr "Bits par pixel en mode plein écran" #: src/settings_translation_file.cpp msgid "Fullscreen mode." msgstr "Mode plein écran." #: src/settings_translation_file.cpp msgid "GUI scaling" msgstr "Taille du GUI" #: src/settings_translation_file.cpp msgid "GUI scaling filter" msgstr "Filtrage des images du GUI" #: src/settings_translation_file.cpp msgid "GUI scaling filter txr2img" msgstr "Filtrage txr2img du GUI" #: src/settings_translation_file.cpp msgid "Gamma" msgstr "Gamma" #: src/settings_translation_file.cpp msgid "General" msgstr "Général" #: src/settings_translation_file.cpp msgid "Generate normalmaps" msgstr "Normal mapping" #: src/settings_translation_file.cpp msgid "Global callbacks" msgstr "Rappels globaux" #: src/settings_translation_file.cpp msgid "" "Global map generation attributes.\n" "In Mapgen v6 the 'decorations' flag controls all decorations except trees\n" "and junglegrass, in all other mapgens this flag controls all decorations.\n" "Flags that are not specified in the flag string are not modified from the " "default.\n" "Flags starting with 'no' are used to explicitly disable them." msgstr "" "Attributs de génération de terrain globaux.\n" "Dans le générateur de terrain V6, le drapeau 'décorations' contrôle toutes " "les décorations sauf les arbres\n" "et l'herbe de la jungle, dans tous les autres générateurs de terrain, ce " "drapeau contrôle toutes les décorations.\n" "La chaîne de drapeaux modifie les paramètres par défaut du moteur.\n" "Les drapeaux qui ne sont spécifiés dans le champ gardent leurs valeurs par " "défaut.\n" "Les drapeaux commençant par \"non\" sont désactivés." #: src/settings_translation_file.cpp msgid "Graphics" msgstr "Options graphiques" #: src/settings_translation_file.cpp msgid "Gravity" msgstr "Gravité" #: src/settings_translation_file.cpp msgid "Ground level" msgstr "Niveau du sol" #: src/settings_translation_file.cpp msgid "HTTP Mods" msgstr "Mods utilisant le protocole de transfert hypertexte" #: src/settings_translation_file.cpp msgid "HUD scale factor" msgstr "Facteur mise à l'échelle du HUD" #: src/settings_translation_file.cpp msgid "HUD toggle key" msgstr "HUD" #: src/settings_translation_file.cpp msgid "" "Handling for deprecated lua api calls:\n" "- legacy: (try to) mimic old behaviour (default for release).\n" "- log: mimic and log backtrace of deprecated call (default for debug).\n" "- error: abort on usage of deprecated call (suggested for mod developers)." msgstr "" "Traitement des appels d'API Lua obsolètes :\n" "- legacy : imite l'ancien comportement (par défaut en mode release).\n" "- log : imite et enregistre les appels obsolètes (par défaut en mode " "debug).\n" "- error : interruption à l'usage d'un appel obsolète (recommandé pour les " "développeurs de mods)." #: 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 "" "Auto-instrumentaliser le profileur:\n" "* Instrumentalise une fonction vide.\n" "La surcharge sera évaluée. (l'auto-instrumentalisation ajoute 1 appel de " "fonction à chaque fois).\n" "* Instrumentalise l’échantillonneur utilisé pour mettre à jour les " "statistiques." #: src/settings_translation_file.cpp msgid "Heat blend noise" msgstr "Bruit de mélange de chaleur" #: src/settings_translation_file.cpp msgid "Heat noise" msgstr "Bruit de chaleur" #: src/settings_translation_file.cpp msgid "Height component of the initial window size." msgstr "Résolution verticale de la fenêtre de jeu." #: src/settings_translation_file.cpp msgid "Height noise" msgstr "Bruit de hauteur" #: src/settings_translation_file.cpp msgid "Height on which clouds are appearing." msgstr "Hauteur des nuages dans le jeu." #: src/settings_translation_file.cpp msgid "Height select noise" msgstr "Bruit de sélection de hauteur" #: src/settings_translation_file.cpp msgid "High-precision FPU" msgstr "FPU de haute précision" #: src/settings_translation_file.cpp msgid "Hill steepness" msgstr "Pente des collines" #: src/settings_translation_file.cpp msgid "Hill threshold" msgstr "Seuil des collines" #: src/settings_translation_file.cpp msgid "Homepage of server, to be displayed in the serverlist." msgstr "Adresse web du serveur affichée sur la liste des serveurs." #: src/settings_translation_file.cpp msgid "Hotbar next key" msgstr "Touche suivant sur la barre d'actions" #: src/settings_translation_file.cpp msgid "Hotbar previous key" msgstr "Touche précédent sur la barre d'actions" #: src/settings_translation_file.cpp msgid "How deep to make rivers" msgstr "Profondeur des rivières" #: src/settings_translation_file.cpp msgid "" "How large area of blocks are subject to the active block stuff, stated in " "mapblocks (16 nodes).\n" "In active blocks objects are loaded and ABMs run." msgstr "" "Largeur des aires de mapblocks qui sont sujets à être gardés actifs, établie " "en mapblocks (16^3 blocs).\n" "Les mapblocks actifs sont chargés et les ABMs y sont actifs." #: src/settings_translation_file.cpp msgid "" "How much the server will wait before unloading unused mapblocks.\n" "Higher value is smoother, but will use more RAM." msgstr "" "Délais maximum jusqu'où le serveur va attendre avant de purger les mapblocks " "inactifs.\n" "Une valeur plus grande est plus confortable, mais utilise davantage de " "mémoire." #: src/settings_translation_file.cpp msgid "How wide to make rivers" msgstr "Largeur des rivières" #: src/settings_translation_file.cpp msgid "Humidity blend noise" msgstr "Bruit de fusion d'humidité" #: src/settings_translation_file.cpp msgid "Humidity noise" msgstr "Bruit d'humidité" #: src/settings_translation_file.cpp msgid "Humidity variation for biomes." msgstr "Variation d'humidité pour les biomes." #: src/settings_translation_file.cpp msgid "IPv6" msgstr "IPv6" #: src/settings_translation_file.cpp msgid "IPv6 server" msgstr "Serveur IPv6" #: src/settings_translation_file.cpp msgid "IPv6 support." msgstr "Support IPv6." #: src/settings_translation_file.cpp msgid "" "If FPS would go higher than this, limit it by sleeping\n" "to not waste CPU power for no benefit." msgstr "" "Si le nombre d'images par seconde (FPS) veut aller au-delà de cette valeur, " "il est limité\n" "pour ne pas gaspiller inutilement les ressources du processeur." #: src/settings_translation_file.cpp msgid "" "If disabled \"use\" key is used to fly fast if both fly and fast mode are " "enabled." msgstr "" "Si désactivé la touche \"Utiliser\" est utilisée pour voler + mode rapide " "(si ceux-ci sont activés)." #: src/settings_translation_file.cpp msgid "" "If enabled the server will perform map block occlusion culling based on\n" "on the eye position of the player. This can reduce the number of blocks\n" "sent to the client 50-80%. The client will not longer receive most " "invisible\n" "so that the utility of noclip mode is reduced." msgstr "" "Si activé, le serveur n'enverra pas les blocs qui ne sont pas visibles par\n" "le client en fonction de sa position. Cela peut réduire de 50% à 80%\n" "le nombre de blocs envoyés. Le client ne pourra plus voir ces blocs à moins\n" "de se déplacer, ce qui réduit l'efficacité des tricheries du style \"noclip" "\"." #: src/settings_translation_file.cpp msgid "" "If enabled together with fly mode, player is able to fly through solid " "nodes.\n" "This requires the \"noclip\" privilege on the server." msgstr "" "Si activé avec le mode vol, le joueur sera capable de traverser les blocs " "solides en volant." #: src/settings_translation_file.cpp msgid "" "If enabled, \"use\" key instead of \"sneak\" key is used for climbing down " "and descending." msgstr "" "Si activé, la touche \"Utiliser\" est utilisée à la place de la touche " "\"Sneak\" pour monter ou descendre." #: src/settings_translation_file.cpp msgid "" "If enabled, actions are recorded for rollback.\n" "This option is only read when server starts." msgstr "" "Si activé, les actions sont enregistrés pour une restauration éventuelle.\n" "Cette option est seulement activé quand le serveur démarre." #: src/settings_translation_file.cpp msgid "If enabled, disable cheat prevention in multiplayer." msgstr "Si activé, cela désactive la détection anti-triche en multijoueur." #: src/settings_translation_file.cpp msgid "" "If enabled, invalid world data won't cause the server to shut down.\n" "Only enable this if you know what you are doing." msgstr "" "Si activé, les données invalides du monde ne causeront pas l'interruption du " "serveur.\n" "Activer seulement si vous sachez ce que vous faites." #: src/settings_translation_file.cpp msgid "If enabled, new players cannot join with an empty password." msgstr "" "Si activé, les nouveaux joueurs ne pourront pas se connecter avec un mot de " "passe vide." #: src/settings_translation_file.cpp msgid "If enabled, show the server status message on player connection." msgstr "" "Si activé, afficher le message de statut du serveur lorsqu'un joueur se " "connecte." #: src/settings_translation_file.cpp msgid "" "If enabled, you can place blocks at the position (feet + eye level) where " "you stand.\n" "This is helpful when working with nodeboxes in small areas." msgstr "" "Si activé, vous pourrez placer des blocs à la position où vous êtes.\n" "C'est utile quand vous travaillez avec des modèles nodebox dans des zones " "exiguës." #: src/settings_translation_file.cpp msgid "If this is set, players will always (re)spawn at the given position." msgstr "Détermine les coordonnées où les joueurs vont toujours réapparaître." #: src/settings_translation_file.cpp msgid "Ignore world errors" msgstr "Ignorer les erreurs du monde" #: src/settings_translation_file.cpp msgid "In-Game" msgstr "Dans le jeu" #: src/settings_translation_file.cpp msgid "In-game chat console background alpha (opaqueness, between 0 and 255)." msgstr "Opacité de fond de la console du jeu (entre 0 et 255)." #: src/settings_translation_file.cpp msgid "In-game chat console background color (R,G,B)." msgstr "Couleur de fond de la console du jeu (R,G,B)." #: src/settings_translation_file.cpp msgid "In-game chat console height, between 0.1 (10%) and 1.0 (100%)." msgstr "Hauteur de la console de tchat du jeu, entre 0.1 (10%) et 1.0 (100%)." #: src/settings_translation_file.cpp msgid "Inc. volume key" msgstr "Touche d'augmentation de volume" #: src/settings_translation_file.cpp msgid "" "Instrument builtin.\n" "This is usually only needed by core/builtin contributors" msgstr "" "Instrument d'intégration.\n" "Ceci est habituellement nécessaire pour les contributeurs d'intégration au " "noyau" #: src/settings_translation_file.cpp msgid "Instrument chatcommands on registration." msgstr "Instrument d'enregistrement des commandes de chat." #: src/settings_translation_file.cpp msgid "" "Instrument global callback functions on registration.\n" "(anything you pass to a minetest.register_*() function)" msgstr "" "Instrument des fonctions de rappel global enregistrées.\n" "(tout ce que vous passez dans une fonction minetest.register_*())" #: src/settings_translation_file.cpp msgid "" "Instrument the action function of Active Block Modifiers on registration." msgstr "" "Instrumentalise la fonction d'action des modificateurs actifs de bloc lors " "de l'enregistrement." #: src/settings_translation_file.cpp msgid "" "Instrument the action function of Loading Block Modifiers on registration." msgstr "" "Instrumentalise la fonction d'action des modificateurs de blocs chargés lors " "de l'enregistrement." #: src/settings_translation_file.cpp msgid "Instrument the methods of entities on registration." msgstr "Instrumentalise les systèmes d'entités lors de l'enregistrement." #: src/settings_translation_file.cpp msgid "Instrumentation" msgstr "Instrumentalisation" #: src/settings_translation_file.cpp msgid "Interval of saving important changes in the world, stated in seconds." msgstr "" "Intervalle de sauvegarde des changements importants dans le monde, établie " "en secondes." #: src/settings_translation_file.cpp msgid "Interval of sending time of day to clients." msgstr "Intervalle d'envoi de l'heure aux clients." #: src/settings_translation_file.cpp msgid "Inventory image hack" msgstr "Hack d'image d'inventaire" #: src/settings_translation_file.cpp msgid "Inventory items animations" msgstr "Animation des items d'inventaire" #: src/settings_translation_file.cpp msgid "Inventory key" msgstr "Touche d'inventaire" #: src/settings_translation_file.cpp msgid "Invert mouse" msgstr "Inverser la souris" #: src/settings_translation_file.cpp msgid "Invert vertical mouse movement." msgstr "Inverser les mouvements verticaux de la souris." #: src/settings_translation_file.cpp msgid "Item entity TTL" msgstr "Durée de vie des items abandonnés" #: src/settings_translation_file.cpp msgid "Iterations" msgstr "Itérations" #: src/settings_translation_file.cpp msgid "" "Iterations of the recursive function.\n" "Controls the amount of fine detail." msgstr "" "Itérations de la fonction récursive.\n" "Contrôle la quantité de détails fins." #: src/settings_translation_file.cpp msgid "Joystick ID" msgstr "ID de manette" #: src/settings_translation_file.cpp msgid "Joystick Type" msgstr "Type de manette" #: src/settings_translation_file.cpp msgid "Joystick button repetition interval" msgstr "Intervalle de répétition du bouton du Joystick" #: src/settings_translation_file.cpp msgid "Joystick frustum sensitivity" msgstr "Sensibilité tronconique du joystick" #: src/settings_translation_file.cpp msgid "" "Julia set only: W component of hypercomplex constant determining julia " "shape.\n" "Has no effect on 3D fractals.\n" "Range roughly -2 to 2." msgstr "" "Réglage Julia uniquement: composante W de la constante \"hypercomplex\" " "déterminant la forme Julia.\n" "N'a aucun effet sur fractales 3D.\n" "Portée environ -2 et 2." #: src/settings_translation_file.cpp msgid "" "Julia set only: X component of hypercomplex constant determining julia " "shape.\n" "Range roughly -2 to 2." msgstr "" "Série Julia uniquement: composant X de la constante \"hypercomplex\" " "déterminant la forme Julia.\n" "Portée environ -2 et 2." #: src/settings_translation_file.cpp msgid "" "Julia set only: Y component of hypercomplex constant determining julia " "shape.\n" "Range roughly -2 to 2." msgstr "" "Série Julia uniquement: composante Y de la constante \"hypercomplex\" " "determinant la forme Julia.\n" "La portée est d'environ -2 à 2." #: src/settings_translation_file.cpp msgid "" "Julia set only: Z component of hypercomplex constant determining julia " "shape.\n" "Range roughly -2 to 2." msgstr "" "Série Julia uniquement: composante Z de la constante \"hypercomplex\" " "déterminant la forme Julia.\n" "La portée est d'environ -2 à 2." #: src/settings_translation_file.cpp msgid "Julia w" msgstr "" #: src/settings_translation_file.cpp msgid "Julia x" msgstr "" #: src/settings_translation_file.cpp msgid "Julia y" msgstr "" #: src/settings_translation_file.cpp msgid "Julia z" msgstr "" #: src/settings_translation_file.cpp msgid "Jump key" msgstr "Sauter" #: src/settings_translation_file.cpp msgid "Jumping speed" msgstr "Vitesse de saut du joueur" #: src/settings_translation_file.cpp msgid "" "Key for decreasing the viewing range.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "Touche pour diminuer le champ de vision.\n" "Voir http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" "Key for decreasing the volume.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "Touche pour diminuer le volume.\n" "Voir http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" "Key for dropping the currently selected item.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "Touche pour jeter l'objet sélectionné.\n" "Voir http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" "Key for increasing the viewing range.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "Touche pour accroitre le champ de vision.\n" "Voir http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" "Key for increasing the volume.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "Touche pour augmenter le volume.\n" "Voir http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" "Key for jumping.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "Touche pour sauter.\n" "Voir http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" "Key for moving fast in fast mode.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "Touche pour se déplacer rapidement en mode rapide.\n" "Voir http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" "Key for moving the player backward.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "Touche pour reculer.\n" "Voir http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" "Key for moving the player forward.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "Touche pour avancer.\n" "Voir http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" "Key for moving the player left.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "Touche pour se déplacer à gauche.\n" "Voir http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" "Key for moving the player right.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "Touche pour se déplacer à droite.\n" "Voir http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" "Key for muting the game.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "Touche pour rendre le jeu muet.\n" "Voir http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" "Key for opening the chat console.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "Touche pour ouvrir la console de chat.\n" "Voir http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" "Key for opening the chat window to type commands.\n" "See http://irr MapBlock *block = sector->getBlockNoCreateNoEx(p3d.Y); return block; } MapBlock * Map::getBlockNoCreate(v3s16 p3d) { MapBlock *block = getBlockNoCreateNoEx(p3d); if(block == NULL) throw InvalidPositionException(); return block; } bool Map::isValidPosition(v3s16 p) { v3s16 blockpos = getNodeBlockPos(p); MapBlock *block = getBlockNoCreateNoEx(blockpos); return (block != NULL); } // Returns a CONTENT_IGNORE node if not found MapNode Map::getNode(v3s16 p, bool *is_valid_position) { v3s16 blockpos = getNodeBlockPos(p); MapBlock *block = getBlockNoCreateNoEx(blockpos); if (block == NULL) { if (is_valid_position != NULL) *is_valid_position = false; return {CONTENT_IGNORE}; } v3s16 relpos = p - blockpos*MAP_BLOCKSIZE; bool is_valid_p; MapNode node = block->getNodeNoCheck(relpos, &is_valid_p); if (is_valid_position != NULL) *is_valid_position = is_valid_p; return node; } static void set_node_in_block(MapBlock *block, v3s16 relpos, MapNode n) { // Never allow placing CONTENT_IGNORE, it causes problems if(n.getContent() == CONTENT_IGNORE){ const NodeDefManager *nodedef = block->getParent()->getNodeDefManager(); v3s16 blockpos = block->getPos(); v3s16 p = blockpos * MAP_BLOCKSIZE + relpos; bool temp_bool; errorstream<<"Not allowing to place CONTENT_IGNORE" <<" while trying to replace \"" <<nodedef->get(block->getNodeNoCheck(relpos, &temp_bool)).name <<"\" at "<<PP(p)<<" (block "<<PP(blockpos)<<")"<<std::endl; return; } block->setNodeNoCheck(relpos, n); } // throws InvalidPositionException if not found void Map::setNode(v3s16 p, MapNode & n) { v3s16 blockpos = getNodeBlockPos(p); MapBlock *block = getBlockNoCreate(blockpos); v3s16 relpos = p - blockpos*MAP_BLOCKSIZE; set_node_in_block(block, relpos, n); } void Map::addNodeAndUpdate(v3s16 p, MapNode n, std::map<v3s16, MapBlock*> &modified_blocks, bool remove_metadata) { // Collect old node for rollback RollbackNode rollback_oldnode(this, p, m_gamedef); v3s16 blockpos = getNodeBlockPos(p); MapBlock *block = getBlockNoCreate(blockpos); if (block->isDummy()) throw InvalidPositionException(); v3s16 relpos = p - blockpos * MAP_BLOCKSIZE; // This is needed for updating the lighting MapNode oldnode = block->getNodeUnsafe(relpos); // Remove node metadata if (remove_metadata) { removeNodeMetadata(p); } // Set the node on the map const ContentFeatures &cf = m_nodedef->get(n); const ContentFeatures &oldcf = m_nodedef->get(oldnode); if (cf.lightingEquivalent(oldcf)) { // No light update needed, just copy over the old light. n.setLight(LIGHTBANK_DAY, oldnode.getLightRaw(LIGHTBANK_DAY, oldcf), cf); n.setLight(LIGHTBANK_NIGHT, oldnode.getLightRaw(LIGHTBANK_NIGHT, oldcf), cf); set_node_in_block(block, relpos, n); modified_blocks[blockpos] = block; } else { // Ignore light (because calling voxalgo::update_lighting_nodes) n.setLight(LIGHTBANK_DAY, 0, cf); n.setLight(LIGHTBANK_NIGHT, 0, cf); set_node_in_block(block, relpos, n); // Update lighting std::vector<std::pair<v3s16, MapNode> > oldnodes; oldnodes.emplace_back(p, oldnode); voxalgo::update_lighting_nodes(this, oldnodes, modified_blocks); for (auto &modified_block : modified_blocks) { modified_block.second->expireDayNightDiff(); } } // Report for rollback if(m_gamedef->rollback()) { RollbackNode rollback_newnode(this, p, m_gamedef); RollbackAction action; action.setSetNode(p, rollback_oldnode, rollback_newnode); m_gamedef->rollback()->reportAction(action); } } void Map::removeNodeAndUpdate(v3s16 p, std::map<v3s16, MapBlock*> &modified_blocks) { addNodeAndUpdate(p, MapNode(CONTENT_AIR), modified_blocks, true); } bool Map::addNodeWithEvent(v3s16 p, MapNode n, bool remove_metadata) { MapEditEvent event; event.type = remove_metadata ? MEET_ADDNODE : MEET_SWAPNODE; event.p = p; event.n = n; bool succeeded = true; try{ std::map<v3s16, MapBlock*> modified_blocks; addNodeAndUpdate(p, n, modified_blocks, remove_metadata); // Copy modified_blocks to event for (auto &modified_block : modified_blocks) { event.modified_blocks.insert(modified_block.first); } } catch(InvalidPositionException &e){ succeeded = false; } dispatchEvent(event); return succeeded; } bool Map::removeNodeWithEvent(v3s16 p) { MapEditEvent event; event.type = MEET_REMOVENODE; event.p = p; bool succeeded = true; try{ std::map<v3s16, MapBlock*> modified_blocks; removeNodeAndUpdate(p, modified_blocks); // Copy modified_blocks to event for (auto &modified_block : modified_blocks) { event.modified_blocks.insert(modified_block.first); } } catch(InvalidPositionException &e){ succeeded = false; } dispatchEvent(event); return succeeded; } struct TimeOrderedMapBlock { MapSector *sect; MapBlock *block; TimeOrderedMapBlock(MapSector *sect, MapBlock *block) : sect(sect), block(block) {} bool operator<(const TimeOrderedMapBlock &b) const { return block->getUsageTimer() < b.block->getUsageTimer(); }; }; /* Updates usage timers */ void Map::timerUpdate(float dtime, float unload_timeout, u32 max_loaded_blocks, std::vector<v3s16> *unloaded_blocks) { bool save_before_unloading = maySaveBlocks(); // Profile modified reasons Profiler modprofiler; std::vector<v2s16> sector_deletion_queue; u32 deleted_blocks_count = 0; u32 saved_blocks_count = 0; u32 block_count_all = 0; const auto start_time = porting::getTimeUs(); beginSave(); // If there is no practical limit, we spare creation of mapblock_queue if (max_loaded_blocks == U32_MAX) { for (auto &sector_it : m_sectors) { MapSector *sector = sector_it.second; bool all_blocks_deleted = true; MapBlockVect blocks; sector->getBlocks(blocks); for (MapBlock *block : blocks) { block->incrementUsageTimer(dtime); if (block->refGet() == 0 && block->getUsageTimer() > unload_timeout) { v3s16 p = block->getPos(); // Save if modified if (block->getModified() != MOD_STATE_CLEAN && save_before_unloading) { modprofiler.add(block->getModifiedReasonString(), 1); if (!saveBlock(block)) continue; saved_blocks_count++; } // Delete from memory sector->deleteBlock(block); if (unloaded_blocks) unloaded_blocks->push_back(p); deleted_blocks_count++; } else { all_blocks_deleted = false; block_count_all++; } } // Delete sector if we emptied it if (all_blocks_deleted) { sector_deletion_queue.push_back(sector_it.first); } } } else { std::priority_queue<TimeOrderedMapBlock> mapblock_queue; for (auto &sector_it : m_sectors) { MapSector *sector = sector_it.second; MapBlockVect blocks; sector->getBlocks(blocks); for (MapBlock *block : blocks) { block->incrementUsageTimer(dtime); mapblock_queue.push(TimeOrderedMapBlock(sector, block)); } } block_count_all = mapblock_queue.size(); // Delete old blocks, and blocks over the limit from the memory while (!mapblock_queue.empty() && (mapblock_queue.size() > max_loaded_blocks || mapblock_queue.top().block->getUsageTimer() > unload_timeout)) { TimeOrderedMapBlock b = mapblock_queue.top(); mapblock_queue.pop(); MapBlock *block = b.block; if (block->refGet() != 0) continue; v3s16 p = block->getPos(); // Save if modified if (block->getModified() != MOD_STATE_CLEAN && save_before_unloading) { modprofiler.add(block->getModifiedReasonString(), 1); if (!saveBlock(block)) continue; saved_blocks_count++; } // Delete from memory b.sect->deleteBlock(block); if (unloaded_blocks) unloaded_blocks->push_back(p); deleted_blocks_count++; block_count_all--; } // Delete empty sectors for (auto &sector_it : m_sectors) { if (sector_it.second->empty()) { sector_deletion_queue.push_back(sector_it.first); } } } endSave(); const auto end_time = porting::getTimeUs(); reportMetrics(end_time - start_time, saved_blocks_count, block_count_all); // Finally delete the empty sectors deleteSectors(sector_deletion_queue); if(deleted_blocks_count != 0) { PrintInfo(infostream); // ServerMap/ClientMap: infostream<<"Unloaded "<<deleted_blocks_count <<" blocks from memory"; if(save_before_unloading) infostream<<", of which "<<saved_blocks_count<<" were written"; infostream<<", "<<block_count_all<<" blocks in memory"; infostream<<"."<<std::endl; if(saved_blocks_count != 0){ PrintInfo(infostream); // ServerMap/ClientMap: infostream<<"Blocks modified by: "<<std::endl; modprofiler.print(infostream); } } } void Map::unloadUnreferencedBlocks(std::vector<v3s16> *unloaded_blocks) { timerUpdate(0.0, -1.0, 0, unloaded_blocks); } void Map::deleteSectors(std::vector<v2s16> &sectorList) { for (v2s16 j : sectorList) { MapSector *sector = m_sectors[j]; // If sector is in sector cache, remove it from there if(m_sector_cache == sector) m_sector_cache = NULL; // Remove from map and delete m_sectors.erase(j); delete sector; } } void Map::PrintInfo(std::ostream &out) { out<<"Map: "; } #define WATER_DROP_BOOST 4 const static v3s16 liquid_6dirs[6] = { // order: upper before same level before lower v3s16( 0, 1, 0), v3s16( 0, 0, 1), v3s16( 1, 0, 0), v3s16( 0, 0,-1), v3s16(-1, 0, 0), v3s16( 0,-1, 0) }; enum NeighborType : u8 { NEIGHBOR_UPPER, NEIGHBOR_SAME_LEVEL, NEIGHBOR_LOWER }; struct NodeNeighbor { MapNode n; NeighborType t; v3s16 p; NodeNeighbor() : n(CONTENT_AIR), t(NEIGHBOR_SAME_LEVEL) { } NodeNeighbor(const MapNode &node, NeighborType n_type, const v3s16 &pos) : n(node), t(n_type), p(pos) { } }; void ServerMap::transforming_liquid_add(v3s16 p) { m_transforming_liquid.push_back(p); } void ServerMap::transformLiquids(std::map<v3s16, MapBlock*> &modified_blocks, ServerEnvironment *env) { u32 loopcount = 0; u32 initial_size = m_transforming_liquid.size(); /*if(initial_size != 0) infostream<<"transformLiquids(): initial_size="<<initial_size<<std::endl;*/ // list of nodes that due to viscosity have not reached their max level height std::deque<v3s16> must_reflow; std::vector<std::pair<v3s16, MapNode> > changed_nodes; u32 liquid_loop_max = g_settings->getS32("liquid_loop_max"); u32 loop_max = liquid_loop_max; while (m_transforming_liquid.size() != 0) { // This should be done here so that it is done when continue is used if (loopcount >= initial_size || loopcount >= loop_max) break; loopcount++; /* Get a queued transforming liquid node */ v3s16 p0 = m_transforming_liquid.front(); m_transforming_liquid.pop_front(); MapNode n0 = getNode(p0); /* Collect information about current node */ s8 liquid_level = -1; // The liquid node which will be placed there if // the liquid flows into this node. content_t liquid_kind = CONTENT_IGNORE; // The node which will be placed there if liquid // can't flow into this node. content_t floodable_node = CONTENT_AIR; const ContentFeatures &cf = m_nodedef->get(n0); LiquidType liquid_type = cf.liquid_type; switch (liquid_type) { case LIQUID_SOURCE: liquid_level = LIQUID_LEVEL_SOURCE; liquid_kind = cf.liquid_alternative_flowing_id; break; case LIQUID_FLOWING: liquid_level = (n0.param2 & LIQUID_LEVEL_MASK); liquid_kind = n0.getContent(); break; case LIQUID_NONE: // if this node is 'floodable', it *could* be transformed // into a liquid, otherwise, continue with the next node. if (!cf.floodable) continue; floodable_node = n0.getContent(); liquid_kind = CONTENT_AIR; break; } /* Collect information about the environment */ NodeNeighbor sources[6]; // surrounding sources int num_sources = 0; NodeNeighbor flows[6]; // surrounding flowing liquid nodes int num_flows = 0; NodeNeighbor airs[6]; // surrounding air int num_airs = 0; NodeNeighbor neutrals[6]; // nodes that are solid or another kind of liquid int num_neutrals = 0; bool flowing_down = false; bool ignored_sources = false; for (u16 i = 0; i < 6; i++) { NeighborType nt = NEIGHBOR_SAME_LEVEL; switch (i) { case 0: nt = NEIGHBOR_UPPER; break; case 5: nt = NEIGHBOR_LOWER; break; default: break; } v3s16 npos = p0 + liquid_6dirs[i]; NodeNeighbor nb(getNode(npos), nt, npos); const ContentFeatures &cfnb = m_nodedef->get(nb.n); switch (m_nodedef->get(nb.n.getContent()).liquid_type) { case LIQUID_NONE: if (cfnb.floodable) { airs[num_airs++] = nb; // if the current node is a water source the neighbor // should be enqueded for transformation regardless of whether the // current node changes or not. if (nb.t != NEIGHBOR_UPPER && liquid_type != LIQUID_NONE) m_transforming_liquid.push_back(npos); // if the current node happens to be a flowing node, it will start to flow down here. if (nb.t == NEIGHBOR_LOWER) flowing_down = true; } else { neutrals[num_neutrals++] = nb; if (nb.n.getContent() == CONTENT_IGNORE) { // If node below is ignore prevent water from // spreading outwards and otherwise prevent from // flowing away as ignore node might be the source if (nb.t == NEIGHBOR_LOWER) flowing_down = true; else ignored_sources = true; } } break; case LIQUID_SOURCE: // if this node is not (yet) of a liquid type, choose the first liquid type we encounter if (liquid_kind == CONTENT_AIR) liquid_kind = cfnb.liquid_alternative_flowing_id; if (cfnb.liquid_alternative_flowing_id != liquid_kind) { neutrals[num_neutrals++] = nb; } else { // Do not count bottom source, it will screw things up if(nt != NEIGHBOR_LOWER) sources[num_sources++] = nb; } break; case LIQUID_FLOWING: if (nb.t != NEIGHBOR_SAME_LEVEL || (nb.n.param2 & LIQUID_FLOW_DOWN_MASK) != LIQUID_FLOW_DOWN_MASK) { // if this node is not (yet) of a liquid type, choose the first liquid type we encounter // but exclude falling liquids on the same level, they cannot flow here anyway if (liquid_kind == CONTENT_AIR) liquid_kind = cfnb.liquid_alternative_flowing_id; } if (cfnb.liquid_alternative_flowing_id != liquid_kind) { neutrals[num_neutrals++] = nb; } else { flows[num_flows++] = nb; if (nb.t == NEIGHBOR_LOWER) flowing_down = true; } break; } } /* decide on the type (and possibly level) of the current node */ content_t new_node_content; s8 new_node_level = -1; s8 max_node_level = -1; u8 range = m_nodedef->get(liquid_kind).liquid_range; if (range > LIQUID_LEVEL_MAX + 1) range = LIQUID_LEVEL_MAX + 1; if ((num_sources >= 2 && m_nodedef->get(liquid_kind).liquid_renewable) || liquid_type == LIQUID_SOURCE) { // liquid_kind will be set to either the flowing alternative of the node (if it's a liquid) // or the flowing alternative of the first of the surrounding sources (if it's air), so // it's perfectly safe to use liquid_kind here to determine the new node content. new_node_content = m_nodedef->get(liquid_kind).liquid_alternative_source_id; } else if (num_sources >= 1 && sources[0].t != NEIGHBOR_LOWER) { // liquid_kind is set properly, see above max_node_level = new_node_level = LIQUID_LEVEL_MAX; if (new_node_level >= (LIQUID_LEVEL_MAX + 1 - range)) new_node_content = liquid_kind; else new_node_content = floodable_node; } else if (ignored_sources && liquid_level >= 0) { // Maybe there are neighbouring sources that aren't loaded yet // so prevent flowing away. new_node_level = liquid_level; new_node_content = liquid_kind; } else { // no surrounding sources, so get the maximum level that can flow into this node for (u16 i = 0; i < num_flows; i++) { u8 nb_liquid_level = (flows[i].n.param2 & LIQUID_LEVEL_MASK); switch (flows[i].t) { case NEIGHBOR_UPPER: if (nb_liquid_level + WATER_DROP_BOOST > max_node_level) { max_node_level = LIQUID_LEVEL_MAX; if (nb_liquid_level + WATER_DROP_BOOST < LIQUID_LEVEL_MAX) max_node_level = nb_liquid_level + WATER_DROP_BOOST; } else if (nb_liquid_level > max_node_level) { max_node_level = nb_liquid_level; } break; case NEIGHBOR_LOWER: break; case NEIGHBOR_SAME_LEVEL: if ((flows[i].n.param2 & LIQUID_FLOW_DOWN_MASK) != LIQUID_FLOW_DOWN_MASK && nb_liquid_level > 0 && nb_liquid_level - 1 > max_node_level) max_node_level = nb_liquid_level - 1; break; } } u8 viscosity = m_nodedef->get(liquid_kind).liquid_viscosity; if (viscosity > 1 && max_node_level != liquid_level) { // amount to gain, limited by viscosity // must be at least 1 in absolute value s8 level_inc = max_node_level - liquid_level; if (level_inc < -viscosity || level_inc > viscosity) new_node_level = liquid_level + level_inc/viscosity; else if (level_inc < 0) new_node_level = liquid_level - 1; else if (level_inc > 0) new_node_level = liquid_level + 1; if (new_node_level != max_node_level) must_reflow.push_back(p0); } else { new_node_level = max_node_level; } if (max_node_level >= (LIQUID_LEVEL_MAX + 1 - range)) new_node_content = liquid_kind; else new_node_content = floodable_node; } /* check if anything has changed. if not, just continue with the next node. */ if (new_node_content == n0.getContent() && (m_nodedef->get(n0.getContent()).liquid_type != LIQUID_FLOWING || ((n0.param2 & LIQUID_LEVEL_MASK) == (u8)new_node_level && ((n0.param2 & LIQUID_FLOW_DOWN_MASK) == LIQUID_FLOW_DOWN_MASK) == flowing_down))) continue; /* update the current node */ MapNode n00 = n0; //bool flow_down_enabled = (flowing_down && ((n0.param2 & LIQUID_FLOW_DOWN_MASK) != LIQUID_FLOW_DOWN_MASK)); if (m_nodedef->get(new_node_content).liquid_type == LIQUID_FLOWING) { // set level to last 3 bits, flowing down bit to 4th bit n0.param2 = (flowing_down ? LIQUID_FLOW_DOWN_MASK : 0x00) | (new_node_level & LIQUID_LEVEL_MASK); } else { // set the liquid level and flow bits to 0 n0.param2 &= ~(LIQUID_LEVEL_MASK | LIQUID_FLOW_DOWN_MASK); } // change the node. n0.setContent(new_node_content); // on_flood() the node if (floodable_node != CONTENT_AIR) { if (env->getScriptIface()->node_on_flood(p0, n00, n0)) continue; } // Ignore light (because calling voxalgo::update_lighting_nodes) n0.setLight(LIGHTBANK_DAY, 0, m_nodedef); n0.setLight(LIGHTBANK_NIGHT, 0, m_nodedef); // Find out whether there is a suspect for this action std::string suspect; if (m_gamedef->rollback()) suspect = m_gamedef->rollback()->getSuspect(p0, 83, 1); if (m_gamedef->rollback() && !suspect.empty()) { // Blame suspect RollbackScopeActor rollback_scope(m_gamedef->rollback(), suspect, true); // Get old node for rollback RollbackNode rollback_oldnode(this, p0, m_gamedef); // Set node setNode(p0, n0); // Report RollbackNode rollback_newnode(this, p0, m_gamedef); RollbackAction action; action.setSetNode(p0, rollback_oldnode, rollback_newnode); m_gamedef->rollback()->reportAction(action); } else { // Set node setNode(p0, n0); } v3s16 blockpos = getNodeBlockPos(p0); MapBlock *block = getBlockNoCreateNoEx(blockpos); if (block != NULL) { modified_blocks[blockpos] = block; changed_nodes.emplace_back(p0, n00); } /* enqueue neighbors for update if neccessary */ switch (m_nodedef->get(n0.getContent()).liquid_type) { case LIQUID_SOURCE: case LIQUID_FLOWING: // make sure source flows into all neighboring nodes for (u16 i = 0; i < num_flows; i++) if (flows[i].t != NEIGHBOR_UPPER) m_transforming_liquid.push_back(flows[i].p); for (u16 i = 0; i < num_airs; i++) if (airs[i].t != NEIGHBOR_UPPER) m_transforming_liquid.push_back(airs[i].p); break; case LIQUID_NONE: // this flow has turned to air; neighboring flows might need to do the same for (u16 i = 0; i < num_flows; i++) m_transforming_liquid.push_back(flows[i].p); break; } } //infostream<<"Map::transformLiquids(): loopcount="<<loopcount<<std::endl; for (auto &iter : must_reflow) m_transforming_liquid.push_back(iter); voxalgo::update_lighting_nodes(this, changed_nodes, modified_blocks); env->getScriptIface()->on_liquid_transformed(changed_nodes); /* ---------------------------------------------------------------------- * Manage the queue so that it does not grow indefinately */ u16 time_until_purge = g_settings->getU16("liquid_queue_purge_time"); if (time_until_purge == 0) return; // Feature disabled time_until_purge *= 1000; // seconds -> milliseconds u64 curr_time = porting::getTimeMs(); u32 prev_unprocessed = m_unprocessed_count; m_unprocessed_count = m_transforming_liquid.size(); // if unprocessed block count is decreasing or stable if (m_unprocessed_count <= prev_unprocessed) { m_queue_size_timer_started = false; } else { if (!m_queue_size_timer_started) m_inc_trending_up_start_time = curr_time; m_queue_size_timer_started = true; } // Account for curr_time overflowing if (m_queue_size_timer_started && m_inc_trending_up_start_time > curr_time) m_queue_size_timer_started = false; /* If the queue has been growing for more than liquid_queue_purge_time seconds * and the number of unprocessed blocks is still > liquid_loop_max then we * cannot keep up; dump the oldest blocks from the queue so that the queue * has liquid_loop_max items in it */ if (m_queue_size_timer_started && curr_time - m_inc_trending_up_start_time > time_until_purge && m_unprocessed_count > liquid_loop_max) { size_t dump_qty = m_unprocessed_count - liquid_loop_max; infostream << "transformLiquids(): DUMPING " << dump_qty << " blocks from the queue" << std::endl; while (dump_qty--) m_transforming_liquid.pop_front(); m_queue_size_timer_started = false; // optimistically assume we can keep up now m_unprocessed_count = m_transforming_liquid.size(); } } std::vector<v3s16> Map::findNodesWithMetadata(v3s16 p1, v3s16 p2) { std::vector<v3s16> positions_with_meta; sortBoxVerticies(p1, p2); v3s16 bpmin = getNodeBlockPos(p1); v3s16 bpmax = getNodeBlockPos(p2); VoxelArea area(p1, p2); for (s16 z = bpmin.Z; z <= bpmax.Z; z++) for (s16 y = bpmin.Y; y <= bpmax.Y; y++) for (s16 x = bpmin.X; x <= bpmax.X; x++) { v3s16 blockpos(x, y, z); MapBlock *block = getBlockNoCreateNoEx(blockpos); if (!block) { verbosestream << "Map::getNodeMetadata(): Need to emerge " << PP(blockpos) << std::endl; block = emergeBlock(blockpos, false); } if (!block) { infostream << "WARNING: Map::getNodeMetadata(): Block not found" << std::endl; continue; } v3s16 p_base = blockpos * MAP_BLOCKSIZE; std::vector<v3s16> keys = block->m_node_metadata.getAllKeys(); for (size_t i = 0; i != keys.size(); i++) { v3s16 p(keys[i] + p_base); if (!area.contains(p)) continue; positions_with_meta.push_back(p); } } return positions_with_meta; } NodeMetadata *Map::getNodeMetadata(v3s16 p) { v3s16 blockpos = getNodeBlockPos(p); v3s16 p_rel = p - blockpos*MAP_BLOCKSIZE; MapBlock *block = getBlockNoCreateNoEx(blockpos); if(!block){ infostream<<"Map::getNodeMetadata(): Need to emerge " <<PP(blockpos)<<std::endl; block = emergeBlock(blockpos, false); } if(!block){ warningstream<<"Map::getNodeMetadata(): Block not found" <<std::endl; return NULL; } NodeMetadata *meta = block->m_node_metadata.get(p_rel); return meta; } bool Map::setNodeMetadata<