From: Samual Date: Tue, 18 Jan 2011 21:11:58 +0000 (-0500) Subject: Merge branch 'samual/water_and_damage_blur' into samual/hud_contents X-Git-Tag: xonotic-v0.5.0~318^2~5^2~3 X-Git-Url: http://de.git.xonotic.org/?p=xonotic%2Fxonotic-data.pk3dir.git;a=commitdiff_plain;h=c45067564a27d2d3148775446992db29d8e41e32;hp=2c5f7f2b33fb403cbd719696cd42e6544318d79b Merge branch 'samual/water_and_damage_blur' into samual/hud_contents --- diff --git a/apply-eol-style.sh b/apply-eol-style.sh deleted file mode 100755 index 6c6c997ccd..0000000000 --- a/apply-eol-style.sh +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/sh - -while read -r EXT EOLSTYLE; do - echo "Fixing $EXT..." - find . -name .svn -prune -o -type f \( -name "*.$EXT" -o -name "$EXT" \) -print0 | \ - case "$EOLSTYLE" in - 1) - xargs -0 svn propset svn:eol-style native - ;; - 0) - xargs -0 svn propdel svn:eol-style - ;; - esac -done &2 + for X in "$VM".dat.*.po; do + [ -f "$X" ] || continue + msgmerge -F -U "$X" "$VM".dat.pot >&2 + todo=$( + msgattrib --untranslated "$X" | grep -A 2147483647 "^#:" + msgattrib --fuzzy "$X" | grep -A 2147483647 "^#:" + ) + if [ -n "$todo" ]; then + echo "TODO for translation $X:" + echo "$todo" + echo + fi + done +done diff --git a/defaultXonotic.cfg b/defaultXonotic.cfg index c19d8b4f1a..004397a099 100644 --- a/defaultXonotic.cfg +++ b/defaultXonotic.cfg @@ -2017,6 +2017,7 @@ scr_infobar_height 12 // DP cannot properly detect this, so rather turn off the detection r_texture_dds_load_dxt1_noalpha 1 r_texture_dds_load_swdecode 1 // SW decode to quarter res if we want to load DDS but don't support the extension for it +r_texture_dds_load_logfailure 0 // this engine feature SUCKS // particles optimization r_drawparticles_nearclip_min 8 @@ -2089,6 +2090,7 @@ set g_weapon_charge_colormod_blue_full -1 // player statistics server URI set g_playerstats_uri "" +set g_playerstats_debug 0 "when 1, player stats are dumped to the console too" // create this cvar in case the engine did not set snd_soundradius 1200 diff --git a/keybinds.txt b/keybinds.txt index da262082e9..56ff29d766 100644 --- a/keybinds.txt +++ b/keybinds.txt @@ -17,16 +17,16 @@ "weaplast" "previously used" "weapbest" "best" "reload" "reload" -"impulse 1" "laser" -"impulse 2" "shotgun" -"impulse 3" "machine gun / rifle" -"impulse 4" "mortar" -"impulse 5" "electro" -"impulse 6" "crylink / hlac" -"impulse 7" "nex / minstanex" -"impulse 8" "hagar" -"impulse 9" "rocket launcher / fireball" -"impulse 14" "porto / hook" +"impulse 1" "Laser" +"impulse 2" "Shotgun" +"impulse 3" "Machine Gun" +"impulse 4" "Mortar / Mine Layer" +"impulse 5" "Electro" +"impulse 6" "Crylink / HLAC" +"impulse 7" "Nex / MinstaNex / Rifle" +"impulse 8" "Hagar / Seeker" +"impulse 9" "Rocket Launcher / Fireball" +"impulse 14" "Port-O-Launch / Hook" "" "" "" "View" "+zoom" "hold zoom" diff --git a/keybinds.txt.de b/keybinds.txt.de new file mode 100644 index 0000000000..6f2c78b511 --- /dev/null +++ b/keybinds.txt.de @@ -0,0 +1,91 @@ +"" "Bewegung" +"+forward" "vorwärts" +"+back" "rückwärts" +"+moveleft" "links" +"+moveright" "rechts" +"+jump" "springen / schwimmen" +"+crouch" "ducken / sinken" +"+hook" "Enterhaken / Jetpack" +"" "" +"" "Angriff" +"+fire" "1. Feuermodus" +"+fire2" "2. Feuermodus" +"" "" +"" "Waffe wechseln" +"weapprev" "vorherige" +"weapnext" "nächste" +"weaplast" "zuletzt benutzte" +"weapbest" "beste" +"reload" "nachladen" +"impulse 1" "Laser" +"impulse 2" "Shotgun" +"impulse 3" "Machine Gun" +"impulse 4" "Mortar / Mine Layer" +"impulse 5" "Electro" +"impulse 6" "Crylink / HLAC" +"impulse 7" "Nex / MinstaNex / Rifle" +"impulse 8" "Hagar / Seeker" +"impulse 9" "Rocket Launcher / Fireball" +"impulse 14" "Port-O-Launch / Hook" +"" "" +"" "Anzeige" +"+zoom" "Vergrößern (festhalten)" +"togglezoom" "Vergrößern (umschalten)" +"+showscores" "Tabelle anzeigen" +"screenshot" "Bildschirmfoto" +"" "" +"" "Kommunikation" +"messagemode" "Nachricht an alle" +"messagemode2" "Nachricht ans Team" +"+con_chat_maximize" "Chat-Historie zeigen" +"vyes" "Abstimmung: JA" +"vno" "Abstimmung: Nein" +"ready" "Bereitschaft signalisieren" +"" "" +"" "Client" +"+show_info" "Serverinfo anzeigen" +"toggleconsole" "Konsole öffnen" +"disconnect" "Verbindung trennen" +"quit" "Beenden" +"" "" +"" "Teamplay" +"messagemode2" "Nachricht ans Team" +"team_auto" "Team automatisch wählen" +"menu_showteamselect" "Team auswählen" +"spec" "Zuschauen" +"dropweapon" "Waffe wegwerfen" +"+use" "Schlüssel oder Flagge wegwerfen" +"" "" +"" "Benutzerdefiniert" +"+userbind 1" "$userbind1" +"+userbind 2" "$userbind2" +"+userbind 3" "$userbind3" +"+userbind 4" "$userbind4" +"+userbind 5" "$userbind5" +"+userbind 6" "$userbind6" +"+userbind 7" "$userbind7" +"+userbind 8" "$userbind8" +"+userbind 9" "$userbind9" +"+userbind 10" "$userbind10" +"+userbind 11" "$userbind11" +"+userbind 12" "$userbind12" +"+userbind 13" "$userbind13" +"+userbind 14" "$userbind14" +"+userbind 15" "$userbind15" +"+userbind 16" "$userbind16" +"+userbind 17" "$userbind17" +"+userbind 18" "$userbind18" +"+userbind 19" "$userbind19" +"+userbind 20" "$userbind20" +"+userbind 21" "$userbind21" +"+userbind 22" "$userbind22" +"+userbind 23" "$userbind23" +"+userbind 24" "$userbind24" +"+userbind 25" "$userbind25" +"+userbind 26" "$userbind26" +"+userbind 27" "$userbind27" +"+userbind 28" "$userbind28" +"+userbind 29" "$userbind29" +"+userbind 30" "$userbind30" +"+userbind 31" "$userbind31" +"+userbind 32" "$userbind32" diff --git a/keybinds.txt.fr b/keybinds.txt.fr new file mode 100644 index 0000000000..c5cb242b18 --- /dev/null +++ b/keybinds.txt.fr @@ -0,0 +1,91 @@ +"" "Mouvement" +"+forward" "avancer" +"+back" "reculer" +"+moveleft" "gauche" +"+moveright" "droite" +"+jump" "sauter / nager" +"+crouch" "s'accroupir / couler" +"+hook" "grappin / jet pack" +"" "" +"" "Attaque" +"+fire" "tir primaire" +"+fire2" "tir secondaire" +"" "" +"" "Changement d'armes" +"weapprev" "arme précédente" +"weapnext" "arme suivante" +"weaplast" "dernière utilisée" +"weapbest" "meilleure arme" +"reload" "recharger" +"impulse 1" "laser" +"impulse 2" "shotgun" +"impulse 3" "machine gun / rifle" +"impulse 4" "mortar" +"impulse 5" "electro" +"impulse 6" "crylink / hlac" +"impulse 7" "nex / minstanex" +"impulse 8" "hagar" +"impulse 9" "rocket launcher / fireball" +"impulse 14" "porto / hook" +"" "" +"" "Vue" +"+zoom" "zoom clic enfoncé" +"togglezoom" "zoom 2 clics" +"+showscores" "montrer les scores (enfoncé)" +"screenshot" "capture d'écran" +"" "" +"" "Communiquer" +"messagemode" "chat public" +"messagemode2" "chat d'équipe" +"+con_chat_maximize" "historique du chat (enfoncé)" +"vyes" "voter OUI" +"vno" "voter NON" +"ready" "prêt (en mode échauffement)" +"" "" +"" "Joueur" +"+show_info" "information serveur" +"toggleconsole" "ouvrir la console" +"disconnect" "se déconnecter" +"quit" "quitter" +"" "" +"" "Équipe" +"messagemode2" "chat d'équipe" +"team_auto" "auto-joindre une équipe" +"menu_showteamselect" "séléction d'équipe" +"spec" "mode spectateur" +"dropweapon" "lâcher l'arme" +"+use" "lâcher la clé / lâcher le drapeau" +"" "" +"" "Utilisateur" +"+userbind 1" "$userbind1" +"+userbind 2" "$userbind2" +"+userbind 3" "$userbind3" +"+userbind 4" "$userbind4" +"+userbind 5" "$userbind5" +"+userbind 6" "$userbind6" +"+userbind 7" "$userbind7" +"+userbind 8" "$userbind8" +"+userbind 9" "$userbind9" +"+userbind 10" "$userbind10" +"+userbind 11" "$userbind11" +"+userbind 12" "$userbind12" +"+userbind 13" "$userbind13" +"+userbind 14" "$userbind14" +"+userbind 15" "$userbind15" +"+userbind 16" "$userbind16" +"+userbind 17" "$userbind17" +"+userbind 18" "$userbind18" +"+userbind 19" "$userbind19" +"+userbind 20" "$userbind20" +"+userbind 21" "$userbind21" +"+userbind 22" "$userbind22" +"+userbind 23" "$userbind23" +"+userbind 24" "$userbind24" +"+userbind 25" "$userbind25" +"+userbind 26" "$userbind26" +"+userbind 27" "$userbind27" +"+userbind 28" "$userbind28" +"+userbind 29" "$userbind29" +"+userbind 30" "$userbind30" +"+userbind 31" "$userbind31" +"+userbind 32" "$userbind32" diff --git a/languages.txt b/languages.txt new file mode 100644 index 0000000000..d14c1f8b98 --- /dev/null +++ b/languages.txt @@ -0,0 +1,5 @@ +de German "Deutsch" +en English "English" +fr French "Français" +pt Portuguese "Português" +ru Russian "Русский" diff --git a/menu.dat.de.po b/menu.dat.de.po new file mode 100644 index 0000000000..38ad308819 --- /dev/null +++ b/menu.dat.de.po @@ -0,0 +1,2407 @@ +# Xonotic Menu +# Copyright (C) 2011 Team Xonotic +# This file is distributed under the same license as the Xonotic package. +# Rudolf Polzer +# +msgid "" +msgstr "" +"Project-Id-Version: 0.1preview\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2011-01-18 21:36+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: Rudolf Polzer \n" +"Language-Team: LANGUAGE \n" +"Language: de\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: qcsrc/menu/gamecommand.qc:47 +#, c-format +msgid "error: status is %d\n" +msgstr "Fehler: Status ist %d\n" + +#: qcsrc/menu/gamecommand.qc:65 +msgid "Usage: menu_cmd command..., where possible commands are:\n" +msgstr "Syntax: menu_cmd Befehl..., wobei mögliche Befehle sind:\n" + +#: qcsrc/menu/gamecommand.qc:66 +msgid " sync - reloads all cvars on the current menu page\n" +msgstr " sync - lädt alle Variablen auf der aktuellen Menüseite neu\n" + +#: qcsrc/menu/gamecommand.qc:67 +msgid " directmenu ITEM - select a menu item as main item\n" +msgstr " directmenu ELEMENT - springt zu einem Menüelement" + +#: qcsrc/menu/gamecommand.qc:193 +msgid "error creating curl handle\n" +msgstr "Fehler beim Erstellen eines curl-Handles\n" + +#: qcsrc/menu/gamecommand.qc:239 +msgid "Invalid command. For a list of supported commands, try menu_cmd help.\n" +msgstr "" +"Ungültiger Befehl. Eine Liste der unterstützten Befehle wird von menu_cmd " +"help ausgegeben.\n" + +#: qcsrc/menu/item/gecko.c:49 +msgid "Browser not initialized!" +msgstr "Browser nicht initialisiert!" + +#: qcsrc/menu/item/label.c:63 +#, c-format +msgid "NOTE: label text %s too wide for label, condensed by factor %f\n" +msgstr "" +"HINWEIS: Text %s ist zu weit für das Textfeld, Text wurde um Faktor %f " +"gestaucht\n" + +#: qcsrc/menu/item/listbox.c:300 +#, c-format +msgid "Item %d" +msgstr "Eintrag %d" + +#: qcsrc/menu/item/slider.c:64 +#, c-format +msgid "%d (%s)" +msgstr "%d (%s)" + +#: qcsrc/menu/item/textslider.c:29 qcsrc/menu/item/textslider.c:31 +msgid "custom" +msgstr "benutzerdefiniert" + +#: qcsrc/menu/menu.qc:29 +#, c-format +msgid "^4MQC Build information: %s\n" +msgstr "^4MQC Build-Information: %s (deutsch)\n" + +#: qcsrc/menu/xonotic/campaign.c:284 +#: qcsrc/menu/xonotic/dialog_singleplayer.c:66 +msgid "???" +msgstr "???" + +#: qcsrc/menu/xonotic/campaign.c:285 +#, c-format +msgid "Level %d: %s" +msgstr "Level %d: %s" + +#: qcsrc/menu/xonotic/cvarlist.c:84 +msgid "will be saved to config.cfg" +msgstr "wird in config.cfg gespeichert" + +#: qcsrc/menu/xonotic/cvarlist.c:86 +msgid "will not be saved" +msgstr "wird nicht gespeichert" + +#: qcsrc/menu/xonotic/cvarlist.c:88 +msgid "private" +msgstr "privat" + +#: qcsrc/menu/xonotic/cvarlist.c:90 +msgid "engine setting" +msgstr "Engine-Einstellung" + +#: qcsrc/menu/xonotic/cvarlist.c:92 +msgid "read only" +msgstr "nur lesen" + +#: qcsrc/menu/xonotic/dialog_credits.c:5 +msgid "Credits" +msgstr "Entwickler" + +#: qcsrc/menu/xonotic/dialog_credits.c:21 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:82 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:269 +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:46 +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:55 +#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:59 +#: qcsrc/menu/xonotic/dialog_singleplayer_winner.c:21 +msgid "OK" +msgstr "OK" + +#: qcsrc/menu/xonotic/dialog_firstrun.c:4 +msgid "Welcome" +msgstr "Willkommen" + +#: qcsrc/menu/xonotic/dialog_firstrun.c:33 +msgid "" +"Welcome to Xonotic, please select your language preference and enter your " +"player name to get started. You can change these options later through the " +"menu system." +msgstr "" +"Willkommen in Xonotic! Nach Auswahl der Sprache und Eingabe des " +"Spielernamens kann es losgehen. Diese Optionen können natürlich später im " +"Menüsystem geändert werden." + +#: qcsrc/menu/xonotic/dialog_firstrun.c:38 +#: qcsrc/menu/xonotic/dialog_settings_misc.c:35 +msgid "Text language:" +msgstr "Sprache:" + +#: qcsrc/menu/xonotic/dialog_firstrun.c:47 +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:40 +#: qcsrc/menu/xonotic/dialog_settings_input_userbind.c:39 +msgid "Name:" +msgstr "Name:" + +#: qcsrc/menu/xonotic/dialog_firstrun.c:69 +msgid "Save settings" +msgstr "Einstellungen speichern" + +#: qcsrc/menu/xonotic/dialog_hudpanel_ammo.c:4 +msgid "Ammo Panel" +msgstr "Munitons-Panel" + +#: qcsrc/menu/xonotic/dialog_hudpanel_ammo.c:22 +msgid "Ammunition display:" +msgstr "Munitionsanzeige:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_ammo.c:25 +msgid "Show only current ammo type" +msgstr "Nur aktuellen Munitionstyp anzeigen" + +#: qcsrc/menu/xonotic/dialog_hudpanel_ammo.c:29 +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:28 +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:40 +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:28 +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:40 +msgid "Left" +msgstr "Links" + +#: qcsrc/menu/xonotic/dialog_hudpanel_ammo.c:30 +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:30 +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:41 +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:30 +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:41 +msgid "Right" +msgstr "Rechts" + +#: qcsrc/menu/xonotic/dialog_hudpanel_chat.c:4 +msgid "Chat Panel" +msgstr "Chat-Panel" + +#: qcsrc/menu/xonotic/dialog_hudpanel_chat.c:22 +msgid "Chat entries:" +msgstr "Chat-Zeilen:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_chat.c:25 +msgid "Chat size:" +msgstr "Chat-Größe:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_chat.c:29 +msgid "Chat lifetime:" +msgstr "Chat-Sichtbarkeit:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_chat.c:33 +msgid "Chat beep sound" +msgstr "Chat-Piepton:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_engineinfo.c:4 +msgid "Engine Info Panel" +msgstr "Engine-Info-Panel" + +#: qcsrc/menu/xonotic/dialog_hudpanel_engineinfo.c:22 +msgid "Engine info:" +msgstr "Engine-Info:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_engineinfo.c:25 +msgid "Use an averaging algorithm for fps" +msgstr "Zeige einen Durchschnittswert für fps" + +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:4 +msgid "Health/Armor Panel" +msgstr "Health/Armor-Panel" + +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:22 +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:22 +msgid "Enable status bar" +msgstr "Statusleiste anzeigen" + +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:24 +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:24 +msgid "Status bar alignment:" +msgstr "Statusleistenausrichtung" + +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:32 +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:42 +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:32 +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:42 +msgid "Inward" +msgstr "Innen" + +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:34 +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:43 +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:34 +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:43 +msgid "Outward" +msgstr "Außen" + +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:37 +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:37 +msgid "Icon alignment:" +msgstr "Iconausrichtung:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:45 +msgid "Flip health and armor positions" +msgstr "Health und Armor tauschen" + +#: qcsrc/menu/xonotic/dialog_hudpanel_infomessages.c:4 +msgid "Info Messages Panel" +msgstr "Informations-Panel" + +#: qcsrc/menu/xonotic/dialog_hudpanel_infomessages.c:22 +msgid "Info messages:" +msgstr "Informationen:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_infomessages.c:25 +msgid "Flip align" +msgstr "Ausrichtung tauschen" + +#: qcsrc/menu/xonotic/dialog_hudpanel_modicons.c:4 +msgid "Mod Icons Panel" +msgstr "Mod-Symbole-Panel" + +#: qcsrc/menu/xonotic/dialog_hudpanel_notification.c:4 +msgid "Notification Panel" +msgstr "Anzeige-Panel" + +#: qcsrc/menu/xonotic/dialog_hudpanel_notification.c:22 +msgid "Notifications:" +msgstr "Anzeige:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_notification.c:25 +msgid "Also print notifications to the console" +msgstr "auch auf der Konsole ausgeben" + +#: qcsrc/menu/xonotic/dialog_hudpanel_notification.c:28 +msgid "Flip notify order" +msgstr "Scrollrichtung vertauschen" + +#: qcsrc/menu/xonotic/dialog_hudpanel_notification.c:31 +msgid "Entry lifetime:" +msgstr "Eintrags-Sichtbarkeit:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_notification.c:35 +msgid "Entry fadetime:" +msgstr "Eintrags-Ausblendung:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:4 +msgid "Powerups Panel" +msgstr "Bonus-Panel" + +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:45 +msgid "Flip strength and shield positions" +msgstr "Strength und Shield vertauschen" + +#: qcsrc/menu/xonotic/dialog_hudpanel_pressedkeys.c:4 +msgid "Pressed Keys Panel" +msgstr "Gedrückte-Tasten-Panel" + +#: qcsrc/menu/xonotic/dialog_hudpanel_pressedkeys.c:21 +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:21 +msgid "Panel disabled" +msgstr "Panel nicht anzeigen" + +#: qcsrc/menu/xonotic/dialog_hudpanel_pressedkeys.c:22 +msgid "Panel enabled when spectating" +msgstr "Panel beim Zuschauen anzeigen" + +#: qcsrc/menu/xonotic/dialog_hudpanel_pressedkeys.c:23 +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:23 +msgid "Panel always enabled" +msgstr "Panel immer anzeigen" + +#: qcsrc/menu/xonotic/dialog_hudpanel_pressedkeys.c:30 +msgid "Forced aspect:" +msgstr "Aspektverhältnis:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_racetimer.c:4 +msgid "Race Timer Panel" +msgstr "Rundenzeit-Panel" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:4 +msgid "Radar Panel" +msgstr "Radar-Panel" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:22 +msgid "Panel enabled in teamgames" +msgstr "Panel in Team-Spieltypen aktivieren" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:29 +msgid "Radar:" +msgstr "Radar:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:32 +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:43 +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:82 +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:151 +#: qcsrc/menu/xonotic/util.qc:631 +msgid "Alpha:" +msgstr "Alpha:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:36 +msgid "Rotation:" +msgstr "Drehung:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:38 +msgid "Forward" +msgstr "Vorwärts" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:39 +msgid "West" +msgstr "West" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:40 +msgid "South" +msgstr "Süd" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:41 +msgid "East" +msgstr "Ost" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:42 +msgid "North" +msgstr "Nord" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:46 +msgid "Scale:" +msgstr "Skalierung:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:50 +msgid "Zoom mode:" +msgstr "Zoom-Modus:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:52 +msgid "Zoomed in" +msgstr "vergrößert" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:53 +msgid "Zoomed out" +msgstr "verkleinert" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:54 +msgid "Always zoomed" +msgstr "immer vergrößert" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:55 +msgid "Never zoomed" +msgstr "nie vergrößert" + +#: qcsrc/menu/xonotic/dialog_hudpanel_score.c:4 +msgid "Score Panel" +msgstr "Punkte-Panel" + +#: qcsrc/menu/xonotic/dialog_hudpanel_timer.c:4 +msgid "Timer Panel" +msgstr "Zeit-Panel" + +#: qcsrc/menu/xonotic/dialog_hudpanel_timer.c:22 +msgid "Timer:" +msgstr "Zeit:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_timer.c:25 +msgid "Show elapsed time" +msgstr "Vergangene Zeit anzeigen" + +#: qcsrc/menu/xonotic/dialog_hudpanel_vote.c:4 +msgid "Vote Panel" +msgstr "Abstimmungs-Panel" + +#: qcsrc/menu/xonotic/dialog_hudpanel_vote.c:22 +msgid "Alpha after voting:" +msgstr "Alpha nach Abstimmung:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:4 +msgid "Weapons Panel" +msgstr "Waffen-Panel" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:24 +msgid "Fade out after:" +msgstr "Ausblenden nach:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:26 +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:41 +msgid "Never" +msgstr "Nie" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:28 +#, c-format +msgid "%ds" +msgstr "%ds" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:32 +msgid "Fade effect:" +msgstr "Ausblendeeffekt:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:33 +msgid "EF^None" +msgstr "keiner" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:35 +msgid "Slide" +msgstr "Schieben" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:37 +msgid "Alpha" +msgstr "Alpha" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:40 +msgid "Weapon icons:" +msgstr "Waffensymbole:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:43 +msgid "Show weapon ID as:" +msgstr "Waffen-ID zeigen als:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:44 +msgid "SHOWAS^None" +msgstr "nichts" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:45 +msgid "Number" +msgstr "Zahl" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:46 +msgid "Bind" +msgstr "Taste" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:49 +msgid "Show Accuracy" +msgstr "Trefferquote zeigen" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:50 +msgid "Show Ammo" +msgstr "Munition zeigen" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:53 +msgid "Ammo bar color:" +msgstr "Muntionsleistenfarbe:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:59 +msgid "Ammo bar alpha:" +msgstr "Munitionsleistenalpha:" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:4 +msgid "Panel HUD Setup" +msgstr "HUD-Konfiguration" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:21 +msgid "Panel background defaults:" +msgstr "Panel-Standardhintergrund:" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:25 +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:37 +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:52 +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:91 qcsrc/menu/xonotic/util.qc:609 +#: qcsrc/menu/xonotic/util.qc:625 qcsrc/menu/xonotic/util.qc:642 +msgid "Disable" +msgstr "Aus" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:30 +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:77 qcsrc/menu/xonotic/util.qc:614 +msgid "Color:" +msgstr "Farbe:" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:35 qcsrc/menu/xonotic/util.qc:622 +msgid "Border size:" +msgstr "Rahmengröße:" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:50 +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:89 +msgid "Team color:" +msgstr "Teamfarbe:" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:58 qcsrc/menu/xonotic/util.qc:648 +msgid "Test team color in configure mode" +msgstr "Teamfarbe bei Konfiguration testen" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:61 qcsrc/menu/xonotic/util.qc:651 +msgid "Padding:" +msgstr "Abstand:" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:68 +msgid "HUD Dock:" +msgstr "HUD-Dock:" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:70 +msgid "DOCK^Disabled" +msgstr "Aus" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:71 +msgid "DOCK^Small" +msgstr "Klein" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:72 +msgid "DOCK^Medium" +msgstr "Mittel" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:73 +msgid "DOCK^Large" +msgstr "Groß" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:96 +msgid "Grid settings:" +msgstr "Gitter:" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:99 +msgid "Snap panels to grid" +msgstr "Panels am Gitter ausrichten" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:102 +msgid "Grid size:" +msgstr "Gitterweite:" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:103 +msgid "X:" +msgstr "X:" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:109 +msgid "Y:" +msgstr "Y:" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:117 +msgid "Exit setup" +msgstr "Verlassen" + +#: qcsrc/menu/xonotic/dialog_multiplayer.c:4 +msgid "Multiplayer" +msgstr "Mehrspieler" + +#: qcsrc/menu/xonotic/dialog_multiplayer.c:18 +msgid "Servers" +msgstr "Server" + +#: qcsrc/menu/xonotic/dialog_multiplayer.c:19 +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:5 +msgid "Create" +msgstr "Starten" + +#: qcsrc/menu/xonotic/dialog_multiplayer.c:20 +msgid "Demos" +msgstr "Demos" + +#: qcsrc/menu/xonotic/dialog_multiplayer.c:21 +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:5 +msgid "Player Setup" +msgstr "Spieler-Einstellungen" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:35 +msgid "Game type:" +msgstr "Spieltyp" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:47 +msgid "Match settings:" +msgstr "Spieleinstellungen:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:50 +msgid "Time limit:" +msgstr "Zeitlimit:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:54 +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:62 +msgid "Use map specified default" +msgstr "Standardwert der Map verwenden" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:57 +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:156 +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:157 +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:158 +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:162 +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:163 +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:164 +msgid "Point limit:" +msgstr "Punktelimit" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:65 +msgid "Player slots:" +msgstr "Spielerplätze:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:68 +msgid "Number of bots:" +msgstr "Anzahl Bots:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:72 +msgid "Bot skill:" +msgstr "Spielstärke:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:75 +msgid "Botlike" +msgstr "Bots halt" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:76 +msgid "Beginner" +msgstr "Anfänger" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:77 +msgid "You will win" +msgstr "Gewinnst schon" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:78 +msgid "You can win" +msgstr "Kannst gewinnen" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:79 +msgid "You might win" +msgstr "Könntest gewinnen" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:80 +msgid "Advanced" +msgstr "Fortgeschritten" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:81 +msgid "Expert" +msgstr "Experte" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:82 +msgid "Pro" +msgstr "Profi" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:83 +msgid "Assassin" +msgstr "Mörder" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:84 +msgid "Unhuman" +msgstr "Übermenschlich" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:85 +msgid "Godlike" +msgstr "Gottgleich" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:89 +msgid "Mutators..." +msgstr "Mutators..." + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:98 +#: qcsrc/menu/xonotic/dialog_settings_misc.c:84 +msgid "Advanced settings..." +msgstr "Erweiterte Einstellungen..." + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:105 +msgid "Map list:" +msgstr "Mapliste:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:111 +msgid "Select all" +msgstr "Alle auswählen" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:114 +msgid "Select none" +msgstr "Keine auswählen" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:120 +msgid "Start Multiplayer!" +msgstr "Starten!" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:155 +msgid "Capture limit:" +msgstr "Capture-Limit:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:159 +msgid "Lives:" +msgstr "Leben:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:160 +msgid "Laps:" +msgstr "Runden:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:161 +msgid "Goals:" +msgstr "Tore:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:165 +msgid "Frag limit:" +msgstr "Punktelimit:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:6 +msgid "Advanced server settings" +msgstr "Erweiterte Servereinstellungen" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:25 +msgid "Game settings:" +msgstr "Spieleinstellungen" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:28 +msgid "Allow spectating" +msgstr "Zuschauer erlauben" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:31 +msgid "Spawn shield:" +msgstr "Startschutz:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:36 +msgid "Game speed:" +msgstr "Spieltempo:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:40 +msgid "Teamplay settings:" +msgstr "Teamplay-Einstellungen:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:43 +msgid "Friendly fire scale:" +msgstr "Eigenbeschuss-Faktor:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:47 +msgid "Virtual friendly fire (effect only)" +msgstr "Virtueller Eigenbeschuss (nur Effekt)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:50 +msgid "Friendly fire penalty:" +msgstr "Strafe für Eigenbeschuss:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:54 +msgid "Virtual penalty (effect only)" +msgstr "Virtuelle Strafe (nur Effekt)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:57 +msgid "Teams:" +msgstr "Teams:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:66 +msgid "Map voting:" +msgstr "Map-Abstimmung:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:68 +msgid "No voting" +msgstr "Keine Abstimmung" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:69 +msgid "2 choices" +msgstr "2 Optionen" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:70 +msgid "3 choices" +msgstr "3 Optionen" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:71 +msgid "4 choices" +msgstr "4 Optionen" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:72 +msgid "5 choices" +msgstr "5 Optionen" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:73 +msgid "6 choices" +msgstr "6 Optionen" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:74 +msgid "7 choices" +msgstr "7 Optionen" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:75 +msgid "8 choices" +msgstr "8 Optionen" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:76 +msgid "9 choices" +msgstr "9 Optionen" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:79 +msgid "Simple majority wins vcall" +msgstr "Einfache Mehrheit gewinnt vcall" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:5 +msgid "Map Information" +msgstr "Map-Information" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:49 +msgid "Full item placement" +msgstr "mit Waffen" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:49 +msgid "MinstaGib only" +msgstr "nur MinstaGib" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:78 +msgid "Title:" +msgstr "Titel:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:84 +msgid "Author:" +msgstr "Autor:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:90 +msgid "Features:" +msgstr "Features:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:95 +msgid "Game types:" +msgstr "Spieltyp:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:119 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:308 +msgid "Close" +msgstr "Schließen" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:122 +#: qcsrc/menu/xonotic/dialog_multiplayer_demo.c:46 +msgid "Play" +msgstr "Start" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:7 +msgid "Mutators" +msgstr "Mutators" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:33 +msgid "All Weapons Arena" +msgstr "Alle-Waffen-Arena" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:35 +msgid "Most Weapons Arena" +msgstr "Viele-Waffen-Arena" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:56 +#, c-format +msgid "%s Arena" +msgstr "%s-Arena" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:68 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:167 +msgid "Dodging" +msgstr "Ausweichen" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:70 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:250 +msgid "MinstaGib" +msgstr "MinstaGib" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:72 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:253 +msgid "NIX" +msgstr "NIX" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:74 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:205 +msgid "Rocket Flying" +msgstr "Raketen-Fliegen" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:78 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:264 +msgid "No start weapons" +msgstr "Ohne Waffen starten" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:80 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:189 +msgid "Low gravity" +msgstr "Wenig Schwerkraft" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:82 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:170 +msgid "Cloaked" +msgstr "Tarnung" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:84 +msgid "Hook" +msgstr "Enterhaken" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:86 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:173 +msgid "Midair" +msgstr "in der Luft" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:88 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:176 +msgid "Vampire" +msgstr "Vampir" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:90 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:208 +msgid "Piñata" +msgstr "Piñata" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:92 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:211 +msgid "Weapons stay" +msgstr "Waffen bleiben" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:94 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:180 +msgid "Blood loss" +msgstr "Blutverlust" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:96 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:202 +msgid "Jet pack" +msgstr "Jetpack" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:98 +msgid "MUT^None" +msgstr "keiner" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:164 +msgid "Gameplay mutators:" +msgstr "Spielmechanik-Mutators:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:196 +msgid "Weapon & item mutators:" +msgstr "Waffen/Gegenstände-Mutators:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:199 +msgid "Grappling hook" +msgstr "Enterhaken" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:215 +msgid "Weapon arenas:" +msgstr "Waffen-Arenen" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:218 +msgid "Regular (no arena)" +msgstr "Normal (keine Arena)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:239 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:256 +msgid "with laser" +msgstr "mit Laser" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:247 +msgid "Special arenas:" +msgstr "Spezielle Arenen" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:260 +msgid "Most weapons" +msgstr "Viele Waffen" + +#: qcsrc/menu/xonotic/dialog_multiplayer_demo.c:4 +msgid "Demo" +msgstr "Demo" + +#: qcsrc/menu/xonotic/dialog_multiplayer_demo.c:28 +msgid "Record demos while playing" +msgstr "Demo beim Spielen aufnehmen" + +#: qcsrc/menu/xonotic/dialog_multiplayer_demo.c:32 +#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:28 +msgid "Filter:" +msgstr "Filter:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_demo.c:33 +#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:29 +#: qcsrc/menu/xonotic/dialog_settings_input.c:41 +#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:24 +msgid "Clear" +msgstr "Löschen" + +#: qcsrc/menu/xonotic/dialog_multiplayer_demo.c:43 +msgid "Timedemo" +msgstr "Timedemo" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:4 +msgid "Join" +msgstr "Verbinden" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:36 +msgid "SRVS^Empty" +msgstr "leer" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:40 +msgid "SRVS^Full" +msgstr "voll" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:44 +msgid "Pause" +msgstr "Pause" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:56 +msgid "Address:" +msgstr "Adresse:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:65 +msgid "Info..." +msgstr "Info..." + +#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:70 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:311 +msgid "Join!" +msgstr "Verbinden!" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:5 +msgid "Server Information" +msgstr "Server-Information" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:115 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:116 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:177 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:183 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:193 +msgid "N/A" +msgstr "-" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:151 +#, c-format +msgid "%d/%d" +msgstr "%d/%d" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:166 +#, c-format +msgid "%d modified settings" +msgstr "%d veränderte Einstellungen" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:166 +msgid "Official settings" +msgstr "Offizielle Einstellungen" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:191 +msgid "N/A (can't connect)" +msgstr "- (nicht kompatibel)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:199 +msgid "not supported (can't connect)" +msgstr "nicht unterstützt (nicht kompatibel)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:201 +msgid "not supported (won't encrypt)" +msgstr "nicht untersützt (nicht aktiv)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:205 +msgid "supported (will encrypt)" +msgstr "unterstützt (aktiv)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:207 +msgid "supported (won't encrypt)" +msgstr "unterstützt (nicht aktiv)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:211 +msgid "requested (will encrypt)" +msgstr "erwünscht (aktiv)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:213 +msgid "requested (won't encrypt)" +msgstr "erwünscht (nicht aktiv)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:217 +msgid "required (can't connect)" +msgstr "notwendig (nicht kompatibel)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:219 +msgid "required (will encrypt)" +msgstr "notwendig (aktiv)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:240 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:263 +msgid "Players:" +msgstr "Spieler:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:248 +#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:38 +msgid "Type:" +msgstr "Typ:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:253 +msgid "Map:" +msgstr "Map:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:258 +msgid "Gameplay:" +msgstr "Spielregeln:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:268 +msgid "Bots:" +msgstr "Bots:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:273 +msgid "Mod:" +msgstr "Mod:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:278 +msgid "Version:" +msgstr "Version:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:283 +msgid "Ping:" +msgstr "Ping:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:289 +msgid "CA:" +msgstr "CA:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:295 +msgid "Key:" +msgstr "Schlüssel:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:301 +msgid "Encryption:" +msgstr "Krypto:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:63 +msgid "Model:" +msgstr "Modell:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:88 +msgid "Field of view:" +msgstr "Sichtfeld:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:92 +msgid "View bobbing:" +msgstr "Sicht-Wackeln:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:96 +msgid "Zoom factor:" +msgstr "Vergrößerungsfaktor:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:100 +msgid "Zoom speed:" +msgstr "Vergrößerungsgeschwindigkeit:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:103 +msgid "Weapon settings..." +msgstr "Waffeneinstellungen..." + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:110 +msgid "Crosshair:" +msgstr "Fadenkreuz:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:111 +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:143 +msgid "Per weapon" +msgstr "pro Waffe" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:130 +msgid "Crosshair size:" +msgstr "Größe:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:134 +msgid "Crosshair alpha:" +msgstr "Alpha:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:138 +msgid "Crosshair color:" +msgstr "Farbe:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:145 +msgid "Enable center dot" +msgstr "Punkt in der Mitte aktivieren" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:148 +msgid "Size:" +msgstr "Größe:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:155 +msgid "Hit test:" +msgstr "Treffer-Test:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:156 +msgid "HTST^None" +msgstr "Aus" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:157 +msgid "TrueAim" +msgstr "TrueAim" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:158 +msgid "Enemies" +msgstr "Gegner" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:161 +msgid "Waypoints setup..." +msgstr "Wegpunkt-Einstellungen..." + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:167 +msgid "Enter HUD editor" +msgstr "HUD-Editor starten" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:174 +msgid "Force models:" +msgstr "Modell erzwingen:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:175 +msgid "MDL^None" +msgstr "keine" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:176 +msgid "MDL^Custom" +msgstr "inoffizielle" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:177 +msgid "MDL^All" +msgstr "alle" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:179 +msgid "Disable gore effects" +msgstr "Gewalteffekte deaktivieren" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:181 +msgid "Gibs:" +msgstr "Fleischteile:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:183 +msgid "GIBS^None" +msgstr "Aus" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:184 +msgid "GIBS^Few" +msgstr "Wenige" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:185 +msgid "GIBS^Many" +msgstr "Einige" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:186 +msgid "GIBS^Lots" +msgstr "Viele" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:190 +msgid "Damage splash:" +msgstr "Schadenseffekt:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:194 +#: qcsrc/menu/xonotic/dialog_settings_audio.c:178 +#: qcsrc/menu/xonotic/dialog_settings_effects.c:193 +#: qcsrc/menu/xonotic/dialog_settings_misc.c:30 +#: qcsrc/menu/xonotic/dialog_settings_misc.c:41 +#: qcsrc/menu/xonotic/dialog_settings_video.c:106 +msgid "Apply immediately" +msgstr "Sofort anwenden" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:5 +msgid "Waypoints" +msgstr "Wegpunkte" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:23 +msgid "Waypoint settings:" +msgstr "Wegpunkt-Einstellungen:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:26 +msgid "Show base waypoints" +msgstr "Basis-Wegpunkte anzeigen" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:29 +msgid "Waypoint scale:" +msgstr "Wegpunkt-Skalierung:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:34 +msgid "Waypoint alpha:" +msgstr "Wegpunkt-Alpha:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:39 +msgid "Show names:" +msgstr "Namen anzeigen:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:42 +msgid "Teammates" +msgstr "Mitspieler" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:43 +msgid "All players" +msgstr "Alle Spieler" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:6 +msgid "Weapon settings" +msgstr "Waffeneinstellungen" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:29 +msgid "Weapon priority list:" +msgstr "Waffenreihenfolge" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:34 +msgid "Up" +msgstr "Hoch" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:37 +msgid "Down" +msgstr "Runter" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:41 +msgid "Use priority list for weapon cycling" +msgstr "Waffenreihenfolge für Mausrad verwenden" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:43 +msgid "Auto switch weapons on pickup" +msgstr "Automatisch auf beste Waffe wechseln" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:45 +msgid "Draw 1st person weapon model" +msgstr "Waffe in 3D anzeigen" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:48 +msgid "Left align" +msgstr "Links" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:50 +msgid "Right align" +msgstr "Rechts" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:53 +msgid "Flip view horizontally" +msgstr "3D-Ansicht spiegeln" + +#: qcsrc/menu/xonotic/dialog_news.c:4 +msgid "News" +msgstr "Nachrichten" + +#: qcsrc/menu/xonotic/dialog_news.c:18 +msgid "http://www.xonotic.org/team/blog/" +msgstr "http://www.xonotic.org/team/blog/" + +#: qcsrc/menu/xonotic/dialog_quit.c:4 +msgid "Quit" +msgstr "Beenden" + +#: qcsrc/menu/xonotic/dialog_quit.c:17 +msgid "Are you sure you want to quit?" +msgstr "Wollen Sie wirklich das Spiel beenden?" + +#: qcsrc/menu/xonotic/dialog_quit.c:20 +msgid "Yes" +msgstr "Ja" + +#: qcsrc/menu/xonotic/dialog_quit.c:21 +msgid "No" +msgstr "Nein" + +#: qcsrc/menu/xonotic/dialog_settings.c:4 +msgid "Settings" +msgstr "Einstellungen" + +#: qcsrc/menu/xonotic/dialog_settings.c:18 +#: qcsrc/menu/xonotic/dialog_settings_input.c:4 +msgid "Input" +msgstr "Eingabe" + +#: qcsrc/menu/xonotic/dialog_settings.c:19 +#: qcsrc/menu/xonotic/dialog_settings_video.c:4 +msgid "Video" +msgstr "Grafik" + +#: qcsrc/menu/xonotic/dialog_settings.c:20 +#: qcsrc/menu/xonotic/dialog_settings_effects.c:4 +msgid "Effects" +msgstr "Effekte" + +#: qcsrc/menu/xonotic/dialog_settings.c:21 +#: qcsrc/menu/xonotic/dialog_settings_audio.c:4 +msgid "Audio" +msgstr "Ton" + +#: qcsrc/menu/xonotic/dialog_settings.c:22 +#: qcsrc/menu/xonotic/dialog_settings_network.c:4 +msgid "Network" +msgstr "Netzwerk" + +#: qcsrc/menu/xonotic/dialog_settings.c:23 +#: qcsrc/menu/xonotic/dialog_settings_misc.c:4 +msgid "Misc" +msgstr "Sonstiges" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:27 +msgid "Master:" +msgstr "Master:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:33 +msgid "Music:" +msgstr "Musik:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:40 +msgid "VOL^Ambient:" +msgstr "Umgebung:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:48 +msgid "Info:" +msgstr "Info:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:57 +msgid "Items:" +msgstr "Gegenstände:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:65 +msgid "Pain:" +msgstr "Schmerz:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:73 +msgid "Player:" +msgstr "Spieler:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:81 +msgid "Shots:" +msgstr "Schüsse:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:88 +msgid "Voice:" +msgstr "Stimme:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:96 +msgid "Weapons:" +msgstr "Waffen:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:103 +#: qcsrc/menu/xonotic/dialog_settings_audio.c:161 +msgid "Frequency:" +msgstr "Frequenz:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:105 +msgid "8 kHz" +msgstr "8 kHz" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:106 +msgid "11.025 kHz" +msgstr "11,025 kHz" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:107 +msgid "16 kHz" +msgstr "16 kHz" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:108 +msgid "22.05 kHz" +msgstr "22,05 kHz" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:109 +msgid "24 kHz" +msgstr "24 kHz" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:110 +msgid "32 kHz" +msgstr "32 kHz" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:111 +msgid "44.1 kHz" +msgstr "44,1 kHz" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:112 +msgid "48 kHz" +msgstr "48 kHz" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:115 +msgid "Channels:" +msgstr "Kanäle" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:117 +msgid "Mono" +msgstr "Mono" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:118 +msgid "Stereo" +msgstr "Stereo" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:119 +msgid "2.1" +msgstr "2.1" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:120 +msgid "4" +msgstr "4" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:121 +msgid "5" +msgstr "5" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:122 +msgid "5.1" +msgstr "5.1" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:123 +msgid "6.1" +msgstr "6.1" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:124 +msgid "7.1" +msgstr "7.1" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:128 +msgid "Swap Stereo" +msgstr "Stereokanäle tauschen" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:132 +msgid "Headphone friendly mode" +msgstr "Kopfhörer-Modus" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:136 +msgid "Spatial voices:" +msgstr "Räumliche Sprachnachrichten:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:137 +msgid "VOCS^None" +msgstr "keine" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:138 +msgid "VOCS^Taunts" +msgstr "nur Spott" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:139 +msgid "VOCS^All" +msgstr "alle" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:142 +msgid "Taunt range:" +msgstr "Spott-Radius:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:145 +msgid "RNG^Very short" +msgstr "Sehr klein" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:146 +msgid "RNG^Short" +msgstr "Klein" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:147 +msgid "RNG^Normal" +msgstr "Normal" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:148 +msgid "RNG^Long" +msgstr "Groß" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:149 +msgid "RNG^Full" +msgstr "Sehr groß" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:156 +msgid "Automatic taunts" +msgstr "Automatischer Spott" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:165 +msgid "Time warning:" +msgstr "Zeitwarnung:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:167 +msgid "WRN^None" +msgstr "keine" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:168 +msgid "1 minute" +msgstr "1 Minute" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:169 +msgid "5 minutes" +msgstr "5 Minuten" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:170 +msgid "WRN^Both" +msgstr "beide" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:173 +msgid "Hit indicator" +msgstr "Treffer-Indikator" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:175 +msgid "Menu sounds" +msgstr "Menü-Sounds" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:38 +msgid "Quality preset:" +msgstr "Qualitäts-Vorgabe:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:41 +msgid "PRE^OMG!" +msgstr "OMG!" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:42 +msgid "PRE^Low" +msgstr "Niedrig" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:43 +msgid "PRE^Medium" +msgstr "Mittel" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:44 +msgid "PRE^Normal" +msgstr "Normal" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:45 +msgid "PRE^High" +msgstr "Hoch" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:46 +msgid "PRE^Ultra" +msgstr "Ultra" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:48 +msgid "PRE^Ultimate" +msgstr "Ultimativ" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:52 +msgid "Geometry detail:" +msgstr "Geometrie-Detail:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:54 +msgid "DET^Lowest" +msgstr "Sehr niedrig" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:55 +msgid "DET^Low" +msgstr "Niedrig" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:56 +msgid "DET^Normal" +msgstr "Normal" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:57 +msgid "DET^Good" +msgstr "Gut" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:58 +msgid "DET^Best" +msgstr "Sehr gut" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:59 +msgid "DET^Insane" +msgstr "Wahnsinnig" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:62 +msgid "Antialiasing:" +msgstr "Kantenglättung:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:64 +msgid "AA^Disabled" +msgstr "Aus" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:65 +#: qcsrc/menu/xonotic/dialog_settings_effects.c:103 +msgid "2x" +msgstr "2x" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:66 +#: qcsrc/menu/xonotic/dialog_settings_effects.c:104 +msgid "4x" +msgstr "4x" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:70 +msgid "Texture resolution:" +msgstr "Texturauflösung:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:73 +msgid "RES^Leet" +msgstr "Leet" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:74 +msgid "RES^Lowest" +msgstr "Sehr niedrig" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:75 +msgid "RES^Low" +msgstr "Niedrig" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:76 +msgid "RES^Normal" +msgstr "Normal" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:77 +msgid "RES^Good" +msgstr "Gut" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:78 +msgid "RES^Best" +msgstr "Sehr gut" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:91 +#: qcsrc/menu/xonotic/dialog_settings_effects.c:94 +msgid "Avoid lossy texture compression" +msgstr "Texturkompression vermeiden" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:100 +msgid "Anisotropy:" +msgstr "Anisotropie:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:102 +msgid "ANISO^Disabled" +msgstr "Aus" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:105 +msgid "8x" +msgstr "8x" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:106 +msgid "16x" +msgstr "16x" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:110 +msgid "Particle quality:" +msgstr "Partikelqualität:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:113 +msgid "Particle distance:" +msgstr "Partikeldistanz:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:117 +msgid "Decals" +msgstr "Einschusslöcher" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:120 +msgid "Distance:" +msgstr "Distanz:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:126 +msgid "Time:" +msgstr "Zeit:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:132 +msgid "Use lightmaps" +msgstr "Lightmaps verwenden" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:133 +msgid "Deluxe mapping" +msgstr "Deluxemapping" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:135 +msgid "Gloss" +msgstr "Glanz" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:138 +msgid "Offset mapping" +msgstr "Offsetmapping" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:140 +msgid "Relief mapping" +msgstr "Reliefmapping" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:143 +msgid "Reflections:" +msgstr "Reflexionen:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:146 +msgid "Blurred" +msgstr "Schwammig" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:147 +msgid "REFL^Good" +msgstr "Gut" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:148 +msgid "Sharp" +msgstr "Scharf" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:153 +msgid "Show surfaces" +msgstr "Oberflächen anzeigen" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:155 +msgid "No dynamic lighting" +msgstr "Kein dynamisches Licht" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:157 +msgid "Flash blend approximation" +msgstr "Flash-Blend-Näherung" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:159 +msgid "Realtime dynamic lighting" +msgstr "Dynamisches Licht in Echtzeit" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:160 +#: qcsrc/menu/xonotic/dialog_settings_effects.c:164 +msgid "Shadows" +msgstr "Schatten" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:163 +msgid "Realtime world lighting" +msgstr "Map-Licht in Echtzeit" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:168 +msgid "Use normal maps" +msgstr "Normalmaps verwenden" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:170 +msgid "Soft shadows" +msgstr "Weiche Schatten" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:173 +msgid "Coronas" +msgstr "Koronas" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:175 +msgid "Bloom" +msgstr "Überstrahlung" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:177 +msgid "High Dynamic Range (HDR)" +msgstr "Lichtdynamik (HDR)" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:181 +msgid "Motion blur:" +msgstr "Bewegungsunschärfe:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:187 +msgid "Damage blur:" +msgstr "Schadensunschärfe:" + +#: qcsrc/menu/xonotic/dialog_settings_input.c:26 +msgid "Key bindings:" +msgstr "Tastenbelegung:" + +#: qcsrc/menu/xonotic/dialog_settings_input.c:31 +msgid "Change key..." +msgstr "Taste ändern..." + +#: qcsrc/menu/xonotic/dialog_settings_input.c:35 +msgid "Edit..." +msgstr "Bearbeiten..." + +#: qcsrc/menu/xonotic/dialog_settings_input.c:46 +msgid "Sensitivity:" +msgstr "Empfindlichkeit:" + +#: qcsrc/menu/xonotic/dialog_settings_input.c:49 +msgid "UI mouse speed:" +msgstr "Mausgeschwindigkeit:" + +#: qcsrc/menu/xonotic/dialog_settings_input.c:52 +msgid "Mouse filter" +msgstr "Mausfilterung" + +#: qcsrc/menu/xonotic/dialog_settings_input.c:54 +msgid "Invert mouse" +msgstr "Höhe invertieren" + +#: qcsrc/menu/xonotic/dialog_settings_input.c:57 +#: qcsrc/menu/xonotic/dialog_settings_input.c:59 +msgid "Use joystick input" +msgstr "Joystick verwenden" + +#: qcsrc/menu/xonotic/dialog_settings_input.c:62 +#: qcsrc/menu/xonotic/dialog_settings_input.c:64 +msgid "Turn off OS mouse acceleration" +msgstr "Mausbeschleunigung deaktivieren" + +#: qcsrc/menu/xonotic/dialog_settings_input.c:66 +msgid "\"enter console\" also closes" +msgstr "\"Konsole öffnen\" schließt auch" + +#: qcsrc/menu/xonotic/dialog_settings_input_userbind.c:5 +msgid "User defined key bind" +msgstr "Benutzerdefinierte Tastenbelegung" + +#: qcsrc/menu/xonotic/dialog_settings_input_userbind.c:42 +msgid "Command when pressed:" +msgstr "Befehl beim Drücken:" + +#: qcsrc/menu/xonotic/dialog_settings_input_userbind.c:45 +msgid "Command when released:" +msgstr "Befehl beim Loslassen:" + +#: qcsrc/menu/xonotic/dialog_settings_input_userbind.c:48 +msgid "Save" +msgstr "Speichern" + +#: qcsrc/menu/xonotic/dialog_settings_input_userbind.c:51 +msgid "Cancel" +msgstr "Abbrechen" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:26 +msgid "Menu skins:" +msgstr "Menü-Skins:" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:47 +msgid "Show current time" +msgstr "Uhrzeit anzeigen" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:49 +msgid "Show current date" +msgstr "Datum anzeigen" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:51 +msgid "Show frames per second" +msgstr "Frames pro Sekunde anzeigen" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:53 +msgid "Speedometer" +msgstr "Tachometer" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:56 +msgid "qu/s (hidden)" +msgstr "qu/s (ohne Einheit)" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:58 +msgid "qu/s" +msgstr "qu/s" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:60 +msgid "m/s" +msgstr "m/s" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:64 +msgid "km/h" +msgstr "km/h" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:66 +msgid "mph" +msgstr "mph" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:68 +msgid "knots" +msgstr "Knoten" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:71 +msgid "Show accelerometer" +msgstr "Akzelerometer anzeigen" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:74 +msgid "Accelerometer scale:" +msgstr "Akzelerometer-Skalierung:" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:80 +msgid "Minimize input latency" +msgstr "Eingabelatenz minimieren" + +#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:5 +msgid "Advanced settings" +msgstr "Erweiterte Einstellungen" + +#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:23 +msgid "Cvar filter:" +msgstr "Cvar-Filter:" + +#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:34 +msgid "Setting:" +msgstr "Einstellung:" + +#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:42 +msgid "Value:" +msgstr "Wert:" + +#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:54 +msgid "Description:" +msgstr "Beschreibung:" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:26 +msgid "Client-side movement prediction" +msgstr "Client-seitige Bewegungssimulation" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:30 +msgid "Show netgraph" +msgstr "Netgraph anzeigen" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:33 +msgid "Network speed:" +msgstr "Netzwerkgeschwindigkeit:" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:35 +msgid "56k" +msgstr "Modem" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:36 +msgid "ISDN" +msgstr "ISDN" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:37 +msgid "Slow ADSL" +msgstr "ADSL (langsam)" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:38 +msgid "Fast ADSL" +msgstr "ADSL (schnell)" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:39 +msgid "Broadband" +msgstr "Breitband" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:42 +msgid "Input packets/s:" +msgstr "Eingabe-Pakete/s:" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:46 +msgid "HTTP downloads:" +msgstr "HTTP-Downloads:" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:49 +msgid "Downloads:" +msgstr "Downloads:" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:53 +msgid "Speed (kB/s):" +msgstr "Geschwindigkeit (kB/s):" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:57 +msgid "Client UDP port:" +msgstr "Client-UDP-Port:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:26 +msgid "Resolution:" +msgstr "Auflösung:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:29 +msgid "Font/UI size:" +msgstr "Schriftgröße:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:31 +msgid "SZ^Unreadable" +msgstr "Unleserlich" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:32 +msgid "SZ^Tiny" +msgstr "Winzig" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:33 +msgid "SZ^Little" +msgstr "Klein" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:34 +msgid "SZ^Small" +msgstr "Klein" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:35 +msgid "SZ^Medium" +msgstr "Mittel" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:36 +msgid "SZ^Large" +msgstr "Groß" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:37 +msgid "SZ^Huge" +msgstr "Riesig" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:38 +msgid "SZ^Gigantic" +msgstr "Gigantisch" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:39 +msgid "SZ^Colossal" +msgstr "Kolossal" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:42 +msgid "Color depth:" +msgstr "Farbtiefe:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:45 +msgid "Full screen" +msgstr "Vollbild" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:46 +msgid "Vertical Synchronization" +msgstr "Vertikale Synchronisation" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:49 +msgid "Use OpenGL 2.0 shaders (GLSL)" +msgstr "OpenGL 2.0 Shaders verwenden (GLSL)" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:52 +msgid "Use Occlusion Queries" +msgstr "Occlusion Queries verwenden" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:55 +msgid "Vertex Buffer Objects (VBOs)" +msgstr "Vertex Buffer Objects (VBOs)" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:58 +msgid "VBO^Off" +msgstr "Aus" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:59 +msgid "Vertices, some Tris (compatible)" +msgstr "Ecken, einige Dreiecke (kompatibel)" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:62 +msgid "Vertices" +msgstr "Ecken" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:63 +msgid "Vertices and Triangles" +msgstr "Ecken und Dreiecke" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:65 +msgid "Depth first:" +msgstr "Tiefe zuerst rendern:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:67 +msgid "DF^Disabled" +msgstr "Aus" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:68 +msgid "DF^World" +msgstr "nur Map" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:69 +msgid "DF^All" +msgstr "Immer" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:73 +msgid "Disable multithreaded OpenGL" +msgstr "OpenGL-Multithreading deaktivieren" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:75 +msgid "Wait for GPU to finish each frame" +msgstr "Bei jedem Frame auf die Grafikkarte warten" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:78 +msgid "Brightness:" +msgstr "Helligkeit:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:81 +msgid "Contrast:" +msgstr "Kontrast:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:84 +msgid "Gamma:" +msgstr "Gamma:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:87 +msgid "Contrast boost:" +msgstr "Kontrasterhöhung:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:90 +msgid "Saturation:" +msgstr "Sättigung:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:95 +msgid "Use GLSL to handle color control" +msgstr "GLSL für Farbregelung verwenden" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:99 +msgid "LIT^Ambient:" +msgstr "Umgebungslicht:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:102 +msgid "Intensity:" +msgstr "Lichtstärke:" + +#: qcsrc/menu/xonotic/dialog_singleplayer.c:4 +msgid "Singleplayer" +msgstr "Einzelspieler" + +#: qcsrc/menu/xonotic/dialog_singleplayer.c:59 +msgid "Instant action! (random map with bots)" +msgstr "Sofortstart! (zufällige Map mit Bots)" + +#: qcsrc/menu/xonotic/dialog_singleplayer.c:80 +msgid "Start Singleplayer!" +msgstr "Spiel starten!" + +#: qcsrc/menu/xonotic/dialog_singleplayer_winner.c:4 +msgid "Winner" +msgstr "Gewinner" + +#: qcsrc/menu/xonotic/dialog_teamselect.c:5 +msgid "Team Selection" +msgstr "Teamauswahl" + +#: qcsrc/menu/xonotic/dialog_teamselect.c:41 +msgid "join 'best' team (auto-select)" +msgstr "'bestem' Team beitreten" + +#: qcsrc/menu/xonotic/dialog_teamselect.c:45 +msgid "red" +msgstr "rot" + +#: qcsrc/menu/xonotic/dialog_teamselect.c:46 +msgid "blue" +msgstr "blau" + +#: qcsrc/menu/xonotic/dialog_teamselect.c:47 +msgid "yellow" +msgstr "gelb" + +#: qcsrc/menu/xonotic/dialog_teamselect.c:48 +msgid "pink" +msgstr "pink" + +#: qcsrc/menu/xonotic/dialog_teamselect.c:51 +msgid "spectate" +msgstr "zuschauen" + +#: qcsrc/menu/xonotic/mainwindow.c:35 qcsrc/menu/xonotic/mainwindow.c:38 +msgid "Do not press this button again!" +msgstr "Bitte nicht nochmal diesen Knopf drücken!" + +#: qcsrc/menu/xonotic/maplist.c:278 +msgid "" +"Huh? Can't play this (m is NULL). Refiltering so this won't happen again.\n" +msgstr "" +"Hä? Kann diese Map nicht starten (m ist NULL). Mapliste wird neu gefiltert.\n" + +#: qcsrc/menu/xonotic/maplist.c:286 +#, c-format +msgid "%s's Xonotic Server" +msgstr "%ss Xonotic-Server" + +#: qcsrc/menu/xonotic/maplist.c:291 +msgid "" +"Huh? Can't play this (invalid game type). Refiltering so this won't happen " +"again.\n" +msgstr "" +"Hä? Kann diese Map nicht starten (ungültiger Spieltyp). Mapliste wird neu " +"gefiltert.\n" + +#: qcsrc/menu/xonotic/playermodel.c:174 +msgid "" +msgstr "" + +#: qcsrc/menu/xonotic/serverlist.c:357 +msgid "Remove" +msgstr "Vergessen" + +#: qcsrc/menu/xonotic/serverlist.c:359 +msgid "Bookmark" +msgstr "Speichern" + +#: qcsrc/menu/xonotic/serverlist.c:515 +msgid "Ping" +msgstr "Ping" + +#: qcsrc/menu/xonotic/serverlist.c:516 +msgid "Host name" +msgstr "Servername" + +#: qcsrc/menu/xonotic/serverlist.c:517 +msgid "Map" +msgstr "Map" + +#: qcsrc/menu/xonotic/serverlist.c:518 +msgid "Type" +msgstr "Typ" + +#: qcsrc/menu/xonotic/serverlist.c:519 +msgid "Players" +msgstr "Spieler" + +#: qcsrc/menu/xonotic/skinlist.c:105 +msgid "" +msgstr "<TITEL>" + +#: qcsrc/menu/xonotic/skinlist.c:106 +msgid "<AUTHOR>" +msgstr "<AUTOR>" + +#: qcsrc/menu/xonotic/skinlist.c:163 +#, c-format +msgid "%s: %s" +msgstr "%s: %s" + +#: qcsrc/menu/xonotic/slider_decibels.c:50 +msgid "VOL^OFF" +msgstr "AUS" + +#: qcsrc/menu/xonotic/slider_decibels.c:52 +msgid "VOL^MAX" +msgstr "MAX" + +#: qcsrc/menu/xonotic/slider_decibels.c:53 +#, c-format +msgid "%s dB" +msgstr "%s dB" + +#: qcsrc/menu/xonotic/slider_resolution.c:65 +#, c-format +msgid "%dx%d" +msgstr "%dx%d" + +#: qcsrc/menu/xonotic/util.qc:270 +#, c-format +msgid "Received HTTP request data for an invalid id %d.\n" +msgstr "HTTP-Antwort für ungültige ID %d erhalten.\n" + +#: qcsrc/menu/xonotic/util.qc:285 +#, c-format +msgid "error receiving update notification: status is %d\n" +msgstr "Fehler beim Empfang von Update-Information (Status: %d)\n" + +#: qcsrc/menu/xonotic/util.qc:290 +msgid "error: received HTML instead of an update notification\n" +msgstr "Fehler: HTML statt Update-Information erhalten\n" + +#: qcsrc/menu/xonotic/util.qc:295 +msgid "error: received carriage returns from update notification server\n" +msgstr "Fehler: Carriage-Returns in Update-Information enthalten\n" + +#: qcsrc/menu/xonotic/util.qc:316 +#, c-format +msgid "" +"Update can be downloaded at:\n" +"%s\n" +msgstr "" +"Das Update kann bei:\n" +"%s\n" +"heruntergeladen werden.\n" + +#: qcsrc/menu/xonotic/util.qc:337 +msgid "Autogenerating mapinfo for newly added maps..." +msgstr "Automatische Generierung von mapinfo-Dateien..." + +#: qcsrc/menu/xonotic/util.qc:432 +#, c-format +msgid "Update to %s now!" +msgstr "Jetzt auf %s updaten!" + +#: qcsrc/menu/xonotic/util.qc:509 +msgid "" +"^1ERROR: Texture compression is required but not supported.\n" +"^1Expect visual problems.\n" +msgstr "" +"^1FEHLER: Texturekompression ist notwendig aber nicht unterstützt.\n" +"^1Darstellungsprobleme sind zu erwarten.\n" + +#: qcsrc/menu/xonotic/util.qc:531 +msgid "Arena" +msgstr "Arena" + +#: qcsrc/menu/xonotic/util.qc:532 +msgid "Assault" +msgstr "Assault" + +#: qcsrc/menu/xonotic/util.qc:533 +msgid "Capture The Flag" +msgstr "Capture The Flag" + +#: qcsrc/menu/xonotic/util.qc:534 +msgid "Clan Arena" +msgstr "Clan Arena" + +#: qcsrc/menu/xonotic/util.qc:535 +msgid "Deathmatch" +msgstr "Deathmatch" + +#: qcsrc/menu/xonotic/util.qc:536 +msgid "Domination" +msgstr "Domination" + +#: qcsrc/menu/xonotic/util.qc:537 +msgid "Freeze Tag" +msgstr "Freeze Tag" + +#: qcsrc/menu/xonotic/util.qc:538 +msgid "Keepaway" +msgstr "Keepaway" + +#: qcsrc/menu/xonotic/util.qc:539 +msgid "Key Hunt" +msgstr "Key Hunt" + +#: qcsrc/menu/xonotic/util.qc:540 +msgid "Last Man Standing" +msgstr "Last Man Standing" + +#: qcsrc/menu/xonotic/util.qc:541 +msgid "Nexball" +msgstr "Nexball" + +#: qcsrc/menu/xonotic/util.qc:542 +msgid "Onslaught" +msgstr "Onslaught" + +#: qcsrc/menu/xonotic/util.qc:543 +msgid "Race" +msgstr "Race" + +#: qcsrc/menu/xonotic/util.qc:544 +msgid "Race CTS" +msgstr "Race CTS" + +#: qcsrc/menu/xonotic/util.qc:545 +msgid "Runematch" +msgstr "Runematch" + +#: qcsrc/menu/xonotic/util.qc:546 +msgid "Team Deathmatch" +msgstr "Team Deathmatch" + +#: qcsrc/menu/xonotic/util.qc:565 +#, c-format +msgid "@!#%'n Tuba Throwing" +msgstr "@!#%'n Tuba-Werfen" + +#: qcsrc/menu/xonotic/util.qc:606 +msgid "Background:" +msgstr "Hintergrund:" + +#: qcsrc/menu/xonotic/util.qc:608 qcsrc/menu/xonotic/util.qc:624 +#: qcsrc/menu/xonotic/util.qc:633 qcsrc/menu/xonotic/util.qc:641 +#: qcsrc/menu/xonotic/util.qc:653 +msgid "Default" +msgstr "Standard" + +#: qcsrc/menu/xonotic/util.qc:619 +msgid "Use default" +msgstr "Standard verwenden" + +#: qcsrc/menu/xonotic/util.qc:639 +msgid "Team Color:" +msgstr "Teamfarbe:" + +#: qcsrc/menu/xonotic/util.qh:49 +msgid "Enable panel" +msgstr "Panel aktivieren" diff --git a/menu.dat.fr.po b/menu.dat.fr.po new file mode 100644 index 0000000000..7ee6148969 --- /dev/null +++ b/menu.dat.fr.po @@ -0,0 +1,2408 @@ +# Xonotic French Translation. +# Copyright (C) 2011 +# This file is distributed under the same license as the PACKAGE package. +# Calinou <hugohachel@gmail.com>, 2011. +# +msgid "" +msgstr "" +"Project-Id-Version: Xonotic 0.1preview\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2011-01-18 21:36+0100\n" +"PO-Revision-Date: 2011-01-18 11:53+0100\t\n" +"Last-Translator: Calinou <hugohachel@gmail.com>\n" +"Language-Team: LANGUAGE <LL@li.org>\n" +"Language: fr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: qcsrc/menu/gamecommand.qc:47 +#, c-format +msgid "error: status is %d\n" +msgstr "erreur: le status est %d\n" + +#: qcsrc/menu/gamecommand.qc:65 +msgid "Usage: menu_cmd command..., where possible commands are:\n" +msgstr "Utilisation: menu_cmd commande..., les commandes possibles sont:\n" + +#: qcsrc/menu/gamecommand.qc:66 +msgid " sync - reloads all cvars on the current menu page\n" +msgstr " sync - recharge toutes les variables sur la page actuelle\n" + +#: qcsrc/menu/gamecommand.qc:67 +msgid " directmenu ITEM - select a menu item as main item\n" +msgstr "" +" directmenu OBJET - séléctionner un objet de menu comme objet principal\n" + +#: qcsrc/menu/gamecommand.qc:193 +msgid "error creating curl handle\n" +msgstr "erreur de création du curl handle" + +#: qcsrc/menu/gamecommand.qc:239 +msgid "Invalid command. For a list of supported commands, try menu_cmd help.\n" +msgstr "" +"Commande invalide. Pour une liste des commandes supportées, tapez menu_cmd " +"help (dans la console).\n" + +#: qcsrc/menu/item/gecko.c:49 +msgid "Browser not initialized!" +msgstr "Navigateur non initialisé !" + +#: qcsrc/menu/item/label.c:63 +#, c-format +msgid "NOTE: label text %s too wide for label, condensed by factor %f\n" +msgstr "" +"REMARQUE: le texte label %s est trop large pour un label, condensé par le " +"facteur %f\n" + +#: qcsrc/menu/item/listbox.c:300 +#, c-format +msgid "Item %d" +msgstr "Objet %d" + +#: qcsrc/menu/item/slider.c:64 +#, c-format +msgid "%d (%s)" +msgstr "%d (%s)" + +#: qcsrc/menu/item/textslider.c:29 qcsrc/menu/item/textslider.c:31 +msgid "custom" +msgstr "personalisé" + +#: qcsrc/menu/menu.qc:29 +#, c-format +msgid "^4MQC Build information: %s\n" +msgstr "^4MQC Build information : %s (français)\n" + +#: qcsrc/menu/xonotic/campaign.c:284 +#: qcsrc/menu/xonotic/dialog_singleplayer.c:66 +msgid "???" +msgstr "???" + +#: qcsrc/menu/xonotic/campaign.c:285 +#, c-format +msgid "Level %d: %s" +msgstr "Niveau %d: %s" + +#: qcsrc/menu/xonotic/cvarlist.c:84 +msgid "will be saved to config.cfg" +msgstr "sera sauvegardé" + +#: qcsrc/menu/xonotic/cvarlist.c:86 +msgid "will not be saved" +msgstr "ne sera pas sauvegardé" + +#: qcsrc/menu/xonotic/cvarlist.c:88 +msgid "private" +msgstr "privé" + +#: qcsrc/menu/xonotic/cvarlist.c:90 +msgid "engine setting" +msgstr "paramètre moteur" + +#: qcsrc/menu/xonotic/cvarlist.c:92 +msgid "read only" +msgstr "lecture seule" + +#: qcsrc/menu/xonotic/dialog_credits.c:5 +msgid "Credits" +msgstr "Crédits" + +#: qcsrc/menu/xonotic/dialog_credits.c:21 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:82 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:269 +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:46 +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:55 +#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:59 +#: qcsrc/menu/xonotic/dialog_singleplayer_winner.c:21 +msgid "OK" +msgstr "OK" + +#: qcsrc/menu/xonotic/dialog_firstrun.c:4 +msgid "Welcome" +msgstr "Bienvenue" + +#: qcsrc/menu/xonotic/dialog_firstrun.c:33 +msgid "" +"Welcome to Xonotic, please select your language preference and enter your " +"player name to get started. You can change these options later through the " +"menu system." +msgstr "" + +#: qcsrc/menu/xonotic/dialog_firstrun.c:38 +#: qcsrc/menu/xonotic/dialog_settings_misc.c:35 +msgid "Text language:" +msgstr "Langue écran:" + +#: qcsrc/menu/xonotic/dialog_firstrun.c:47 +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:40 +#: qcsrc/menu/xonotic/dialog_settings_input_userbind.c:39 +msgid "Name:" +msgstr "Pseudonyme:" + +#: qcsrc/menu/xonotic/dialog_firstrun.c:69 +msgid "Save settings" +msgstr "Sauvegarder" + +#: qcsrc/menu/xonotic/dialog_hudpanel_ammo.c:4 +msgid "Ammo Panel" +msgstr "Panneau de munitions" + +#: qcsrc/menu/xonotic/dialog_hudpanel_ammo.c:22 +msgid "Ammunition display:" +msgstr "Affichage munitions:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_ammo.c:25 +msgid "Show only current ammo type" +msgstr "Ne montrer que le type de munition actuel" + +#: qcsrc/menu/xonotic/dialog_hudpanel_ammo.c:29 +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:28 +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:40 +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:28 +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:40 +msgid "Left" +msgstr "Gauche" + +#: qcsrc/menu/xonotic/dialog_hudpanel_ammo.c:30 +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:30 +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:41 +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:30 +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:41 +msgid "Right" +msgstr "Droite" + +#: qcsrc/menu/xonotic/dialog_hudpanel_chat.c:4 +msgid "Chat Panel" +msgstr "Panneau de Chat" + +#: qcsrc/menu/xonotic/dialog_hudpanel_chat.c:22 +msgid "Chat entries:" +msgstr "Entrées Chat:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_chat.c:25 +msgid "Chat size:" +msgstr "Taille du Chat:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_chat.c:29 +msgid "Chat lifetime:" +msgstr "Durée du Chat:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_chat.c:33 +msgid "Chat beep sound" +msgstr "Sons Chat:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_engineinfo.c:4 +msgid "Engine Info Panel" +msgstr "Panneau Info Moteur" + +#: qcsrc/menu/xonotic/dialog_hudpanel_engineinfo.c:22 +msgid "Engine info:" +msgstr "Info Moteur:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_engineinfo.c:25 +msgid "Use an averaging algorithm for fps" +msgstr "Utiliser un algorithme pour calculer les FPS" + +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:4 +msgid "Health/Armor Panel" +msgstr "Panneau Santé/Armure" + +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:22 +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:22 +msgid "Enable status bar" +msgstr "Activer jauges" + +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:24 +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:24 +msgid "Status bar alignment:" +msgstr "Alignement jauges:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:32 +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:42 +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:32 +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:42 +msgid "Inward" +msgstr "Intérieur" + +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:34 +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:43 +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:34 +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:43 +msgid "Outward" +msgstr "Extérieur" + +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:37 +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:37 +msgid "Icon alignment:" +msgstr "Alignement icônes:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:45 +msgid "Flip health and armor positions" +msgstr "Échanger positions Santé/Armure" + +#: qcsrc/menu/xonotic/dialog_hudpanel_infomessages.c:4 +msgid "Info Messages Panel" +msgstr "Panneau d'Information" + +#: qcsrc/menu/xonotic/dialog_hudpanel_infomessages.c:22 +msgid "Info messages:" +msgstr "Messages d'Info:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_infomessages.c:25 +msgid "Flip align" +msgstr "Échanger alignement" + +#: qcsrc/menu/xonotic/dialog_hudpanel_modicons.c:4 +msgid "Mod Icons Panel" +msgstr "Panneau d'Icônes de Mode" + +#: qcsrc/menu/xonotic/dialog_hudpanel_notification.c:4 +msgid "Notification Panel" +msgstr "Panneau de Notifications" + +#: qcsrc/menu/xonotic/dialog_hudpanel_notification.c:22 +msgid "Notifications:" +msgstr "Notifications:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_notification.c:25 +msgid "Also print notifications to the console" +msgstr "Montrer notifications sur la console" + +#: qcsrc/menu/xonotic/dialog_hudpanel_notification.c:28 +msgid "Flip notify order" +msgstr "Inverser l'ordre de notification" + +#: qcsrc/menu/xonotic/dialog_hudpanel_notification.c:31 +msgid "Entry lifetime:" +msgstr "Durée d'une entrée:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_notification.c:35 +msgid "Entry fadetime:" +msgstr "Temps d'effacement d'une entrée:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:4 +msgid "Powerups Panel" +msgstr "Panneau des Pouvoirs" + +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:45 +msgid "Flip strength and shield positions" +msgstr "Échanger les positions Force/Bouclier" + +#: qcsrc/menu/xonotic/dialog_hudpanel_pressedkeys.c:4 +msgid "Pressed Keys Panel" +msgstr "Panneau Touches Pressées" + +#: qcsrc/menu/xonotic/dialog_hudpanel_pressedkeys.c:21 +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:21 +msgid "Panel disabled" +msgstr "Panneau désactivé" + +#: qcsrc/menu/xonotic/dialog_hudpanel_pressedkeys.c:22 +msgid "Panel enabled when spectating" +msgstr "Paneau activé en spectateur" + +#: qcsrc/menu/xonotic/dialog_hudpanel_pressedkeys.c:23 +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:23 +msgid "Panel always enabled" +msgstr "Paneau toujours activé" + +#: qcsrc/menu/xonotic/dialog_hudpanel_pressedkeys.c:30 +msgid "Forced aspect:" +msgstr "Aspect forcé:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_racetimer.c:4 +msgid "Race Timer Panel" +msgstr "Chronomètre Course" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:4 +msgid "Radar Panel" +msgstr "Panneau Mini-carte" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:22 +msgid "Panel enabled in teamgames" +msgstr "Panneau activé en Équipe" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:29 +msgid "Radar:" +msgstr "Mini-carte:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:32 +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:43 +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:82 +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:151 +#: qcsrc/menu/xonotic/util.qc:631 +msgid "Alpha:" +msgstr "Opacité:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:36 +msgid "Rotation:" +msgstr "Rotation:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:38 +msgid "Forward" +msgstr "Direction marche" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:39 +msgid "West" +msgstr "Ouest" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:40 +msgid "South" +msgstr "Sud" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:41 +msgid "East" +msgstr "Est" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:42 +msgid "North" +msgstr "Nord" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:46 +msgid "Scale:" +msgstr "Échelle:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:50 +msgid "Zoom mode:" +msgstr "Mode de Zoom:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:52 +msgid "Zoomed in" +msgstr "Zoomé" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:53 +msgid "Zoomed out" +msgstr "Dézoomé" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:54 +msgid "Always zoomed" +msgstr "Toujours Zoomé" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:55 +msgid "Never zoomed" +msgstr "Toujours Dézoomé" + +#: qcsrc/menu/xonotic/dialog_hudpanel_score.c:4 +msgid "Score Panel" +msgstr "Tableau des scores" + +#: qcsrc/menu/xonotic/dialog_hudpanel_timer.c:4 +msgid "Timer Panel" +msgstr "Chronomètre" + +#: qcsrc/menu/xonotic/dialog_hudpanel_timer.c:22 +msgid "Timer:" +msgstr "Chronomètre:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_timer.c:25 +msgid "Show elapsed time" +msgstr "Montrer temps passé" + +#: qcsrc/menu/xonotic/dialog_hudpanel_vote.c:4 +msgid "Vote Panel" +msgstr "Panneau de Vote" + +#: qcsrc/menu/xonotic/dialog_hudpanel_vote.c:22 +msgid "Alpha after voting:" +msgstr "Opacité après vote:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:4 +msgid "Weapons Panel" +msgstr "Panneau d'armes" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:24 +msgid "Fade out after:" +msgstr "Effacer après:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:26 +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:41 +msgid "Never" +msgstr "Jamais" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:28 +#, c-format +msgid "%ds" +msgstr "%ds" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:32 +msgid "Fade effect:" +msgstr "Effet d'effacement:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:33 +msgid "EF^None" +msgstr "Aucun" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:35 +msgid "Slide" +msgstr "Glisse" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:37 +msgid "Alpha" +msgstr "Opacité" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:40 +msgid "Weapon icons:" +msgstr "Icônes d'armes:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:43 +msgid "Show weapon ID as:" +msgstr "Montrer le numéro d'arme:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:44 +msgid "SHOWAS^None" +msgstr "Aucun" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:45 +msgid "Number" +msgstr "Numéro" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:46 +msgid "Bind" +msgstr "Touche" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:49 +msgid "Show Accuracy" +msgstr "Monter la précision" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:50 +msgid "Show Ammo" +msgstr "Montrer barre de monitions" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:53 +msgid "Ammo bar color:" +msgstr "Couleur barre de munitions:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:59 +msgid "Ammo bar alpha:" +msgstr "Opacité barre de munitions:" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:4 +msgid "Panel HUD Setup" +msgstr "Configuration Interface" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:21 +msgid "Panel background defaults:" +msgstr "Fond du Panneau par défaut:" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:25 +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:37 +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:52 +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:91 qcsrc/menu/xonotic/util.qc:609 +#: qcsrc/menu/xonotic/util.qc:625 qcsrc/menu/xonotic/util.qc:642 +msgid "Disable" +msgstr "Désactiver" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:30 +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:77 qcsrc/menu/xonotic/util.qc:614 +msgid "Color:" +msgstr "Couleur:" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:35 qcsrc/menu/xonotic/util.qc:622 +msgid "Border size:" +msgstr "Taille des bords:" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:50 +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:89 +msgid "Team color:" +msgstr "Couleur d'équipe:" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:58 qcsrc/menu/xonotic/util.qc:648 +msgid "Test team color in configure mode" +msgstr "Affichier la couleur d'équipe en mode configuration" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:61 qcsrc/menu/xonotic/util.qc:651 +msgid "Padding:" +msgstr "Ajustement:" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:68 +msgid "HUD Dock:" +msgstr "Contour interface:" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:70 +msgid "DOCK^Disabled" +msgstr "Désactivé" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:71 +msgid "DOCK^Small" +msgstr "Petit" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:72 +msgid "DOCK^Medium" +msgstr "Moyen" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:73 +msgid "DOCK^Large" +msgstr "Grand" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:96 +msgid "Grid settings:" +msgstr "Paramètres grille:" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:99 +msgid "Snap panels to grid" +msgstr "Coller paneaux sur la grille" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:102 +msgid "Grid size:" +msgstr "Taille de grille:" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:103 +msgid "X:" +msgstr "X:" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:109 +msgid "Y:" +msgstr "Y:" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:117 +msgid "Exit setup" +msgstr "Sauvegarder et quitter" + +#: qcsrc/menu/xonotic/dialog_multiplayer.c:4 +msgid "Multiplayer" +msgstr "Multijoueur" + +#: qcsrc/menu/xonotic/dialog_multiplayer.c:18 +msgid "Servers" +msgstr "Serveurs" + +#: qcsrc/menu/xonotic/dialog_multiplayer.c:19 +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:5 +msgid "Create" +msgstr "Créer" + +#: qcsrc/menu/xonotic/dialog_multiplayer.c:20 +msgid "Demos" +msgstr "Vidéos" + +#: qcsrc/menu/xonotic/dialog_multiplayer.c:21 +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:5 +msgid "Player Setup" +msgstr "Paramètres Joueur" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:35 +msgid "Game type:" +msgstr "Mode de jeu:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:47 +msgid "Match settings:" +msgstr "Paramètres match:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:50 +msgid "Time limit:" +msgstr "Limite de temps:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:54 +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:62 +msgid "Use map specified default" +msgstr "Utiliser le paramètre de carte" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:57 +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:156 +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:157 +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:158 +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:162 +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:163 +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:164 +msgid "Point limit:" +msgstr "Limite de points:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:65 +msgid "Player slots:" +msgstr "Nombre de joueurs max.:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:68 +msgid "Number of bots:" +msgstr "Nombre de robots:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:72 +msgid "Bot skill:" +msgstr "Difficulté robot:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:75 +msgid "Botlike" +msgstr "Nul" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:76 +msgid "Beginner" +msgstr "Jeu d'enfant" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:77 +msgid "You will win" +msgstr "Très Facile" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:78 +msgid "You can win" +msgstr "Facile" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:79 +msgid "You might win" +msgstr "Assez Facile" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:80 +msgid "Advanced" +msgstr "Avancé" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:81 +msgid "Expert" +msgstr "Expert" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:82 +msgid "Pro" +msgstr "Professionel" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:83 +msgid "Assassin" +msgstr "Assassin" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:84 +msgid "Unhuman" +msgstr "Inhumain" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:85 +msgid "Godlike" +msgstr "Dieu" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:89 +msgid "Mutators..." +msgstr "Spéciales..." + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:98 +#: qcsrc/menu/xonotic/dialog_settings_misc.c:84 +msgid "Advanced settings..." +msgstr "Paramètres avancés..." + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:105 +msgid "Map list:" +msgstr "Liste de cartes:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:111 +msgid "Select all" +msgstr "Tout séléctionner" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:114 +msgid "Select none" +msgstr "Ne rien séléctionner" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:120 +msgid "Start Multiplayer!" +msgstr "Démarrer!" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:155 +msgid "Capture limit:" +msgstr "Limite de captures:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:159 +msgid "Lives:" +msgstr "Vies:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:160 +msgid "Laps:" +msgstr "Tours:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:161 +msgid "Goals:" +msgstr "Buts:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:165 +msgid "Frag limit:" +msgstr "Limite de tués:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:6 +msgid "Advanced server settings" +msgstr "Paramètres serveur avancés" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:25 +msgid "Game settings:" +msgstr "Paramètres jeu" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:28 +msgid "Allow spectating" +msgstr "Autoriser les spectateurs" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:31 +msgid "Spawn shield:" +msgstr "Bouclier de départ:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:36 +msgid "Game speed:" +msgstr "Vitesse de jeu:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:40 +msgid "Teamplay settings:" +msgstr "Paramètres Jeu d'équipe:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:43 +msgid "Friendly fire scale:" +msgstr "Facteur Dégâts équipiers:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:47 +msgid "Virtual friendly fire (effect only)" +msgstr "Dégâts équipiers virtuels (seulement effets)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:50 +msgid "Friendly fire penalty:" +msgstr "Pénalité Dégâts équipiers:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:54 +msgid "Virtual penalty (effect only)" +msgstr "Pénalité Dégâts équipiers virtuelle (seulement effets)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:57 +msgid "Teams:" +msgstr "Équipes:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:66 +msgid "Map voting:" +msgstr "Vote carte suivante:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:68 +msgid "No voting" +msgstr "Pas de vote" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:69 +msgid "2 choices" +msgstr "2 choix" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:70 +msgid "3 choices" +msgstr "3 choix" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:71 +msgid "4 choices" +msgstr "4 choix" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:72 +msgid "5 choices" +msgstr "5 choix" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:73 +msgid "6 choices" +msgstr "6 choix" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:74 +msgid "7 choices" +msgstr "7 choix" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:75 +msgid "8 choices" +msgstr "8 choix" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:76 +msgid "9 choices" +msgstr "9 choix" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:79 +msgid "Simple majority wins vcall" +msgstr "Majorité 51% pour gagner le vote" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:5 +msgid "Map Information" +msgstr "Information carte:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:49 +msgid "Full item placement" +msgstr "Objets présents" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:49 +msgid "MinstaGib only" +msgstr "MinstaGib seulement" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:78 +msgid "Title:" +msgstr "Titre:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:84 +msgid "Author:" +msgstr "Auteur:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:90 +msgid "Features:" +msgstr "Fonctions:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:95 +msgid "Game types:" +msgstr "Modes de jeux:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:119 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:308 +msgid "Close" +msgstr "Fermer" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:122 +#: qcsrc/menu/xonotic/dialog_multiplayer_demo.c:46 +msgid "Play" +msgstr "Jouer" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:7 +msgid "Mutators" +msgstr "Spéciales" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:33 +msgid "All Weapons Arena" +msgstr "Toutes les armes" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:35 +msgid "Most Weapons Arena" +msgstr "Beaucoup d'armes" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:56 +#, c-format +msgid "%s Arena" +msgstr "Arène de %s" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:68 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:167 +msgid "Dodging" +msgstr "Esquives" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:70 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:250 +msgid "MinstaGib" +msgstr "MinstaGib" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:72 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:253 +msgid "NIX" +msgstr "NIX" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:74 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:205 +msgid "Rocket Flying" +msgstr "Roquettes volantes" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:78 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:264 +msgid "No start weapons" +msgstr "Pas d'armes au début" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:80 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:189 +msgid "Low gravity" +msgstr "Gravité basse" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:82 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:170 +msgid "Cloaked" +msgstr "Joueurs transparents" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:84 +msgid "Hook" +msgstr "Grappin" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:86 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:173 +msgid "Midair" +msgstr "Midair" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:88 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:176 +msgid "Vampire" +msgstr "Vampire" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:90 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:208 +msgid "Piñata" +msgstr "Piñata" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:92 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:211 +msgid "Weapons stay" +msgstr "Armes infinies" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:94 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:180 +msgid "Blood loss" +msgstr "Perte de sang" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:96 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:202 +msgid "Jet pack" +msgstr "Jet pack" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:98 +msgid "MUT^None" +msgstr "Aucun" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:164 +msgid "Gameplay mutators:" +msgstr "Spéciales Mode de jeu:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:196 +msgid "Weapon & item mutators:" +msgstr "Spéciales Armes et Objets:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:199 +msgid "Grappling hook" +msgstr "Grappin" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:215 +msgid "Weapon arenas:" +msgstr "Arènes d'armes:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:218 +msgid "Regular (no arena)" +msgstr "Régulier (pas d'Arène)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:239 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:256 +msgid "with laser" +msgstr "avec le laser" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:247 +msgid "Special arenas:" +msgstr "Arènes Spéciales:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:260 +msgid "Most weapons" +msgstr "Beaucoup d'armes" + +#: qcsrc/menu/xonotic/dialog_multiplayer_demo.c:4 +msgid "Demo" +msgstr "Vidéo" + +#: qcsrc/menu/xonotic/dialog_multiplayer_demo.c:28 +msgid "Record demos while playing" +msgstr "Auto-enregistrement des Vidéos" + +#: qcsrc/menu/xonotic/dialog_multiplayer_demo.c:32 +#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:28 +msgid "Filter:" +msgstr "Recherche:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_demo.c:33 +#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:29 +#: qcsrc/menu/xonotic/dialog_settings_input.c:41 +#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:24 +msgid "Clear" +msgstr "Effacer" + +#: qcsrc/menu/xonotic/dialog_multiplayer_demo.c:43 +msgid "Timedemo" +msgstr "Test Performance" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:4 +msgid "Join" +msgstr "Joindre" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:36 +msgid "SRVS^Empty" +msgstr "Vide" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:40 +msgid "SRVS^Full" +msgstr "Tout" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:44 +msgid "Pause" +msgstr "Pause" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:56 +msgid "Address:" +msgstr "Adresse:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:65 +msgid "Info..." +msgstr "Info..." + +#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:70 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:311 +msgid "Join!" +msgstr "Joindre !" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:5 +msgid "Server Information" +msgstr "Information Serveur" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:115 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:116 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:177 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:183 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:193 +msgid "N/A" +msgstr "N/A" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:151 +#, c-format +msgid "%d/%d" +msgstr "%d/%d" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:166 +#, c-format +msgid "%d modified settings" +msgstr "paramètres modifiés: %d" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:166 +msgid "Official settings" +msgstr "Paramètres Officiels" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:191 +msgid "N/A (can't connect)" +msgstr "N/A (ne peut pas se connecter)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:199 +msgid "not supported (can't connect)" +msgstr "non supporté (ne peut pas se connecter)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:201 +msgid "not supported (won't encrypt)" +msgstr "non supporté (pas de cryptage)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:205 +msgid "supported (will encrypt)" +msgstr "supporté (cryptage)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:207 +msgid "supported (won't encrypt)" +msgstr "supporté (pas de cryptage)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:211 +msgid "requested (will encrypt)" +msgstr "démandé (cryptage)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:213 +msgid "requested (won't encrypt)" +msgstr "démandé (pas de cryptage)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:217 +msgid "required (can't connect)" +msgstr "nécessaire (ne peut pas se connecter)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:219 +msgid "required (will encrypt)" +msgstr "nécessaire (cryptage)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:240 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:263 +msgid "Players:" +msgstr "Joueurs:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:248 +#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:38 +msgid "Type:" +msgstr "Type:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:253 +msgid "Map:" +msgstr "Carte:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:258 +msgid "Gameplay:" +msgstr "Mode:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:268 +msgid "Bots:" +msgstr "Robots:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:273 +msgid "Mod:" +msgstr "Modification:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:278 +msgid "Version:" +msgstr "Version:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:283 +msgid "Ping:" +msgstr "Latence:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:289 +msgid "CA:" +msgstr "CA:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:295 +msgid "Key:" +msgstr "Clé:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:301 +msgid "Encryption:" +msgstr "Cryptage:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:63 +msgid "Model:" +msgstr "Personnage:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:88 +msgid "Field of view:" +msgstr "Champ de vision:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:92 +msgid "View bobbing:" +msgstr "Caméra marche:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:96 +msgid "Zoom factor:" +msgstr "Facteur de Zoom:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:100 +msgid "Zoom speed:" +msgstr "Vitesse de Zoom:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:103 +msgid "Weapon settings..." +msgstr "Paramètres armes..." + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:110 +msgid "Crosshair:" +msgstr "Viseur:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:111 +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:143 +msgid "Per weapon" +msgstr "Par arme" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:130 +msgid "Crosshair size:" +msgstr "Taille viseur:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:134 +msgid "Crosshair alpha:" +msgstr "Opacité viseur:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:138 +msgid "Crosshair color:" +msgstr "Couleur viseur:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:145 +msgid "Enable center dot" +msgstr "Activer point central" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:148 +msgid "Size:" +msgstr "Taille:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:155 +msgid "Hit test:" +msgstr "Détection toucher:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:156 +msgid "HTST^None" +msgstr "Aucun" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:157 +msgid "TrueAim" +msgstr "TrueAim" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:158 +msgid "Enemies" +msgstr "Enemis" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:161 +msgid "Waypoints setup..." +msgstr "Paramètres Waypoints..." + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:167 +msgid "Enter HUD editor" +msgstr "Éditer l'interface" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:174 +msgid "Force models:" +msgstr "Forcer personnages:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:175 +msgid "MDL^None" +msgstr "Aucun" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:176 +msgid "MDL^Custom" +msgstr "Personnalisé" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:177 +msgid "MDL^All" +msgstr "Tout" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:179 +msgid "Disable gore effects" +msgstr "Désactiver effets gore" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:181 +msgid "Gibs:" +msgstr "Gibs:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:183 +msgid "GIBS^None" +msgstr "Aucun" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:184 +msgid "GIBS^Few" +msgstr "Quelques" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:185 +msgid "GIBS^Many" +msgstr "Plusieurs" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:186 +msgid "GIBS^Lots" +msgstr "Beaucoup" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:190 +msgid "Damage splash:" +msgstr "Effet santé faible:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:194 +#: qcsrc/menu/xonotic/dialog_settings_audio.c:178 +#: qcsrc/menu/xonotic/dialog_settings_effects.c:193 +#: qcsrc/menu/xonotic/dialog_settings_misc.c:30 +#: qcsrc/menu/xonotic/dialog_settings_misc.c:41 +#: qcsrc/menu/xonotic/dialog_settings_video.c:106 +msgid "Apply immediately" +msgstr "Appliquer maintenant" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:5 +msgid "Waypoints" +msgstr "Waypoints" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:23 +msgid "Waypoint settings:" +msgstr "Paramètres Waypoint (flèches 3D sur la carte):" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:26 +msgid "Show base waypoints" +msgstr "Montrer les Waypoints de drapeau" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:29 +msgid "Waypoint scale:" +msgstr "Taille des Waypoints:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:34 +msgid "Waypoint alpha:" +msgstr "Opacité Waypoints:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:39 +msgid "Show names:" +msgstr "Montrer les noms:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:42 +msgid "Teammates" +msgstr "Équipiers" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:43 +msgid "All players" +msgstr "Tous les joueurs" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:6 +msgid "Weapon settings" +msgstr "Paramètres d'armes" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:29 +msgid "Weapon priority list:" +msgstr "Liste de priorité armes:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:34 +msgid "Up" +msgstr "Haut" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:37 +msgid "Down" +msgstr "Bas" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:41 +msgid "Use priority list for weapon cycling" +msgstr "Utiliser la liste de priorité pour changer les armes" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:43 +msgid "Auto switch weapons on pickup" +msgstr "Changer d'arme en prenant une arme meilleure" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:45 +msgid "Draw 1st person weapon model" +msgstr "Afficher l'arme à la première personne" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:48 +msgid "Left align" +msgstr "À gauche" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:50 +msgid "Right align" +msgstr "À droite" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:53 +msgid "Flip view horizontally" +msgstr "Vue Mirroir" + +#: qcsrc/menu/xonotic/dialog_news.c:4 +msgid "News" +msgstr "News" + +#: qcsrc/menu/xonotic/dialog_news.c:18 +msgid "http://www.xonotic.org/team/blog/" +msgstr "http://www.xonotic.org/team/blog/" + +#: qcsrc/menu/xonotic/dialog_quit.c:4 +msgid "Quit" +msgstr "Quitter" + +#: qcsrc/menu/xonotic/dialog_quit.c:17 +msgid "Are you sure you want to quit?" +msgstr "Voulez-vous vraiment quitter ?" + +#: qcsrc/menu/xonotic/dialog_quit.c:20 +msgid "Yes" +msgstr "Oui" + +#: qcsrc/menu/xonotic/dialog_quit.c:21 +msgid "No" +msgstr "Non" + +#: qcsrc/menu/xonotic/dialog_settings.c:4 +msgid "Settings" +msgstr "Préférences" + +#: qcsrc/menu/xonotic/dialog_settings.c:18 +#: qcsrc/menu/xonotic/dialog_settings_input.c:4 +msgid "Input" +msgstr "Contrôles" + +#: qcsrc/menu/xonotic/dialog_settings.c:19 +#: qcsrc/menu/xonotic/dialog_settings_video.c:4 +msgid "Video" +msgstr "Vidéo" + +#: qcsrc/menu/xonotic/dialog_settings.c:20 +#: qcsrc/menu/xonotic/dialog_settings_effects.c:4 +msgid "Effects" +msgstr "Graphiques" + +#: qcsrc/menu/xonotic/dialog_settings.c:21 +#: qcsrc/menu/xonotic/dialog_settings_audio.c:4 +msgid "Audio" +msgstr "Audio" + +#: qcsrc/menu/xonotic/dialog_settings.c:22 +#: qcsrc/menu/xonotic/dialog_settings_network.c:4 +msgid "Network" +msgstr "Réseau" + +#: qcsrc/menu/xonotic/dialog_settings.c:23 +#: qcsrc/menu/xonotic/dialog_settings_misc.c:4 +msgid "Misc" +msgstr "Autres" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:27 +msgid "Master:" +msgstr "Général:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:33 +msgid "Music:" +msgstr "Musique:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:40 +msgid "VOL^Ambient:" +msgstr "Ambience:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:48 +msgid "Info:" +msgstr "Information:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:57 +msgid "Items:" +msgstr "Objets:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:65 +msgid "Pain:" +msgstr "Douleur:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:73 +msgid "Player:" +msgstr "Joueur:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:81 +msgid "Shots:" +msgstr "Tirs:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:88 +msgid "Voice:" +msgstr "Voix:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:96 +msgid "Weapons:" +msgstr "Armes:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:103 +#: qcsrc/menu/xonotic/dialog_settings_audio.c:161 +msgid "Frequency:" +msgstr "Fréquence:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:105 +msgid "8 kHz" +msgstr "8 kHz" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:106 +msgid "11.025 kHz" +msgstr "11.025 kHz" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:107 +msgid "16 kHz" +msgstr "16 kHz" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:108 +msgid "22.05 kHz" +msgstr "22.05 kHz" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:109 +msgid "24 kHz" +msgstr "24 kHz" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:110 +msgid "32 kHz" +msgstr "32 kHz" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:111 +msgid "44.1 kHz" +msgstr "44.1 kHz" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:112 +msgid "48 kHz" +msgstr "48 kHz" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:115 +msgid "Channels:" +msgstr "Canaux:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:117 +msgid "Mono" +msgstr "Mono" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:118 +msgid "Stereo" +msgstr "Stéréo" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:119 +msgid "2.1" +msgstr "2.1" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:120 +msgid "4" +msgstr "4" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:121 +msgid "5" +msgstr "5" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:122 +msgid "5.1" +msgstr "5.1" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:123 +msgid "6.1" +msgstr "6.1" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:124 +msgid "7.1" +msgstr "7.1" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:128 +msgid "Swap Stereo" +msgstr "Échanger les canaux Stéréo" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:132 +msgid "Headphone friendly mode" +msgstr "Mode casque audio" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:136 +msgid "Spatial voices:" +msgstr "Voix personnages:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:137 +msgid "VOCS^None" +msgstr "Aucun" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:138 +msgid "VOCS^Taunts" +msgstr "Voix" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:139 +msgid "VOCS^All" +msgstr "Tout" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:142 +msgid "Taunt range:" +msgstr "Distance voix:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:145 +msgid "RNG^Very short" +msgstr "Très court" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:146 +msgid "RNG^Short" +msgstr "Court" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:147 +msgid "RNG^Normal" +msgstr "Normal" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:148 +msgid "RNG^Long" +msgstr "Long" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:149 +msgid "RNG^Full" +msgstr "Tout" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:156 +msgid "Automatic taunts" +msgstr "Voix automatiques" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:165 +msgid "Time warning:" +msgstr "Avertissement temps:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:167 +msgid "WRN^None" +msgstr "Aucun" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:168 +msgid "1 minute" +msgstr "1 minute" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:169 +msgid "5 minutes" +msgstr "5 minutes" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:170 +msgid "WRN^Both" +msgstr "Les deux" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:173 +msgid "Hit indicator" +msgstr "Son tir réussi" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:175 +msgid "Menu sounds" +msgstr "Sons du menu" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:38 +msgid "Quality preset:" +msgstr "Qualité effets:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:41 +msgid "PRE^OMG!" +msgstr "OMG!" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:42 +msgid "PRE^Low" +msgstr "Bas" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:43 +msgid "PRE^Medium" +msgstr "Moyen" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:44 +msgid "PRE^Normal" +msgstr "Normal" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:45 +msgid "PRE^High" +msgstr "Élevé" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:46 +msgid "PRE^Ultra" +msgstr "Très Élevé" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:48 +msgid "PRE^Ultimate" +msgstr "Ultime" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:52 +msgid "Geometry detail:" +msgstr "Détail géométrie:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:54 +msgid "DET^Lowest" +msgstr "Très Bas" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:55 +msgid "DET^Low" +msgstr "Bas" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:56 +msgid "DET^Normal" +msgstr "Normal" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:57 +msgid "DET^Good" +msgstr "Bon" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:58 +msgid "DET^Best" +msgstr "Élevé" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:59 +msgid "DET^Insane" +msgstr "Extrême" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:62 +msgid "Antialiasing:" +msgstr "Anticrénelage:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:64 +msgid "AA^Disabled" +msgstr "Désactivé" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:65 +#: qcsrc/menu/xonotic/dialog_settings_effects.c:103 +msgid "2x" +msgstr "2x" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:66 +#: qcsrc/menu/xonotic/dialog_settings_effects.c:104 +msgid "4x" +msgstr "4x" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:70 +msgid "Texture resolution:" +msgstr "Qualité textures:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:73 +msgid "RES^Leet" +msgstr "Leet" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:74 +msgid "RES^Lowest" +msgstr "Très Bas" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:75 +msgid "RES^Low" +msgstr "Bas" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:76 +msgid "RES^Normal" +msgstr "Normal" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:77 +msgid "RES^Good" +msgstr "Bon" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:78 +msgid "RES^Best" +msgstr "Élevé" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:91 +#: qcsrc/menu/xonotic/dialog_settings_effects.c:94 +msgid "Avoid lossy texture compression" +msgstr "Éviter la compression rapide" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:100 +msgid "Anisotropy:" +msgstr "Filtrage Anistrope:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:102 +msgid "ANISO^Disabled" +msgstr "Désactivé" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:105 +msgid "8x" +msgstr "8x" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:106 +msgid "16x" +msgstr "16x" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:110 +msgid "Particle quality:" +msgstr "Qualité particules:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:113 +msgid "Particle distance:" +msgstr "Distance max. particules:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:117 +msgid "Decals" +msgstr "Marques impacts" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:120 +msgid "Distance:" +msgstr "Distance max.:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:126 +msgid "Time:" +msgstr "Temps:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:132 +msgid "Use lightmaps" +msgstr "Utiliser les lightmaps" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:133 +msgid "Deluxe mapping" +msgstr "Textures Deluxe" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:135 +msgid "Gloss" +msgstr "Brillance textures" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:138 +msgid "Offset mapping" +msgstr "Textures relief" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:140 +msgid "Relief mapping" +msgstr "Textures relief avancé" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:143 +msgid "Reflections:" +msgstr "Réflections:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:146 +msgid "Blurred" +msgstr "Flou" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:147 +msgid "REFL^Good" +msgstr "Bon" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:148 +msgid "Sharp" +msgstr "Net" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:153 +msgid "Show surfaces" +msgstr "Textures unies" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:155 +msgid "No dynamic lighting" +msgstr "Pas de lumières dynamiques" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:157 +msgid "Flash blend approximation" +msgstr "Lumières dynamiques rapides" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:159 +msgid "Realtime dynamic lighting" +msgstr "Lumières dynamiques en temps réel" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:160 +#: qcsrc/menu/xonotic/dialog_settings_effects.c:164 +msgid "Shadows" +msgstr "Ombres" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:163 +msgid "Realtime world lighting" +msgstr "Lumières carte en temps réel" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:168 +msgid "Use normal maps" +msgstr "Lumières Deluxe" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:170 +msgid "Soft shadows" +msgstr "Ombres avancées" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:173 +msgid "Coronas" +msgstr "Brillance Lumière" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:175 +msgid "Bloom" +msgstr "Effets d'éblouissement" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:177 +msgid "High Dynamic Range (HDR)" +msgstr "High Dynamic Range (HDR)" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:181 +msgid "Motion blur:" +msgstr "Flou de vitesse:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:187 +msgid "Damage blur:" +msgstr "Flou de dégâts:" + +#: qcsrc/menu/xonotic/dialog_settings_input.c:26 +msgid "Key bindings:" +msgstr "Contrôles:" + +#: qcsrc/menu/xonotic/dialog_settings_input.c:31 +msgid "Change key..." +msgstr "Changer touche..." + +#: qcsrc/menu/xonotic/dialog_settings_input.c:35 +msgid "Edit..." +msgstr "Éditer..." + +#: qcsrc/menu/xonotic/dialog_settings_input.c:46 +msgid "Sensitivity:" +msgstr "Senstitivité:" + +#: qcsrc/menu/xonotic/dialog_settings_input.c:49 +msgid "UI mouse speed:" +msgstr "Vitesse souris menus:" + +#: qcsrc/menu/xonotic/dialog_settings_input.c:52 +msgid "Mouse filter" +msgstr "Filtre Souris" + +#: qcsrc/menu/xonotic/dialog_settings_input.c:54 +msgid "Invert mouse" +msgstr "Inverser souris (axe Y)" + +#: qcsrc/menu/xonotic/dialog_settings_input.c:57 +#: qcsrc/menu/xonotic/dialog_settings_input.c:59 +msgid "Use joystick input" +msgstr "Utiliser une manette" + +#: qcsrc/menu/xonotic/dialog_settings_input.c:62 +#: qcsrc/menu/xonotic/dialog_settings_input.c:64 +msgid "Turn off OS mouse acceleration" +msgstr "Désactiver l'accélération souris de l'OS" + +#: qcsrc/menu/xonotic/dialog_settings_input.c:66 +msgid "\"enter console\" also closes" +msgstr "\"ouvrir la console\" ferme aussi la console" + +#: qcsrc/menu/xonotic/dialog_settings_input_userbind.c:5 +msgid "User defined key bind" +msgstr "Touche d'éxécution:" + +#: qcsrc/menu/xonotic/dialog_settings_input_userbind.c:42 +msgid "Command when pressed:" +msgstr "Commande quand appuyée:" + +#: qcsrc/menu/xonotic/dialog_settings_input_userbind.c:45 +msgid "Command when released:" +msgstr "Commande quand relachée:" + +#: qcsrc/menu/xonotic/dialog_settings_input_userbind.c:48 +msgid "Save" +msgstr "Sauvegarder" + +#: qcsrc/menu/xonotic/dialog_settings_input_userbind.c:51 +msgid "Cancel" +msgstr "Annuler" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:26 +msgid "Menu skins:" +msgstr "Apparences menu:" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:47 +msgid "Show current time" +msgstr "Montrer l'heure" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:49 +msgid "Show current date" +msgstr "Montrer la date" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:51 +msgid "Show frames per second" +msgstr "Montrer les Images Par Seconde" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:53 +msgid "Speedometer" +msgstr "Speedomètre" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:56 +msgid "qu/s (hidden)" +msgstr "qu/s (caché)" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:58 +msgid "qu/s" +msgstr "qu/s" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:60 +msgid "m/s" +msgstr "m/s" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:64 +msgid "km/h" +msgstr "km/h" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:66 +msgid "mph" +msgstr "mph" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:68 +msgid "knots" +msgstr "noeuds" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:71 +msgid "Show accelerometer" +msgstr "Montrer l'accéléromètre" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:74 +msgid "Accelerometer scale:" +msgstr "Taille accéléromètre:" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:80 +msgid "Minimize input latency" +msgstr "Minimiser la latence des contrôles" + +#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:5 +msgid "Advanced settings" +msgstr "Paramètres avancés" + +#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:23 +msgid "Cvar filter:" +msgstr "Recherche de commandes:" + +#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:34 +msgid "Setting:" +msgstr "Paramètre:" + +#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:42 +msgid "Value:" +msgstr "Valeur:" + +#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:54 +msgid "Description:" +msgstr "Description:" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:26 +msgid "Client-side movement prediction" +msgstr "Prédiction des mouvements joueur" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:30 +msgid "Show netgraph" +msgstr "Montrer le netgraphe" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:33 +msgid "Network speed:" +msgstr "Vitesse réseau:" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:35 +msgid "56k" +msgstr "56k" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:36 +msgid "ISDN" +msgstr "ISDN" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:37 +msgid "Slow ADSL" +msgstr "ADSL lent" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:38 +msgid "Fast ADSL" +msgstr "ADSL rapide" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:39 +msgid "Broadband" +msgstr "Câble/Fibre optique" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:42 +msgid "Input packets/s:" +msgstr "Paquets entrants/seconde:" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:46 +msgid "HTTP downloads:" +msgstr "Téléchargements:" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:49 +msgid "Downloads:" +msgstr "Téléchargements simultanés:" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:53 +msgid "Speed (kB/s):" +msgstr "Vitesse (Ko/seconde):" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:57 +msgid "Client UDP port:" +msgstr "Port UDP client:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:26 +msgid "Resolution:" +msgstr "Résolution:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:29 +msgid "Font/UI size:" +msgstr "Taille typo:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:31 +msgid "SZ^Unreadable" +msgstr "Illisible" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:32 +msgid "SZ^Tiny" +msgstr "Minuscule" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:33 +msgid "SZ^Little" +msgstr "Très Petit" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:34 +msgid "SZ^Small" +msgstr "Petit" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:35 +msgid "SZ^Medium" +msgstr "Moyen" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:36 +msgid "SZ^Large" +msgstr "Grand" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:37 +msgid "SZ^Huge" +msgstr "Très Grand" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:38 +msgid "SZ^Gigantic" +msgstr "Géant" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:39 +msgid "SZ^Colossal" +msgstr "Gigantesque" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:42 +msgid "Color depth:" +msgstr "Profondeur de couleurs:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:45 +msgid "Full screen" +msgstr "Plein écran" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:46 +msgid "Vertical Synchronization" +msgstr "Syncronisation verticale" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:49 +msgid "Use OpenGL 2.0 shaders (GLSL)" +msgstr "Utiliser OpenGL 2.0 (GLSL)" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:52 +msgid "Use Occlusion Queries" +msgstr "Utiliser l'Occlusion du rendu" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:55 +msgid "Vertex Buffer Objects (VBOs)" +msgstr "Objets en tampon mémoire (VBOs)" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:58 +msgid "VBO^Off" +msgstr "Désactivé" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:59 +msgid "Vertices, some Tris (compatible)" +msgstr "Points, quelques Triangles (compatible)" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:62 +msgid "Vertices" +msgstr "Points" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:63 +msgid "Vertices and Triangles" +msgstr "Points et Triangles" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:65 +msgid "Depth first:" +msgstr "Fixeur profondeur:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:67 +msgid "DF^Disabled" +msgstr "Désactivé" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:68 +msgid "DF^World" +msgstr "Carte" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:69 +msgid "DF^All" +msgstr "Tout" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:73 +msgid "Disable multithreaded OpenGL" +msgstr "Désactiver OpenGL multi-coeurs" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:75 +msgid "Wait for GPU to finish each frame" +msgstr "Attendre le GPU pour finir chaque trame" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:78 +msgid "Brightness:" +msgstr "Luminosité:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:81 +msgid "Contrast:" +msgstr "Contraste:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:84 +msgid "Gamma:" +msgstr "Gamma:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:87 +msgid "Contrast boost:" +msgstr "Amélioration contraste:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:90 +msgid "Saturation:" +msgstr "Saturation:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:95 +msgid "Use GLSL to handle color control" +msgstr "Utiliser GLSL pour gérer les couleurs" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:99 +msgid "LIT^Ambient:" +msgstr "Ambience:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:102 +msgid "Intensity:" +msgstr "Intensité:" + +#: qcsrc/menu/xonotic/dialog_singleplayer.c:4 +msgid "Singleplayer" +msgstr "Monojoueur" + +#: qcsrc/menu/xonotic/dialog_singleplayer.c:59 +msgid "Instant action! (random map with bots)" +msgstr "Instant action! (map aléatoire avec bots)" + +#: qcsrc/menu/xonotic/dialog_singleplayer.c:80 +msgid "Start Singleplayer!" +msgstr "Démarrer !" + +#: qcsrc/menu/xonotic/dialog_singleplayer_winner.c:4 +msgid "Winner" +msgstr "Gagné" + +#: qcsrc/menu/xonotic/dialog_teamselect.c:5 +msgid "Team Selection" +msgstr "Séléction d'équipe" + +#: qcsrc/menu/xonotic/dialog_teamselect.c:41 +msgid "join 'best' team (auto-select)" +msgstr "auto-séléction équipe (recommandé)" + +#: qcsrc/menu/xonotic/dialog_teamselect.c:45 +msgid "red" +msgstr "rouge" + +#: qcsrc/menu/xonotic/dialog_teamselect.c:46 +msgid "blue" +msgstr "bleu" + +#: qcsrc/menu/xonotic/dialog_teamselect.c:47 +msgid "yellow" +msgstr "jaune" + +#: qcsrc/menu/xonotic/dialog_teamselect.c:48 +msgid "pink" +msgstr "rose" + +#: qcsrc/menu/xonotic/dialog_teamselect.c:51 +msgid "spectate" +msgstr "mode spectateur" + +#: qcsrc/menu/xonotic/mainwindow.c:35 qcsrc/menu/xonotic/mainwindow.c:38 +msgid "Do not press this button again!" +msgstr "N'appuyez plus sur ce bouton !" + +#: qcsrc/menu/xonotic/maplist.c:278 +msgid "" +"Huh? Can't play this (m is NULL). Refiltering so this won't happen again.\n" +msgstr "" +"Euh? Ne peut pas être joué. Re-filtration pour éviter des nouveaux " +"problèmes.\n" + +#: qcsrc/menu/xonotic/maplist.c:286 +#, c-format +msgid "%s's Xonotic Server" +msgstr "%s's Xonotic Server" + +#: qcsrc/menu/xonotic/maplist.c:291 +msgid "" +"Huh? Can't play this (invalid game type). Refiltering so this won't happen " +"again.\n" +msgstr "" +"Euh? Ne peut pas être joué. Mode de jeu invalide. Re-filtration pour éviter " +"des nouveaux problèmes.\n" + +#: qcsrc/menu/xonotic/playermodel.c:174 +msgid "<no model found>" +msgstr "<modèle non trouvé>" + +#: qcsrc/menu/xonotic/serverlist.c:357 +msgid "Remove" +msgstr "Supprimer" + +#: qcsrc/menu/xonotic/serverlist.c:359 +msgid "Bookmark" +msgstr "Marque-page" + +#: qcsrc/menu/xonotic/serverlist.c:515 +msgid "Ping" +msgstr "Latence" + +#: qcsrc/menu/xonotic/serverlist.c:516 +msgid "Host name" +msgstr "Nom d'Hôte" + +#: qcsrc/menu/xonotic/serverlist.c:517 +msgid "Map" +msgstr "Carte" + +#: qcsrc/menu/xonotic/serverlist.c:518 +msgid "Type" +msgstr "Mode" + +#: qcsrc/menu/xonotic/serverlist.c:519 +msgid "Players" +msgstr "Joueurs" + +#: qcsrc/menu/xonotic/skinlist.c:105 +msgid "<TITLE>" +msgstr "<TITRE>" + +#: qcsrc/menu/xonotic/skinlist.c:106 +msgid "<AUTHOR>" +msgstr "<AUTEUR>" + +#: qcsrc/menu/xonotic/skinlist.c:163 +#, c-format +msgid "%s: %s" +msgstr "%s: %s" + +#: qcsrc/menu/xonotic/slider_decibels.c:50 +msgid "VOL^OFF" +msgstr "OFF" + +#: qcsrc/menu/xonotic/slider_decibels.c:52 +msgid "VOL^MAX" +msgstr "MAX" + +#: qcsrc/menu/xonotic/slider_decibels.c:53 +#, c-format +msgid "%s dB" +msgstr "%s dB" + +#: qcsrc/menu/xonotic/slider_resolution.c:65 +#, c-format +msgid "%dx%d" +msgstr "%dx%d" + +#: qcsrc/menu/xonotic/util.qc:270 +#, c-format +msgid "Received HTTP request data for an invalid id %d.\n" +msgstr "A reçu la demande HTTP d'ID invalide %d.\n" + +#: qcsrc/menu/xonotic/util.qc:285 +#, c-format +msgid "error receiving update notification: status is %d\n" +msgstr "error pour recevoir la notification de mise à jour: le statut est %d\n" + +#: qcsrc/menu/xonotic/util.qc:290 +msgid "error: received HTML instead of an update notification\n" +msgstr "" +"erreur: a reçu un fichier HTML et non une notification de mise à jour\n" + +#: qcsrc/menu/xonotic/util.qc:295 +msgid "error: received carriage returns from update notification server\n" +msgstr "" +"erreur: a reçu un message erroné depuis le serveur de notifications de M.A." +"J.\n" + +#: qcsrc/menu/xonotic/util.qc:316 +#, c-format +msgid "" +"Update can be downloaded at:\n" +"%s\n" +msgstr "" +"La mise à jour peut être téléchargée ici:\n" +"%s\n" + +#: qcsrc/menu/xonotic/util.qc:337 +msgid "Autogenerating mapinfo for newly added maps..." +msgstr "Génération des mapinfo pour les nouvelles cartes ajoutées..." + +#: qcsrc/menu/xonotic/util.qc:432 +#, c-format +msgid "Update to %s now!" +msgstr "Mettez à jour vers %s maintenant !" + +#: qcsrc/menu/xonotic/util.qc:509 +msgid "" +"^1ERROR: Texture compression is required but not supported.\n" +"^1Expect visual problems.\n" +msgstr "" +"^1ERROR: La texture de compression est nécessaire mais non supportée.\n" +"^1Attendez vous à voir des problèmes de rendu.\n" + +#: qcsrc/menu/xonotic/util.qc:531 +msgid "Arena" +msgstr "Arène Duel" + +#: qcsrc/menu/xonotic/util.qc:532 +msgid "Assault" +msgstr "Assaut" + +#: qcsrc/menu/xonotic/util.qc:533 +msgid "Capture The Flag" +msgstr "Capture Du Drapeau" + +#: qcsrc/menu/xonotic/util.qc:534 +msgid "Clan Arena" +msgstr "Arène Équipes" + +#: qcsrc/menu/xonotic/util.qc:535 +msgid "Deathmatch" +msgstr "Match à Mort" + +#: qcsrc/menu/xonotic/util.qc:536 +msgid "Domination" +msgstr "Domination" + +#: qcsrc/menu/xonotic/util.qc:537 +msgid "Freeze Tag" +msgstr "Freeze Tag" + +#: qcsrc/menu/xonotic/util.qc:538 +msgid "Keepaway" +msgstr "Cache-Cache Du Drapeau" + +#: qcsrc/menu/xonotic/util.qc:539 +msgid "Key Hunt" +msgstr "Chasse aux Clés" + +#: qcsrc/menu/xonotic/util.qc:540 +msgid "Last Man Standing" +msgstr "Dernier Survivant" + +#: qcsrc/menu/xonotic/util.qc:541 +msgid "Nexball" +msgstr "Nexball" + +#: qcsrc/menu/xonotic/util.qc:542 +msgid "Onslaught" +msgstr "Onslaught" + +#: qcsrc/menu/xonotic/util.qc:543 +msgid "Race" +msgstr "Course" + +#: qcsrc/menu/xonotic/util.qc:544 +msgid "Race CTS" +msgstr "Course CTS" + +#: qcsrc/menu/xonotic/util.qc:545 +msgid "Runematch" +msgstr "Runematch" + +#: qcsrc/menu/xonotic/util.qc:546 +msgid "Team Deathmatch" +msgstr "Match à Mort Équipe" + +#: qcsrc/menu/xonotic/util.qc:565 +#, c-format +msgid "@!#%'n Tuba Throwing" +msgstr "Lancer de @!#%'n Tuba" + +#: qcsrc/menu/xonotic/util.qc:606 +msgid "Background:" +msgstr "Arrière-plan:" + +#: qcsrc/menu/xonotic/util.qc:608 qcsrc/menu/xonotic/util.qc:624 +#: qcsrc/menu/xonotic/util.qc:633 qcsrc/menu/xonotic/util.qc:641 +#: qcsrc/menu/xonotic/util.qc:653 +msgid "Default" +msgstr "Par défaut" + +#: qcsrc/menu/xonotic/util.qc:619 +msgid "Use default" +msgstr "Par défaut" + +#: qcsrc/menu/xonotic/util.qc:639 +msgid "Team Color:" +msgstr "Couleur d'équipe:" + +#: qcsrc/menu/xonotic/util.qh:49 +msgid "Enable panel" +msgstr "Activer ce panneau" diff --git a/menu.dat.pt.po b/menu.dat.pt.po new file mode 100644 index 0000000000..024f676258 --- /dev/null +++ b/menu.dat.pt.po @@ -0,0 +1,2477 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: Xontoic 0.1preview\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2011-01-18 21:36+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: Ricardo 'Hellgardia' Silva <ricardo.mccs@gmail.com>\n" +"Language-Team: LANGUAGE <LL@li.org>\n" +"Language: Portuguese\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: qcsrc/menu/gamecommand.qc:47 +#, c-format +msgid "error: status is %d\n" +msgstr "erro: o estado é &d\n" + +#: qcsrc/menu/gamecommand.qc:65 +msgid "Usage: menu_cmd command..., where possible commands are:\n" +msgstr "Uso: menu_cmd command..., onde estão possíveis comandos:\n" + +#: qcsrc/menu/gamecommand.qc:66 +msgid " sync - reloads all cvars on the current menu page\n" +msgstr " sync - recarrega todas as cvars no menu actual" + +#: qcsrc/menu/gamecommand.qc:67 +msgid " directmenu ITEM - select a menu item as main item\n" +msgstr " directmenu ITEM - selecciona um item do menu como o principal\n" + +#: qcsrc/menu/gamecommand.qc:193 +msgid "error creating curl handle\n" +msgstr "erro a criar curl handle" + +#: qcsrc/menu/gamecommand.qc:239 +msgid "Invalid command. For a list of supported commands, try menu_cmd help.\n" +msgstr "" +"Comando inválido. Para uma lista de comandos suportados, escrever menu_cmd " +"help.\n" + +#: qcsrc/menu/item/gecko.c:49 +msgid "Browser not initialized!" +msgstr "Browser não inicializado!" + +#: qcsrc/menu/item/label.c:63 +#, c-format +msgid "NOTE: label text %s too wide for label, condensed by factor %f\n" +msgstr "" +"NOTA: marca texto %s demasiado larga para etiqueta, condensada por factor " +"%f\n" + +#: qcsrc/menu/item/listbox.c:300 +#, c-format +msgid "Item %d" +msgstr "Item %d" + +#: qcsrc/menu/item/slider.c:64 +#, c-format +msgid "%d (%s)" +msgstr "%d (%s)" + +#: qcsrc/menu/item/textslider.c:29 qcsrc/menu/item/textslider.c:31 +msgid "custom" +msgstr "modificado" + +#: qcsrc/menu/menu.qc:29 +#, c-format +msgid "^4MQC Build information: %s\n" +msgstr "^4MQ Informação da Build %s\n" + +#: qcsrc/menu/xonotic/campaign.c:284 +#: qcsrc/menu/xonotic/dialog_singleplayer.c:66 +msgid "???" +msgstr "???" + +#: qcsrc/menu/xonotic/campaign.c:285 +#, c-format +msgid "Level %d: %s" +msgstr "Nível %d: %s" + +#: qcsrc/menu/xonotic/cvarlist.c:84 +msgid "will be saved to config.cfg" +msgstr "vai ser guardado para config.cfg" + +#: qcsrc/menu/xonotic/cvarlist.c:86 +msgid "will not be saved" +msgstr "não será guardado" + +#: qcsrc/menu/xonotic/cvarlist.c:88 +msgid "private" +msgstr "privado" + +#: qcsrc/menu/xonotic/cvarlist.c:90 +msgid "engine setting" +msgstr "definição do motor" + +#: qcsrc/menu/xonotic/cvarlist.c:92 +msgid "read only" +msgstr "apenas ler" + +#: qcsrc/menu/xonotic/dialog_credits.c:5 +msgid "Credits" +msgstr "Créditos" + +#: qcsrc/menu/xonotic/dialog_credits.c:21 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:82 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:269 +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:46 +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:55 +#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:59 +#: qcsrc/menu/xonotic/dialog_singleplayer_winner.c:21 +msgid "OK" +msgstr "OK" + +#: qcsrc/menu/xonotic/dialog_firstrun.c:4 +msgid "Welcome" +msgstr "Bem-Vindo" + +#: qcsrc/menu/xonotic/dialog_firstrun.c:33 +msgid "" +"Welcome to Xonotic, please select your language preference and enter your " +"player name to get started. You can change these options later through the " +"menu system." +msgstr "" + +#: qcsrc/menu/xonotic/dialog_firstrun.c:38 +#: qcsrc/menu/xonotic/dialog_settings_misc.c:35 +msgid "Text language:" +msgstr "Linguagem do texto:" + +#: qcsrc/menu/xonotic/dialog_firstrun.c:47 +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:40 +#: qcsrc/menu/xonotic/dialog_settings_input_userbind.c:39 +msgid "Name:" +msgstr "Nome:" + +#: qcsrc/menu/xonotic/dialog_firstrun.c:69 +msgid "Save settings" +msgstr "Guardar Definições" + +#: qcsrc/menu/xonotic/dialog_hudpanel_ammo.c:4 +msgid "Ammo Panel" +msgstr "Painel de munições" + +#: qcsrc/menu/xonotic/dialog_hudpanel_ammo.c:22 +msgid "Ammunition display:" +msgstr "Mostrar munições:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_ammo.c:25 +msgid "Show only current ammo type" +msgstr "Mostrar apenas o tipo de munição actual" + +#: qcsrc/menu/xonotic/dialog_hudpanel_ammo.c:29 +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:28 +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:40 +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:28 +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:40 +msgid "Left" +msgstr "Esquerda" + +#: qcsrc/menu/xonotic/dialog_hudpanel_ammo.c:30 +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:30 +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:41 +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:30 +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:41 +msgid "Right" +msgstr "Direita" + +#: qcsrc/menu/xonotic/dialog_hudpanel_chat.c:4 +msgid "Chat Panel" +msgstr "Painel de Conversa" + +#: qcsrc/menu/xonotic/dialog_hudpanel_chat.c:22 +msgid "Chat entries:" +msgstr "Entradas na Conversa:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_chat.c:25 +msgid "Chat size:" +msgstr "Tamanho da Conversa:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_chat.c:29 +msgid "Chat lifetime:" +msgstr "Tempo de vida da Conversa:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_chat.c:33 +msgid "Chat beep sound" +msgstr "Som de aviso de Conversa" + +#: qcsrc/menu/xonotic/dialog_hudpanel_engineinfo.c:4 +msgid "Engine Info Panel" +msgstr "Painel de Informação do Motor" + +#: qcsrc/menu/xonotic/dialog_hudpanel_engineinfo.c:22 +msgid "Engine info:" +msgstr "Informação do Motor:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_engineinfo.c:25 +msgid "Use an averaging algorithm for fps" +msgstr "Usar um algorítmo médio para os fps" + +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:4 +msgid "Health/Armor Panel" +msgstr "Painel Vida/Armadura" + +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:22 +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:22 +msgid "Enable status bar" +msgstr "Activar barra de estado" + +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:24 +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:24 +msgid "Status bar alignment:" +msgstr "Alinhar barra de estado:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:32 +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:42 +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:32 +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:42 +msgid "Inward" +msgstr "Para Dentro" + +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:34 +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:43 +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:34 +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:43 +msgid "Outward" +msgstr "Para Fora" + +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:37 +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:37 +msgid "Icon alignment:" +msgstr "Alinhamento dos Icones" + +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:45 +msgid "Flip health and armor positions" +msgstr "Trocar posição da vida e armadura" + +#: qcsrc/menu/xonotic/dialog_hudpanel_infomessages.c:4 +msgid "Info Messages Panel" +msgstr "Painel de Info de Mensagens" + +#: qcsrc/menu/xonotic/dialog_hudpanel_infomessages.c:22 +msgid "Info messages:" +msgstr "Informação de mensagens:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_infomessages.c:25 +msgid "Flip align" +msgstr "Trocar alinhamento" + +#: qcsrc/menu/xonotic/dialog_hudpanel_modicons.c:4 +msgid "Mod Icons Panel" +msgstr "Painel dos Icones de Mod" + +#: qcsrc/menu/xonotic/dialog_hudpanel_notification.c:4 +msgid "Notification Panel" +msgstr "Painel de Notificações" + +#: qcsrc/menu/xonotic/dialog_hudpanel_notification.c:22 +msgid "Notifications:" +msgstr "Notificações:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_notification.c:25 +msgid "Also print notifications to the console" +msgstr "Imprimir notificações na consola também" + +#: qcsrc/menu/xonotic/dialog_hudpanel_notification.c:28 +msgid "Flip notify order" +msgstr "Trocar ordem de notificações" + +#: qcsrc/menu/xonotic/dialog_hudpanel_notification.c:31 +msgid "Entry lifetime:" +msgstr "Tempo de vida de cada entrada:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_notification.c:35 +msgid "Entry fadetime:" +msgstr "Desaparecimento de cada entrada:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:4 +msgid "Powerups Panel" +msgstr "Painel de Powerups" + +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:45 +msgid "Flip strength and shield positions" +msgstr "Trocar posição do escudo e da força" + +#: qcsrc/menu/xonotic/dialog_hudpanel_pressedkeys.c:4 +msgid "Pressed Keys Panel" +msgstr "Painel das Teclas Pressionadas" + +#: qcsrc/menu/xonotic/dialog_hudpanel_pressedkeys.c:21 +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:21 +msgid "Panel disabled" +msgstr "Painel desactivado" + +#: qcsrc/menu/xonotic/dialog_hudpanel_pressedkeys.c:22 +msgid "Panel enabled when spectating" +msgstr "Painel activado quando espectador" + +#: qcsrc/menu/xonotic/dialog_hudpanel_pressedkeys.c:23 +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:23 +msgid "Panel always enabled" +msgstr "Painel sempre activado" + +#: qcsrc/menu/xonotic/dialog_hudpanel_pressedkeys.c:30 +msgid "Forced aspect:" +msgstr "Forçar aspecto:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_racetimer.c:4 +msgid "Race Timer Panel" +msgstr "Painel do Cronómetro de Corrida" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:4 +msgid "Radar Panel" +msgstr "Painel do Radar" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:22 +msgid "Panel enabled in teamgames" +msgstr "Painel activo em jogos de equipa" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:29 +msgid "Radar:" +msgstr "Radar:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:32 +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:43 +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:82 +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:151 +#: qcsrc/menu/xonotic/util.qc:631 +msgid "Alpha:" +msgstr "Alfa:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:36 +msgid "Rotation:" +msgstr "Rotação:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:38 +msgid "Forward" +msgstr "Para a frente" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:39 +msgid "West" +msgstr "Para oeste" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:40 +msgid "South" +msgstr "Para sul" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:41 +msgid "East" +msgstr "Para este" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:42 +msgid "North" +msgstr "Para norte" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:46 +msgid "Scale:" +msgstr "Escala:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:50 +msgid "Zoom mode:" +msgstr "Modo de ampliação:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:52 +msgid "Zoomed in" +msgstr "Ampliado" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:53 +msgid "Zoomed out" +msgstr "Não-Ampliado" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:54 +msgid "Always zoomed" +msgstr "Sempre ampliado" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:55 +msgid "Never zoomed" +msgstr "Nunca ampliado" + +#: qcsrc/menu/xonotic/dialog_hudpanel_score.c:4 +msgid "Score Panel" +msgstr "Painel de Pontos" + +#: qcsrc/menu/xonotic/dialog_hudpanel_timer.c:4 +msgid "Timer Panel" +msgstr "Painel Temporizador" + +#: qcsrc/menu/xonotic/dialog_hudpanel_timer.c:22 +msgid "Timer:" +msgstr "Temporizador:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_timer.c:25 +msgid "Show elapsed time" +msgstr "Mostrar tempo passado" + +#: qcsrc/menu/xonotic/dialog_hudpanel_vote.c:4 +msgid "Vote Panel" +msgstr "Painel de votos" + +#: qcsrc/menu/xonotic/dialog_hudpanel_vote.c:22 +msgid "Alpha after voting:" +msgstr "Alfa após votagem:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:4 +msgid "Weapons Panel" +msgstr "Painel das Armas" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:24 +msgid "Fade out after:" +msgstr "Desaparecer após:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:26 +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:41 +msgid "Never" +msgstr "Nunca" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:28 +#, c-format +msgid "%ds" +msgstr "%ds" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:32 +msgid "Fade effect:" +msgstr "Efeito de desaparecimento" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:33 +#, fuzzy +msgid "EF^None" +msgstr "Nenhum" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:35 +msgid "Slide" +msgstr "Deslocador" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:37 +msgid "Alpha" +msgstr "Alfa" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:40 +msgid "Weapon icons:" +msgstr "Icones das armas" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:43 +msgid "Show weapon ID as:" +msgstr "Mostra o ID da arma como:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:44 +#, fuzzy +msgid "SHOWAS^None" +msgstr "Nenhum" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:45 +msgid "Number" +msgstr "Número" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:46 +msgid "Bind" +msgstr "Ligar" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:49 +msgid "Show Accuracy" +msgstr "Mostrar Pontaria" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:50 +msgid "Show Ammo" +msgstr "Mostrar Munições" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:53 +msgid "Ammo bar color:" +msgstr "Cor da barra de munições:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:59 +msgid "Ammo bar alpha:" +msgstr "Cor da barra alfa:" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:4 +msgid "Panel HUD Setup" +msgstr "Configuração do painel do HUD" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:21 +msgid "Panel background defaults:" +msgstr "Fundo do painel por defeito:" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:25 +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:37 +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:52 +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:91 qcsrc/menu/xonotic/util.qc:609 +#: qcsrc/menu/xonotic/util.qc:625 qcsrc/menu/xonotic/util.qc:642 +msgid "Disable" +msgstr "Desactivar" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:30 +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:77 qcsrc/menu/xonotic/util.qc:614 +msgid "Color:" +msgstr "Cor:" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:35 qcsrc/menu/xonotic/util.qc:622 +msgid "Border size:" +msgstr "Tamanho do limite:" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:50 +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:89 +msgid "Team color:" +msgstr "Cor da Equipa:" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:58 qcsrc/menu/xonotic/util.qc:648 +msgid "Test team color in configure mode" +msgstr "Testa cor da equipa no modo de configuração" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:61 qcsrc/menu/xonotic/util.qc:651 +msgid "Padding:" +msgstr "Padding:" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:68 +msgid "HUD Dock:" +msgstr "Local do HUD:" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:70 +#, fuzzy +msgid "DOCK^Disabled" +msgstr "Desligado" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:71 +#, fuzzy +msgid "DOCK^Small" +msgstr "Pequena" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:72 +#, fuzzy +msgid "DOCK^Medium" +msgstr "Média" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:73 +#, fuzzy +msgid "DOCK^Large" +msgstr "Grande" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:96 +msgid "Grid settings:" +msgstr "Definições da Rede:" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:99 +msgid "Snap panels to grid" +msgstr "Fixar paineis à Rede" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:102 +msgid "Grid size:" +msgstr "Tamanho da Rede:" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:103 +msgid "X:" +msgstr "X:" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:109 +msgid "Y:" +msgstr "Y:" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:117 +msgid "Exit setup" +msgstr "Sair da configuração" + +#: qcsrc/menu/xonotic/dialog_multiplayer.c:4 +msgid "Multiplayer" +msgstr "Multi-jogador" + +#: qcsrc/menu/xonotic/dialog_multiplayer.c:18 +msgid "Servers" +msgstr "Servidores" + +#: qcsrc/menu/xonotic/dialog_multiplayer.c:19 +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:5 +msgid "Create" +msgstr "Criar" + +#: qcsrc/menu/xonotic/dialog_multiplayer.c:20 +msgid "Demos" +msgstr "Demos" + +#: qcsrc/menu/xonotic/dialog_multiplayer.c:21 +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:5 +msgid "Player Setup" +msgstr "Configuração do Jogador" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:35 +msgid "Game type:" +msgstr "Tipo de jogo:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:47 +msgid "Match settings:" +msgstr "Definições de jogo:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:50 +msgid "Time limit:" +msgstr "Tempo limite:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:54 +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:62 +msgid "Use map specified default" +msgstr "Usar definição específica do mapa" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:57 +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:156 +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:157 +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:158 +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:162 +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:163 +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:164 +msgid "Point limit:" +msgstr "Limite de pontos:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:65 +msgid "Player slots:" +msgstr "Slots para Jogadores:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:68 +msgid "Number of bots:" +msgstr "Número de jogadores controlados pelo computador:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:72 +msgid "Bot skill:" +msgstr "Nível de dificuldade:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:75 +msgid "Botlike" +msgstr "Bot" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:76 +msgid "Beginner" +msgstr "Iniciado" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:77 +msgid "You will win" +msgstr "Vais ganhar" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:78 +msgid "You can win" +msgstr "Podes ganhar" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:79 +msgid "You might win" +msgstr "Talvez ganhes" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:80 +msgid "Advanced" +msgstr "Avançado" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:81 +msgid "Expert" +msgstr "Perito" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:82 +msgid "Pro" +msgstr "Profissional" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:83 +msgid "Assassin" +msgstr "Assassino" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:84 +msgid "Unhuman" +msgstr "Desumano" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:85 +msgid "Godlike" +msgstr "Divinal" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:89 +msgid "Mutators..." +msgstr "Mutators..." + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:98 +#: qcsrc/menu/xonotic/dialog_settings_misc.c:84 +msgid "Advanced settings..." +msgstr "Definições avançadas..." + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:105 +msgid "Map list:" +msgstr "Lista de mapas:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:111 +msgid "Select all" +msgstr "Seleccionar todos" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:114 +msgid "Select none" +msgstr "Seleccionar nenhum" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:120 +msgid "Start Multiplayer!" +msgstr "Começar Multijogador!" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:155 +msgid "Capture limit:" +msgstr "Limite de capturas:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:159 +msgid "Lives:" +msgstr "Vidas:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:160 +msgid "Laps:" +msgstr "Voltas:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:161 +msgid "Goals:" +msgstr "Golos:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:165 +msgid "Frag limit:" +msgstr "Limite de Frags:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:6 +msgid "Advanced server settings" +msgstr "Definições avançadas do servidor" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:25 +msgid "Game settings:" +msgstr "Definições de Jogo:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:28 +msgid "Allow spectating" +msgstr "Permitir espectador" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:31 +msgid "Spawn shield:" +msgstr "Protecção de Spawn:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:36 +msgid "Game speed:" +msgstr "Velocidade do jogo:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:40 +msgid "Teamplay settings:" +msgstr "Definições de Jogo de Equipa:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:43 +msgid "Friendly fire scale:" +msgstr "Escala de Dano nos aliados:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:47 +msgid "Virtual friendly fire (effect only)" +msgstr "Dano nos Aliados Virtual (Apenas o efeito)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:50 +msgid "Friendly fire penalty:" +msgstr "Penalização por Dano nos Aliados:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:54 +msgid "Virtual penalty (effect only)" +msgstr "Penalidade Virtual (Apenas o efeito)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:57 +msgid "Teams:" +msgstr "Equipas:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:66 +msgid "Map voting:" +msgstr "Votação de mapa:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:68 +msgid "No voting" +msgstr "Sem votação" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:69 +msgid "2 choices" +msgstr "2 escolhas" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:70 +msgid "3 choices" +msgstr "3 escolhas" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:71 +msgid "4 choices" +msgstr "4 escolhas" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:72 +msgid "5 choices" +msgstr "5 escolhas" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:73 +msgid "6 choices" +msgstr "6 escolhas" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:74 +msgid "7 choices" +msgstr "7 escolhas" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:75 +msgid "8 choices" +msgstr "8 escolhas" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:76 +msgid "9 choices" +msgstr "9 escolhas" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:79 +msgid "Simple majority wins vcall" +msgstr "Maioria ganha vcall" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:5 +msgid "Map Information" +msgstr "Informação do Mapa" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:49 +msgid "Full item placement" +msgstr "Colocação total dos items" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:49 +msgid "MinstaGib only" +msgstr "Apenas MinstaGib" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:78 +msgid "Title:" +msgstr "Título:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:84 +msgid "Author:" +msgstr "Autor:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:90 +msgid "Features:" +msgstr "Características:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:95 +msgid "Game types:" +msgstr "Modos de jogo:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:119 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:308 +msgid "Close" +msgstr "Fechar" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:122 +#: qcsrc/menu/xonotic/dialog_multiplayer_demo.c:46 +msgid "Play" +msgstr "Jogar" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:7 +msgid "Mutators" +msgstr "Mutators" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:33 +msgid "All Weapons Arena" +msgstr "Arena com Todas as Armas" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:35 +msgid "Most Weapons Arena" +msgstr "Arena com Maior Parte das Armas" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:56 +#, c-format +msgid "%s Arena" +msgstr "%s Arena" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:68 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:167 +msgid "Dodging" +msgstr "Desvio" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:70 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:250 +msgid "MinstaGib" +msgstr "MinstaGib" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:72 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:253 +msgid "NIX" +msgstr "NIX" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:74 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:205 +msgid "Rocket Flying" +msgstr "Voar com Rockets" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:78 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:264 +msgid "No start weapons" +msgstr "Sem armas iniciais" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:80 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:189 +msgid "Low gravity" +msgstr "Pouca gravidade" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:82 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:170 +msgid "Cloaked" +msgstr "Escondido" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:84 +msgid "Hook" +msgstr "Gancho" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:86 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:173 +msgid "Midair" +msgstr "A meio do ar" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:88 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:176 +msgid "Vampire" +msgstr "Vampiro" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:90 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:208 +msgid "Piñata" +msgstr "Piñata" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:92 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:211 +msgid "Weapons stay" +msgstr "Armas ficam" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:94 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:180 +msgid "Blood loss" +msgstr "Perda de sangue" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:96 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:202 +msgid "Jet pack" +msgstr "Jetpack" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:98 +#, fuzzy +msgid "MUT^None" +msgstr "Nenhum" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:164 +msgid "Gameplay mutators:" +msgstr "Mutators de jogabilidade" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:196 +msgid "Weapon & item mutators:" +msgstr "Mutators de armas e items" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:199 +msgid "Grappling hook" +msgstr "Gancho de trepar" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:215 +msgid "Weapon arenas:" +msgstr "Arenas de Armas:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:218 +msgid "Regular (no arena)" +msgstr "Regular (não arena específica)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:239 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:256 +msgid "with laser" +msgstr "com laser" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:247 +msgid "Special arenas:" +msgstr "Arenas Especiais:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:260 +msgid "Most weapons" +msgstr "Maior parte das Armas" + +#: qcsrc/menu/xonotic/dialog_multiplayer_demo.c:4 +msgid "Demo" +msgstr "Demo" + +#: qcsrc/menu/xonotic/dialog_multiplayer_demo.c:28 +msgid "Record demos while playing" +msgstr "Gravar demos enquanto joga" + +#: qcsrc/menu/xonotic/dialog_multiplayer_demo.c:32 +#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:28 +msgid "Filter:" +msgstr "Filtrar:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_demo.c:33 +#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:29 +#: qcsrc/menu/xonotic/dialog_settings_input.c:41 +#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:24 +msgid "Clear" +msgstr "Limpar" + +#: qcsrc/menu/xonotic/dialog_multiplayer_demo.c:43 +msgid "Timedemo" +msgstr "Demo temporizado" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:4 +msgid "Join" +msgstr "Juntar" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:36 +#, fuzzy +msgid "SRVS^Empty" +msgstr "Vazio" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:40 +#, fuzzy +msgid "SRVS^Full" +msgstr "Total" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:44 +msgid "Pause" +msgstr "Pausar" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:56 +msgid "Address:" +msgstr "Endereço:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:65 +msgid "Info..." +msgstr "Informação..." + +#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:70 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:311 +msgid "Join!" +msgstr "Juntar!" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:5 +msgid "Server Information" +msgstr "Informação do Servidor" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:115 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:116 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:177 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:183 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:193 +msgid "N/A" +msgstr "N/A" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:151 +#, c-format +msgid "%d/%d" +msgstr "%d/%d" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:166 +#, c-format +msgid "%d modified settings" +msgstr "%d definições modificadas" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:166 +msgid "Official settings" +msgstr "Definições oficiais" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:191 +msgid "N/A (can't connect)" +msgstr "N/A (não conseguiu ligar)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:199 +msgid "not supported (can't connect)" +msgstr "não é suportado (não conseguiu ligar)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:201 +msgid "not supported (won't encrypt)" +msgstr "não suportado (não encripta)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:205 +msgid "supported (will encrypt)" +msgstr "suportado (vai encriptar)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:207 +msgid "supported (won't encrypt)" +msgstr "suportado (não encripta)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:211 +msgid "requested (will encrypt)" +msgstr "pedido (encripta)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:213 +msgid "requested (won't encrypt)" +msgstr "pedido (não encripta)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:217 +msgid "required (can't connect)" +msgstr "necessário (não consegue ligar)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:219 +msgid "required (will encrypt)" +msgstr "necessário (encripta)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:240 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:263 +msgid "Players:" +msgstr "Jogadores:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:248 +#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:38 +msgid "Type:" +msgstr "Tipo:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:253 +msgid "Map:" +msgstr "Mapa:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:258 +msgid "Gameplay:" +msgstr "Jogabilidade:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:268 +msgid "Bots:" +msgstr "Jogadores controlados pelo computador:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:273 +msgid "Mod:" +msgstr "Mod:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:278 +msgid "Version:" +msgstr "Versão:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:283 +msgid "Ping:" +msgstr "Ping:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:289 +msgid "CA:" +msgstr "CA:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:295 +msgid "Key:" +msgstr "Chave:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:301 +msgid "Encryption:" +msgstr "Encriptação:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:63 +msgid "Model:" +msgstr "Modelo:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:88 +msgid "Field of view:" +msgstr "Campo de visão:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:92 +msgid "View bobbing:" +msgstr "Ver tremor:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:96 +msgid "Zoom factor:" +msgstr "Factor de Ampliação (ZOOM):" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:100 +msgid "Zoom speed:" +msgstr "Velocidade de Ampliação (ZOOM):" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:103 +msgid "Weapon settings..." +msgstr "Definições das Armas..." + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:110 +msgid "Crosshair:" +msgstr "Mira:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:111 +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:143 +msgid "Per weapon" +msgstr "Por arma" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:130 +msgid "Crosshair size:" +msgstr "Tamanho da mira:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:134 +msgid "Crosshair alpha:" +msgstr "Alfa da mira:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:138 +msgid "Crosshair color:" +msgstr "Cor da mira:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:145 +msgid "Enable center dot" +msgstr "Activar ponto central" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:148 +msgid "Size:" +msgstr "Tamanho:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:155 +msgid "Hit test:" +msgstr "Teste de Tiro:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:156 +#, fuzzy +msgid "HTST^None" +msgstr "Nenhum" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:157 +msgid "TrueAim" +msgstr "PontariaCerta" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:158 +msgid "Enemies" +msgstr "Inimigos" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:161 +msgid "Waypoints setup..." +msgstr "Configurar caminhos..." + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:167 +msgid "Enter HUD editor" +msgstr "Entrar no editor do HUD" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:174 +msgid "Force models:" +msgstr "Forçar modelos:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:175 +#, fuzzy +msgid "MDL^None" +msgstr "Nenhum" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:176 +#, fuzzy +msgid "MDL^Custom" +msgstr "Modificado" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:177 +#, fuzzy +msgid "MDL^All" +msgstr "Todos" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:179 +msgid "Disable gore effects" +msgstr "Desactivar sangue/violencia" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:181 +msgid "Gibs:" +msgstr "Tripas:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:183 +#, fuzzy +msgid "GIBS^None" +msgstr "Nenhum" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:184 +msgid "GIBS^Few" +msgstr "Poucas" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:185 +#, fuzzy +msgid "GIBS^Many" +msgstr "Muitas" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:186 +#, fuzzy +msgid "GIBS^Lots" +msgstr "Imensas" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:190 +msgid "Damage splash:" +msgstr "Dano Colateral:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:194 +#: qcsrc/menu/xonotic/dialog_settings_audio.c:178 +#: qcsrc/menu/xonotic/dialog_settings_effects.c:193 +#: qcsrc/menu/xonotic/dialog_settings_misc.c:30 +#: qcsrc/menu/xonotic/dialog_settings_misc.c:41 +#: qcsrc/menu/xonotic/dialog_settings_video.c:106 +msgid "Apply immediately" +msgstr "Aplicar imediatamente" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:5 +msgid "Waypoints" +msgstr "Caminhos" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:23 +msgid "Waypoint settings:" +msgstr "Definições dos caminhos:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:26 +msgid "Show base waypoints" +msgstr "Mostrar caminhos base" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:29 +msgid "Waypoint scale:" +msgstr "Escala dos Caminhos:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:34 +msgid "Waypoint alpha:" +msgstr "Caminhos alfa:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:39 +msgid "Show names:" +msgstr "Mostrar nomes:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:42 +msgid "Teammates" +msgstr "Companheiros de Equipa" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:43 +msgid "All players" +msgstr "Todos os jogadores" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:6 +msgid "Weapon settings" +msgstr "Definições de Armas" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:29 +msgid "Weapon priority list:" +msgstr "Prioridade das Armas:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:34 +msgid "Up" +msgstr "Cima" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:37 +msgid "Down" +msgstr "Baixo" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:41 +msgid "Use priority list for weapon cycling" +msgstr "Usar lista de prioridades para ciclo entre as armas" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:43 +msgid "Auto switch weapons on pickup" +msgstr "Mudar armas automaticamente ao apanhar do chão" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:45 +msgid "Draw 1st person weapon model" +msgstr "Desenhar modelo da arma na 1a pessoa" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:48 +msgid "Left align" +msgstr "Alinhamento à esquerda" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:50 +msgid "Right align" +msgstr "Alinhamento à direita" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:53 +msgid "Flip view horizontally" +msgstr "Trocar vista horizontal" + +#: qcsrc/menu/xonotic/dialog_news.c:4 +msgid "News" +msgstr "Novidades" + +#: qcsrc/menu/xonotic/dialog_news.c:18 +msgid "http://www.xonotic.org/team/blog/" +msgstr "http://www.xonotic.org/team/blog/" + +#: qcsrc/menu/xonotic/dialog_quit.c:4 +msgid "Quit" +msgstr "Sair" + +#: qcsrc/menu/xonotic/dialog_quit.c:17 +msgid "Are you sure you want to quit?" +msgstr "Tens a certeza que queres sair?" + +#: qcsrc/menu/xonotic/dialog_quit.c:20 +msgid "Yes" +msgstr "Sim" + +#: qcsrc/menu/xonotic/dialog_quit.c:21 +msgid "No" +msgstr "Não" + +#: qcsrc/menu/xonotic/dialog_settings.c:4 +msgid "Settings" +msgstr "Definições" + +#: qcsrc/menu/xonotic/dialog_settings.c:18 +#: qcsrc/menu/xonotic/dialog_settings_input.c:4 +msgid "Input" +msgstr "Input" + +#: qcsrc/menu/xonotic/dialog_settings.c:19 +#: qcsrc/menu/xonotic/dialog_settings_video.c:4 +msgid "Video" +msgstr "Vídeo" + +#: qcsrc/menu/xonotic/dialog_settings.c:20 +#: qcsrc/menu/xonotic/dialog_settings_effects.c:4 +msgid "Effects" +msgstr "Efeitos" + +#: qcsrc/menu/xonotic/dialog_settings.c:21 +#: qcsrc/menu/xonotic/dialog_settings_audio.c:4 +msgid "Audio" +msgstr "Som" + +#: qcsrc/menu/xonotic/dialog_settings.c:22 +#: qcsrc/menu/xonotic/dialog_settings_network.c:4 +msgid "Network" +msgstr "Rede" + +#: qcsrc/menu/xonotic/dialog_settings.c:23 +#: qcsrc/menu/xonotic/dialog_settings_misc.c:4 +msgid "Misc" +msgstr "Misc" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:27 +msgid "Master:" +msgstr "Principal:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:33 +msgid "Music:" +msgstr "Música:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:40 +#, fuzzy +msgid "VOL^Ambient:" +msgstr "Som Ambiente:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:48 +msgid "Info:" +msgstr "Informação:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:57 +msgid "Items:" +msgstr "Items:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:65 +msgid "Pain:" +msgstr "Dor:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:73 +msgid "Player:" +msgstr "Jogador:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:81 +msgid "Shots:" +msgstr "Tiros:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:88 +msgid "Voice:" +msgstr "Voz:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:96 +msgid "Weapons:" +msgstr "Armas:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:103 +#: qcsrc/menu/xonotic/dialog_settings_audio.c:161 +msgid "Frequency:" +msgstr "Frequência:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:105 +msgid "8 kHz" +msgstr "8 kHz" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:106 +msgid "11.025 kHz" +msgstr "11.025 kHz" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:107 +msgid "16 kHz" +msgstr "16 kHz" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:108 +msgid "22.05 kHz" +msgstr "22.05 kHz" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:109 +msgid "24 kHz" +msgstr "24 kHz" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:110 +msgid "32 kHz" +msgstr "32 kHz" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:111 +msgid "44.1 kHz" +msgstr "44.1 kHz" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:112 +msgid "48 kHz" +msgstr "48 kHz" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:115 +msgid "Channels:" +msgstr "Canais:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:117 +msgid "Mono" +msgstr "Mono" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:118 +msgid "Stereo" +msgstr "Stereo" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:119 +msgid "2.1" +msgstr "2.1" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:120 +msgid "4" +msgstr "4" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:121 +msgid "5" +msgstr "5" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:122 +msgid "5.1" +msgstr "5.1" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:123 +msgid "6.1" +msgstr "6.1" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:124 +msgid "7.1" +msgstr "7.1" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:128 +msgid "Swap Stereo" +msgstr "Trocar Stereo" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:132 +msgid "Headphone friendly mode" +msgstr "Modo de Headphones" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:136 +msgid "Spatial voices:" +msgstr "Vozes espaciais:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:137 +#, fuzzy +msgid "VOCS^None" +msgstr "Nenhum" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:138 +#, fuzzy +msgid "VOCS^Taunts" +msgstr "Taunts" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:139 +#, fuzzy +msgid "VOCS^All" +msgstr "Todos" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:142 +msgid "Taunt range:" +msgstr "Nível dos taunts:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:145 +#, fuzzy +msgid "RNG^Very short" +msgstr "Muito baixo" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:146 +#, fuzzy +msgid "RNG^Short" +msgstr "Baixo" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:147 +#, fuzzy +msgid "RNG^Normal" +msgstr "Normal" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:148 +#, fuzzy +msgid "RNG^Long" +msgstr "Alto" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:149 +#, fuzzy +msgid "RNG^Full" +msgstr "Total" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:156 +msgid "Automatic taunts" +msgstr "Taunts Automáticos" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:165 +msgid "Time warning:" +msgstr "Aviso de tempo:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:167 +#, fuzzy +msgid "WRN^None" +msgstr "Nenhum" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:168 +msgid "1 minute" +msgstr "1 minuto" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:169 +msgid "5 minutes" +msgstr "5 minutos" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:170 +#, fuzzy +msgid "WRN^Both" +msgstr "Ambos" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:173 +msgid "Hit indicator" +msgstr "Indicador de tiro acertado" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:175 +msgid "Menu sounds" +msgstr "Sons do menu" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:38 +msgid "Quality preset:" +msgstr "Predefinição de Qualidade:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:41 +#, fuzzy +msgid "PRE^OMG!" +msgstr "OMG!" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:42 +#, fuzzy +msgid "PRE^Low" +msgstr "Baixa" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:43 +#, fuzzy +msgid "PRE^Medium" +msgstr "Média" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:44 +#, fuzzy +msgid "PRE^Normal" +msgstr "Normal" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:45 +#, fuzzy +msgid "PRE^High" +msgstr "Alta" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:46 +#, fuzzy +msgid "PRE^Ultra" +msgstr "Ultra" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:48 +#, fuzzy +msgid "PRE^Ultimate" +msgstr "Máxima" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:52 +msgid "Geometry detail:" +msgstr "Detalhes geométricos:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:54 +#, fuzzy +msgid "DET^Lowest" +msgstr "Mínimo" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:55 +#, fuzzy +msgid "DET^Low" +msgstr "Baixa" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:56 +#, fuzzy +msgid "DET^Normal" +msgstr "Normal" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:57 +#, fuzzy +msgid "DET^Good" +msgstr "Bom" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:58 +#, fuzzy +msgid "DET^Best" +msgstr "Melhores" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:59 +#, fuzzy +msgid "DET^Insane" +msgstr "Máximo" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:62 +msgid "Antialiasing:" +msgstr "Antialiasing:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:64 +#, fuzzy +msgid "AA^Disabled" +msgstr "Desligado" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:65 +#: qcsrc/menu/xonotic/dialog_settings_effects.c:103 +msgid "2x" +msgstr "2 passagens" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:66 +#: qcsrc/menu/xonotic/dialog_settings_effects.c:104 +msgid "4x" +msgstr "4 passagens" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:70 +msgid "Texture resolution:" +msgstr "Resolução das texturas:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:73 +#, fuzzy +msgid "RES^Leet" +msgstr "Leet" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:74 +#, fuzzy +msgid "RES^Lowest" +msgstr "Mínimo" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:75 +#, fuzzy +msgid "RES^Low" +msgstr "Baixa" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:76 +#, fuzzy +msgid "RES^Normal" +msgstr "Normal" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:77 +#, fuzzy +msgid "RES^Good" +msgstr "Bom" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:78 +#, fuzzy +msgid "RES^Best" +msgstr "Melhores" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:91 +#: qcsrc/menu/xonotic/dialog_settings_effects.c:94 +msgid "Avoid lossy texture compression" +msgstr "Evitar compressão de Texturas" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:100 +msgid "Anisotropy:" +msgstr "Filtro Anisotrópico:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:102 +#, fuzzy +msgid "ANISO^Disabled" +msgstr "Desligado" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:105 +msgid "8x" +msgstr "8x" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:106 +msgid "16x" +msgstr "16x" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:110 +msgid "Particle quality:" +msgstr "Qualidade das Partículas:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:113 +msgid "Particle distance:" +msgstr "Distancia visível das Partículas:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:117 +msgid "Decals" +msgstr "Símbolos" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:120 +msgid "Distance:" +msgstr "Distância:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:126 +msgid "Time:" +msgstr "Tempo:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:132 +msgid "Use lightmaps" +msgstr "Usar lightmaps" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:133 +msgid "Deluxe mapping" +msgstr "Mapeamento Deluxe" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:135 +msgid "Gloss" +msgstr "Lustro" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:138 +msgid "Offset mapping" +msgstr "Mapeamento Offset" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:140 +msgid "Relief mapping" +msgstr "Mapeamento Relief" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:143 +msgid "Reflections:" +msgstr "Reflexos:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:146 +msgid "Blurred" +msgstr "Grau de Blur" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:147 +#, fuzzy +msgid "REFL^Good" +msgstr "Bom" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:148 +msgid "Sharp" +msgstr "Grau de Definição" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:153 +msgid "Show surfaces" +msgstr "Mostrar superfícies" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:155 +msgid "No dynamic lighting" +msgstr "Iluminação dinâmica desligada" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:157 +msgid "Flash blend approximation" +msgstr "Aproximação Flash Blend" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:159 +msgid "Realtime dynamic lighting" +msgstr "Iluminação dinâmica em tempo real" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:160 +#: qcsrc/menu/xonotic/dialog_settings_effects.c:164 +msgid "Shadows" +msgstr "Sombras" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:163 +msgid "Realtime world lighting" +msgstr "Iluminação do mundo em tempo real" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:168 +msgid "Use normal maps" +msgstr "Usar mapas normais" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:170 +msgid "Soft shadows" +msgstr "Sombras Suaves" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:173 +msgid "Coronas" +msgstr "Coronas" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:175 +msgid "Bloom" +msgstr "Bloom" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:177 +msgid "High Dynamic Range (HDR)" +msgstr "High Dynamic Range (HDR)" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:181 +msgid "Motion blur:" +msgstr "Distorção por movimento:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:187 +msgid "Damage blur:" +msgstr "Distorção por dano:" + +#: qcsrc/menu/xonotic/dialog_settings_input.c:26 +msgid "Key bindings:" +msgstr "Bindings de Teclas" + +#: qcsrc/menu/xonotic/dialog_settings_input.c:31 +msgid "Change key..." +msgstr "Mudar tecla..." + +#: qcsrc/menu/xonotic/dialog_settings_input.c:35 +msgid "Edit..." +msgstr "Editar..." + +#: qcsrc/menu/xonotic/dialog_settings_input.c:46 +msgid "Sensitivity:" +msgstr "Sensibilidade:" + +#: qcsrc/menu/xonotic/dialog_settings_input.c:49 +msgid "UI mouse speed:" +msgstr "Velocidade do rato:" + +#: qcsrc/menu/xonotic/dialog_settings_input.c:52 +msgid "Mouse filter" +msgstr "Filtro do Rato" + +#: qcsrc/menu/xonotic/dialog_settings_input.c:54 +msgid "Invert mouse" +msgstr "Inverter Rato" + +#: qcsrc/menu/xonotic/dialog_settings_input.c:57 +#: qcsrc/menu/xonotic/dialog_settings_input.c:59 +msgid "Use joystick input" +msgstr "Usar input do joystick" + +#: qcsrc/menu/xonotic/dialog_settings_input.c:62 +#: qcsrc/menu/xonotic/dialog_settings_input.c:64 +msgid "Turn off OS mouse acceleration" +msgstr "Desligar aceleração de Rato do SO" + +#: qcsrc/menu/xonotic/dialog_settings_input.c:66 +msgid "\"enter console\" also closes" +msgstr "\"entrar na consola\" também fecha" + +#: qcsrc/menu/xonotic/dialog_settings_input_userbind.c:5 +msgid "User defined key bind" +msgstr "Keybinds definidas pelo utilizador" + +#: qcsrc/menu/xonotic/dialog_settings_input_userbind.c:42 +msgid "Command when pressed:" +msgstr "Comando quando carregado:" + +#: qcsrc/menu/xonotic/dialog_settings_input_userbind.c:45 +msgid "Command when released:" +msgstr "Comando quando largado:" + +#: qcsrc/menu/xonotic/dialog_settings_input_userbind.c:48 +msgid "Save" +msgstr "Guardar" + +#: qcsrc/menu/xonotic/dialog_settings_input_userbind.c:51 +msgid "Cancel" +msgstr "Cancelar" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:26 +msgid "Menu skins:" +msgstr "Skins de Menu:" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:47 +msgid "Show current time" +msgstr "Mostrar tempo corrente" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:49 +msgid "Show current date" +msgstr "Mostrar data corrente" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:51 +msgid "Show frames per second" +msgstr "Mostrar Frames por Segundo" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:53 +msgid "Speedometer" +msgstr "Medidor de Velocidade" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:56 +msgid "qu/s (hidden)" +msgstr "qu/s (escondido)" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:58 +msgid "qu/s" +msgstr "qu/s" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:60 +msgid "m/s" +msgstr "m/s" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:64 +msgid "km/h" +msgstr "km/h" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:66 +msgid "mph" +msgstr "mph" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:68 +msgid "knots" +msgstr "nós" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:71 +msgid "Show accelerometer" +msgstr "Mostrar accelerómetro" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:74 +msgid "Accelerometer scale:" +msgstr "Escala do accelerómetro:" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:80 +msgid "Minimize input latency" +msgstr "Minimizar latência de entrada" + +#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:5 +msgid "Advanced settings" +msgstr "Definições avançadas" + +#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:23 +msgid "Cvar filter:" +msgstr "Filtro de Cvar" + +#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:34 +msgid "Setting:" +msgstr "Definição:" + +#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:42 +msgid "Value:" +msgstr "Valor:" + +#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:54 +msgid "Description:" +msgstr "Descrição:" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:26 +msgid "Client-side movement prediction" +msgstr "Previsão de movimento pelo Cliente" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:30 +msgid "Show netgraph" +msgstr "Mostrar gráfico-net" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:33 +msgid "Network speed:" +msgstr "Velocidade da Rede:" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:35 +msgid "56k" +msgstr "56k" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:36 +msgid "ISDN" +msgstr "ISDN" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:37 +msgid "Slow ADSL" +msgstr "ADSL Lenta" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:38 +msgid "Fast ADSL" +msgstr "ADSL Rápida" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:39 +msgid "Broadband" +msgstr "Banda-larga" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:42 +msgid "Input packets/s:" +msgstr "Pacotes Entrada /s" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:46 +msgid "HTTP downloads:" +msgstr "Transferências via HTTP:" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:49 +msgid "Downloads:" +msgstr "Transferências:" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:53 +msgid "Speed (kB/s):" +msgstr "Velocidade (kB/s):" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:57 +msgid "Client UDP port:" +msgstr "Port UDP do Cliente:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:26 +msgid "Resolution:" +msgstr "Resolução:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:29 +msgid "Font/UI size:" +msgstr "Font/UI - tamanho:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:31 +#, fuzzy +msgid "SZ^Unreadable" +msgstr "Ilegível" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:32 +#, fuzzy +msgid "SZ^Tiny" +msgstr "Minuscula" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:33 +#, fuzzy +msgid "SZ^Little" +msgstr "Muito Pequena" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:34 +#, fuzzy +msgid "SZ^Small" +msgstr "Pequena" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:35 +#, fuzzy +msgid "SZ^Medium" +msgstr "Média" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:36 +#, fuzzy +msgid "SZ^Large" +msgstr "Grande" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:37 +#, fuzzy +msgid "SZ^Huge" +msgstr "Enorme" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:38 +#, fuzzy +msgid "SZ^Gigantic" +msgstr "Gigante" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:39 +#, fuzzy +msgid "SZ^Colossal" +msgstr "Colossal" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:42 +msgid "Color depth:" +msgstr "Profundidade da cor:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:45 +msgid "Full screen" +msgstr "Ecrã Inteiro" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:46 +msgid "Vertical Synchronization" +msgstr "Sincronização Vertical" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:49 +msgid "Use OpenGL 2.0 shaders (GLSL)" +msgstr "Usar shaders OpenGL2.0 (GLSL)" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:52 +msgid "Use Occlusion Queries" +msgstr "Usar Consultas Oclusão" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:55 +msgid "Vertex Buffer Objects (VBOs)" +msgstr "Objectos Vertex Buffers (VBOs)" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:58 +#, fuzzy +msgid "VBO^Off" +msgstr "Desligado" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:59 +msgid "Vertices, some Tris (compatible)" +msgstr "Vértices, alguns Triângulos (compatível)" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:62 +msgid "Vertices" +msgstr "Vértices" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:63 +msgid "Vertices and Triangles" +msgstr "Vértices e Triângulos" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:65 +msgid "Depth first:" +msgstr "Profundidade primeiro:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:67 +#, fuzzy +msgid "DF^Disabled" +msgstr "Desligado" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:68 +#, fuzzy +msgid "DF^World" +msgstr "Mundo" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:69 +#, fuzzy +msgid "DF^All" +msgstr "Todos" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:73 +msgid "Disable multithreaded OpenGL" +msgstr "Desactivar OpenGL em múltiplos threads" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:75 +msgid "Wait for GPU to finish each frame" +msgstr "Esperar que a placa gráfica termine cada frame" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:78 +msgid "Brightness:" +msgstr "Brilho:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:81 +msgid "Contrast:" +msgstr "Contraste:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:84 +msgid "Gamma:" +msgstr "Gamma:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:87 +msgid "Contrast boost:" +msgstr "Contraste - Boost" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:90 +msgid "Saturation:" +msgstr "Saturação da Cor:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:95 +msgid "Use GLSL to handle color control" +msgstr "Usar GLSL para o controlo de cores" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:99 +#, fuzzy +msgid "LIT^Ambient:" +msgstr "Som Ambiente:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:102 +msgid "Intensity:" +msgstr "Intensidade:" + +#: qcsrc/menu/xonotic/dialog_singleplayer.c:4 +msgid "Singleplayer" +msgstr "Um Jogador" + +#: qcsrc/menu/xonotic/dialog_singleplayer.c:59 +msgid "Instant action! (random map with bots)" +msgstr "Acção Instantânea! (Mapa ao acaso contra o computador)" + +#: qcsrc/menu/xonotic/dialog_singleplayer.c:80 +msgid "Start Singleplayer!" +msgstr "Começar Um só Jogador!" + +#: qcsrc/menu/xonotic/dialog_singleplayer_winner.c:4 +msgid "Winner" +msgstr "Vencedor" + +#: qcsrc/menu/xonotic/dialog_teamselect.c:5 +msgid "Team Selection" +msgstr "Selecção de Equipa" + +#: qcsrc/menu/xonotic/dialog_teamselect.c:41 +msgid "join 'best' team (auto-select)" +msgstr "juntar 'melhor' equipa (selecção automática)" + +#: qcsrc/menu/xonotic/dialog_teamselect.c:45 +msgid "red" +msgstr "vermelha" + +#: qcsrc/menu/xonotic/dialog_teamselect.c:46 +msgid "blue" +msgstr "azul" + +#: qcsrc/menu/xonotic/dialog_teamselect.c:47 +msgid "yellow" +msgstr "amarela" + +#: qcsrc/menu/xonotic/dialog_teamselect.c:48 +msgid "pink" +msgstr "rosa" + +#: qcsrc/menu/xonotic/dialog_teamselect.c:51 +msgid "spectate" +msgstr "espectador" + +#: qcsrc/menu/xonotic/mainwindow.c:35 qcsrc/menu/xonotic/mainwindow.c:38 +msgid "Do not press this button again!" +msgstr "Não voltar a carregar neste botão!" + +#: qcsrc/menu/xonotic/maplist.c:278 +msgid "" +"Huh? Can't play this (m is NULL). Refiltering so this won't happen again.\n" +msgstr "" +"Huh? Não posso jogar isto (m é NULL). Voltando a filtrar de maneira a que " +"isto não se repitanovamente.\n" + +#: qcsrc/menu/xonotic/maplist.c:286 +#, c-format +msgid "%s's Xonotic Server" +msgstr "Servidor de Xonotic do %s" + +#: qcsrc/menu/xonotic/maplist.c:291 +msgid "" +"Huh? Can't play this (invalid game type). Refiltering so this won't happen " +"again.\n" +msgstr "" +"Huh? Não posso jogar isto (tipo de jogo inválido). Voltando a filtrar de " +"maneira a que isto não se repitanovamente.\n" + +#: qcsrc/menu/xonotic/playermodel.c:174 +msgid "<no model found>" +msgstr "<nenhum modelo encontrado>" + +#: qcsrc/menu/xonotic/serverlist.c:357 +msgid "Remove" +msgstr "Remover" + +#: qcsrc/menu/xonotic/serverlist.c:359 +msgid "Bookmark" +msgstr "Marcar" + +#: qcsrc/menu/xonotic/serverlist.c:515 +msgid "Ping" +msgstr "Ping" + +#: qcsrc/menu/xonotic/serverlist.c:516 +msgid "Host name" +msgstr "Nome do Host" + +#: qcsrc/menu/xonotic/serverlist.c:517 +msgid "Map" +msgstr "Mapa" + +#: qcsrc/menu/xonotic/serverlist.c:518 +msgid "Type" +msgstr "Tipo" + +#: qcsrc/menu/xonotic/serverlist.c:519 +msgid "Players" +msgstr "Jogadores" + +#: qcsrc/menu/xonotic/skinlist.c:105 +msgid "<TITLE>" +msgstr "<TÍTULO>" + +#: qcsrc/menu/xonotic/skinlist.c:106 +msgid "<AUTHOR>" +msgstr "<AUTOR>" + +#: qcsrc/menu/xonotic/skinlist.c:163 +#, c-format +msgid "%s: %s" +msgstr "%s: %s" + +#: qcsrc/menu/xonotic/slider_decibels.c:50 +#, fuzzy +msgid "VOL^OFF" +msgstr "DESLIGADO" + +#: qcsrc/menu/xonotic/slider_decibels.c:52 +#, fuzzy +msgid "VOL^MAX" +msgstr "MÀX" + +#: qcsrc/menu/xonotic/slider_decibels.c:53 +#, c-format +msgid "%s dB" +msgstr "%s dB" + +#: qcsrc/menu/xonotic/slider_resolution.c:65 +#, c-format +msgid "%dx%d" +msgstr "%dx%d" + +#: qcsrc/menu/xonotic/util.qc:270 +#, c-format +msgid "Received HTTP request data for an invalid id %d.\n" +msgstr "Recebido um pedido HTTP de um id inválido %d. \n" + +#: qcsrc/menu/xonotic/util.qc:285 +#, c-format +msgid "error receiving update notification: status is %d\n" +msgstr "erro ao receber notificação: o estado e %d\n" + +#: qcsrc/menu/xonotic/util.qc:290 +msgid "error: received HTML instead of an update notification\n" +msgstr "erro: recebido HTML em vez de notificação de actualização\n" + +#: qcsrc/menu/xonotic/util.qc:295 +msgid "error: received carriage returns from update notification server\n" +msgstr "" +"erro: recebido 'carriage return' de um servidor de notificação de " +"actualização\n" + +#: qcsrc/menu/xonotic/util.qc:316 +#, c-format +msgid "" +"Update can be downloaded at:\n" +"%s\n" +msgstr "" +"Actualização pode ser transferida em:\n" +"%s\n" + +#: qcsrc/menu/xonotic/util.qc:337 +msgid "Autogenerating mapinfo for newly added maps..." +msgstr "Informação de mapas auto-gerada para novos mapas..." + +#: qcsrc/menu/xonotic/util.qc:432 +#, c-format +msgid "Update to %s now!" +msgstr "Actualize para %s agora!" + +#: qcsrc/menu/xonotic/util.qc:509 +msgid "" +"^1ERROR: Texture compression is required but not supported.\n" +"^1Expect visual problems.\n" +msgstr "" +"^1ERRO: A compressão de texturas é necessária mas não é suportada.\n" +"^1Possíveis problemas visuais.\n" + +#: qcsrc/menu/xonotic/util.qc:531 +msgid "Arena" +msgstr "Arena" + +#: qcsrc/menu/xonotic/util.qc:532 +msgid "Assault" +msgstr "Assalto" + +#: qcsrc/menu/xonotic/util.qc:533 +msgid "Capture The Flag" +msgstr "Captura a Bandeira" + +#: qcsrc/menu/xonotic/util.qc:534 +msgid "Clan Arena" +msgstr "Clan Arena" + +#: qcsrc/menu/xonotic/util.qc:535 +msgid "Deathmatch" +msgstr "Combate até à Morte" + +#: qcsrc/menu/xonotic/util.qc:536 +msgid "Domination" +msgstr "Domínio" + +#: qcsrc/menu/xonotic/util.qc:537 +msgid "Freeze Tag" +msgstr "Freeze Tag" + +#: qcsrc/menu/xonotic/util.qc:538 +msgid "Keepaway" +msgstr "Keepaway" + +#: qcsrc/menu/xonotic/util.qc:539 +msgid "Key Hunt" +msgstr "Procura da Chave" + +#: qcsrc/menu/xonotic/util.qc:540 +msgid "Last Man Standing" +msgstr "O Ultimo a Cair" + +#: qcsrc/menu/xonotic/util.qc:541 +msgid "Nexball" +msgstr "Nexball" + +#: qcsrc/menu/xonotic/util.qc:542 +msgid "Onslaught" +msgstr "Investida" + +#: qcsrc/menu/xonotic/util.qc:543 +msgid "Race" +msgstr "Corrida" + +#: qcsrc/menu/xonotic/util.qc:544 +msgid "Race CTS" +msgstr "Corrida CTS" + +#: qcsrc/menu/xonotic/util.qc:545 +msgid "Runematch" +msgstr "Luta de Runas" + +#: qcsrc/menu/xonotic/util.qc:546 +msgid "Team Deathmatch" +msgstr "Combate até à Morte por Equipas" + +#: qcsrc/menu/xonotic/util.qc:565 +#, c-format +msgid "@!#%'n Tuba Throwing" +msgstr "@!#%'n Tuba Throwing" + +#: qcsrc/menu/xonotic/util.qc:606 +msgid "Background:" +msgstr "Fundo:" + +#: qcsrc/menu/xonotic/util.qc:608 qcsrc/menu/xonotic/util.qc:624 +#: qcsrc/menu/xonotic/util.qc:633 qcsrc/menu/xonotic/util.qc:641 +#: qcsrc/menu/xonotic/util.qc:653 +msgid "Default" +msgstr "Por Defeito" + +#: qcsrc/menu/xonotic/util.qc:619 +msgid "Use default" +msgstr "Usar defeito" + +#: qcsrc/menu/xonotic/util.qc:639 +msgid "Team Color:" +msgstr "Cor da Equipa:" + +#: qcsrc/menu/xonotic/util.qh:49 +msgid "Enable panel" +msgstr "Actival painel" + +#~ msgid "" +#~ "Please answer a few initial questions to enhance the game experience." +#~ msgstr "" +#~ "Por favor responda a umas perguntas iniciais para melhorarmos a sua " +#~ "experiência de jogo." diff --git a/menu.dat.ru.po b/menu.dat.ru.po new file mode 100644 index 0000000000..81f6d4ae7e --- /dev/null +++ b/menu.dat.ru.po @@ -0,0 +1,2410 @@ +# Xonotic Menu +# Copyright (C) 2011 Team Xonotic +# This file is distributed under the same license as the Xonotic package. +# Lord Canistra <lordcanistra@gmail.com>, 2011. +# +msgid "" +msgstr "" +"Project-Id-Version: 0.1preview\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2011-01-18 21:36+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: Lord Canistra <lordcanistra@gmail.com>\n" +"Language-Team: LANGUAGE <LL@li.org>\n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: qcsrc/menu/gamecommand.qc:47 +#, c-format +msgid "error: status is %d\n" +msgstr "ошибка: статус %d\n" + +#: qcsrc/menu/gamecommand.qc:65 +msgid "Usage: menu_cmd command..., where possible commands are:\n" +msgstr "Использование: menu_cmd command..., где возможные команды:\n" + +#: qcsrc/menu/gamecommand.qc:66 +msgid " sync - reloads all cvars on the current menu page\n" +msgstr " синх. - обновляет все cvar на текущей странице меню\n" + +#: qcsrc/menu/gamecommand.qc:67 +msgid " directmenu ITEM - select a menu item as main item\n" +msgstr " directmenu ITEM - определить элемент меню как главный элемент\n" + +#: qcsrc/menu/gamecommand.qc:193 +msgid "error creating curl handle\n" +msgstr "ошибка при создании curl handle\n" + +#: qcsrc/menu/gamecommand.qc:239 +msgid "Invalid command. For a list of supported commands, try menu_cmd help.\n" +msgstr "" +"Неверная команда. Попробуйте menu_cmd help, чтобы получить список доступных " +"команд.\n" + +#: qcsrc/menu/item/gecko.c:49 +msgid "Browser not initialized!" +msgstr "Браузер не инициализирован!" + +#: qcsrc/menu/item/label.c:63 +#, c-format +msgid "NOTE: label text %s too wide for label, condensed by factor %f\n" +msgstr "ВНИМАНИЕ: текст %s слишком широк для надписи, сжат до %f раз\n" + +#: qcsrc/menu/item/listbox.c:300 +#, c-format +msgid "Item %d" +msgstr "Предмет %d" + +#: qcsrc/menu/item/slider.c:64 +#, c-format +msgid "%d (%s)" +msgstr "%d (%s)" + +#: qcsrc/menu/item/textslider.c:29 qcsrc/menu/item/textslider.c:31 +msgid "custom" +msgstr "особо" + +#: qcsrc/menu/menu.qc:29 +#, c-format +msgid "^4MQC Build information: %s\n" +msgstr "^4Информация билда MQC: %s\n" + +#: qcsrc/menu/xonotic/campaign.c:284 +#: qcsrc/menu/xonotic/dialog_singleplayer.c:66 +msgid "???" +msgstr "???" + +#: qcsrc/menu/xonotic/campaign.c:285 +#, c-format +msgid "Level %d: %s" +msgstr "Уровень %d: %s" + +#: qcsrc/menu/xonotic/cvarlist.c:84 +msgid "will be saved to config.cfg" +msgstr "будет сохранено в config.cfg" + +#: qcsrc/menu/xonotic/cvarlist.c:86 +msgid "will not be saved" +msgstr "не будет сохранено" + +#: qcsrc/menu/xonotic/cvarlist.c:88 +msgid "private" +msgstr "приватное" + +#: qcsrc/menu/xonotic/cvarlist.c:90 +msgid "engine setting" +msgstr "установка движка" + +#: qcsrc/menu/xonotic/cvarlist.c:92 +msgid "read only" +msgstr "только чтение" + +#: qcsrc/menu/xonotic/dialog_credits.c:5 +msgid "Credits" +msgstr "Разработчики" + +#: qcsrc/menu/xonotic/dialog_credits.c:21 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:82 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:269 +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:46 +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:55 +#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:59 +#: qcsrc/menu/xonotic/dialog_singleplayer_winner.c:21 +msgid "OK" +msgstr "ОК" + +#: qcsrc/menu/xonotic/dialog_firstrun.c:4 +msgid "Welcome" +msgstr "Добро пожаловать" + +#: qcsrc/menu/xonotic/dialog_firstrun.c:33 +msgid "" +"Welcome to Xonotic, please select your language preference and enter your " +"player name to get started. You can change these options later through the " +"menu system." +msgstr "" +"Добро пожаловать в Xonotic. Для начала, пожалуйста, выберите ваш язык и " +"введите ваше имя. Позже вы сможете изменить эти настройки в меню." + +#: qcsrc/menu/xonotic/dialog_firstrun.c:38 +#: qcsrc/menu/xonotic/dialog_settings_misc.c:35 +msgid "Text language:" +msgstr "Язык меню:" + +#: qcsrc/menu/xonotic/dialog_firstrun.c:47 +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:40 +#: qcsrc/menu/xonotic/dialog_settings_input_userbind.c:39 +msgid "Name:" +msgstr "Имя:" + +#: qcsrc/menu/xonotic/dialog_firstrun.c:69 +msgid "Save settings" +msgstr "Сохранить настройки:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_ammo.c:4 +msgid "Ammo Panel" +msgstr "Панель боеприпасов" + +#: qcsrc/menu/xonotic/dialog_hudpanel_ammo.c:22 +msgid "Ammunition display:" +msgstr "Показ боеприпасов:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_ammo.c:25 +msgid "Show only current ammo type" +msgstr "Показывать только текущий тип боеприпасов" + +#: qcsrc/menu/xonotic/dialog_hudpanel_ammo.c:29 +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:28 +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:40 +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:28 +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:40 +msgid "Left" +msgstr "Слева" + +#: qcsrc/menu/xonotic/dialog_hudpanel_ammo.c:30 +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:30 +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:41 +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:30 +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:41 +msgid "Right" +msgstr "Справа" + +#: qcsrc/menu/xonotic/dialog_hudpanel_chat.c:4 +msgid "Chat Panel" +msgstr "Панель чата" + +#: qcsrc/menu/xonotic/dialog_hudpanel_chat.c:22 +msgid "Chat entries:" +msgstr "Записи в чате:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_chat.c:25 +msgid "Chat size:" +msgstr "Размер чата:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_chat.c:29 +msgid "Chat lifetime:" +msgstr "Время жизни:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_chat.c:33 +msgid "Chat beep sound" +msgstr "Звук чата:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_engineinfo.c:4 +msgid "Engine Info Panel" +msgstr "Панель инф. движка" + +#: qcsrc/menu/xonotic/dialog_hudpanel_engineinfo.c:22 +msgid "Engine info:" +msgstr "Инф. движка:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_engineinfo.c:25 +msgid "Use an averaging algorithm for fps" +msgstr "Исп. алгоритм усреднения для FPS" + +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:4 +msgid "Health/Armor Panel" +msgstr "Панель здоровья/брони" + +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:22 +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:22 +msgid "Enable status bar" +msgstr "Включить полосу состояния" + +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:24 +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:24 +msgid "Status bar alignment:" +msgstr "Выравнивание полосы состояния:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:32 +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:42 +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:32 +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:42 +msgid "Inward" +msgstr "Внутрь" + +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:34 +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:43 +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:34 +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:43 +msgid "Outward" +msgstr "Наружу" + +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:37 +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:37 +msgid "Icon alignment:" +msgstr "Выравнивание иконок:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:45 +msgid "Flip health and armor positions" +msgstr "Поменять местами здоровье и броню" + +#: qcsrc/menu/xonotic/dialog_hudpanel_infomessages.c:4 +msgid "Info Messages Panel" +msgstr "Панель информационных сообщений" + +#: qcsrc/menu/xonotic/dialog_hudpanel_infomessages.c:22 +msgid "Info messages:" +msgstr "Инф. сообщения:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_infomessages.c:25 +msgid "Flip align" +msgstr "Перевернуть выравнивание" + +#: qcsrc/menu/xonotic/dialog_hudpanel_modicons.c:4 +msgid "Mod Icons Panel" +msgstr "Панель иконок мода" + +#: qcsrc/menu/xonotic/dialog_hudpanel_notification.c:4 +msgid "Notification Panel" +msgstr "Панель уведомлений" + +#: qcsrc/menu/xonotic/dialog_hudpanel_notification.c:22 +msgid "Notifications:" +msgstr "Уведомления:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_notification.c:25 +msgid "Also print notifications to the console" +msgstr "Также показывать уведомления в консоли" + +#: qcsrc/menu/xonotic/dialog_hudpanel_notification.c:28 +msgid "Flip notify order" +msgstr "Обратить порядок уведомлений" + +#: qcsrc/menu/xonotic/dialog_hudpanel_notification.c:31 +msgid "Entry lifetime:" +msgstr "Время видимости:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_notification.c:35 +msgid "Entry fadetime:" +msgstr "Время исчезновения:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:4 +msgid "Powerups Panel" +msgstr "Панель бонусов" + +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:45 +msgid "Flip strength and shield positions" +msgstr "Поменять местами Силу и Щит" + +#: qcsrc/menu/xonotic/dialog_hudpanel_pressedkeys.c:4 +msgid "Pressed Keys Panel" +msgstr "Панель нажатых кнопок" + +#: qcsrc/menu/xonotic/dialog_hudpanel_pressedkeys.c:21 +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:21 +msgid "Panel disabled" +msgstr "Отключена" + +#: qcsrc/menu/xonotic/dialog_hudpanel_pressedkeys.c:22 +msgid "Panel enabled when spectating" +msgstr "Включена при наблюдении" + +#: qcsrc/menu/xonotic/dialog_hudpanel_pressedkeys.c:23 +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:23 +msgid "Panel always enabled" +msgstr "Всегда включена" + +#: qcsrc/menu/xonotic/dialog_hudpanel_pressedkeys.c:30 +msgid "Forced aspect:" +msgstr "Соотношение:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_racetimer.c:4 +msgid "Race Timer Panel" +msgstr "Панель Гоночного Таймера" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:4 +msgid "Radar Panel" +msgstr "Панель радара" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:22 +msgid "Panel enabled in teamgames" +msgstr "Панель включена в командных играх" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:29 +msgid "Radar:" +msgstr "Радар:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:32 +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:43 +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:82 +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:151 +#: qcsrc/menu/xonotic/util.qc:631 +msgid "Alpha:" +msgstr "Прозрачность:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:36 +msgid "Rotation:" +msgstr "Поворот:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:38 +msgid "Forward" +msgstr "Взгляд" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:39 +msgid "West" +msgstr "Запад" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:40 +msgid "South" +msgstr "Юг" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:41 +msgid "East" +msgstr "Восток" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:42 +msgid "North" +msgstr "Север" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:46 +msgid "Scale:" +msgstr "Размер:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:50 +msgid "Zoom mode:" +msgstr "Режим увел.:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:52 +msgid "Zoomed in" +msgstr "Приближён" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:53 +msgid "Zoomed out" +msgstr "Не приближён" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:54 +msgid "Always zoomed" +msgstr "Всегда приближён" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:55 +msgid "Never zoomed" +msgstr "Никогда не приближён" + +#: qcsrc/menu/xonotic/dialog_hudpanel_score.c:4 +msgid "Score Panel" +msgstr "Таблица Очков" + +#: qcsrc/menu/xonotic/dialog_hudpanel_timer.c:4 +msgid "Timer Panel" +msgstr "Панель таймера" + +#: qcsrc/menu/xonotic/dialog_hudpanel_timer.c:22 +msgid "Timer:" +msgstr "Таймер:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_timer.c:25 +msgid "Show elapsed time" +msgstr "Показывать прошедшее время" + +#: qcsrc/menu/xonotic/dialog_hudpanel_vote.c:4 +msgid "Vote Panel" +msgstr "Панель голосования" + +#: qcsrc/menu/xonotic/dialog_hudpanel_vote.c:22 +msgid "Alpha after voting:" +msgstr "Прозр. после голосования:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:4 +msgid "Weapons Panel" +msgstr "Панель оружия" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:24 +msgid "Fade out after:" +msgstr "Исчезать после:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:26 +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:41 +msgid "Never" +msgstr "Никогда" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:28 +#, c-format +msgid "%ds" +msgstr "%dс" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:32 +msgid "Fade effect:" +msgstr "Эффект исчезновения:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:33 +msgid "EF^None" +msgstr "Отсутствует" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:35 +msgid "Slide" +msgstr "Скольжение" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:37 +msgid "Alpha" +msgstr "Исчезновение" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:40 +msgid "Weapon icons:" +msgstr "Иконки оружия:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:43 +msgid "Show weapon ID as:" +msgstr "Показывать ID оружия как:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:44 +msgid "SHOWAS^None" +msgstr "Не показывать" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:45 +msgid "Number" +msgstr "Число" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:46 +msgid "Bind" +msgstr "Привязка" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:49 +msgid "Show Accuracy" +msgstr "Показывать Точность" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:50 +msgid "Show Ammo" +msgstr "Показывать Боеприпасы" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:53 +msgid "Ammo bar color:" +msgstr "Цвет полосы боеприпасов" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:59 +msgid "Ammo bar alpha:" +msgstr "Прозрачность полосы боеприпасов:" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:4 +msgid "Panel HUD Setup" +msgstr "Настройка панелей" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:21 +msgid "Panel background defaults:" +msgstr "Фон по умолчанию:" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:25 +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:37 +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:52 +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:91 qcsrc/menu/xonotic/util.qc:609 +#: qcsrc/menu/xonotic/util.qc:625 qcsrc/menu/xonotic/util.qc:642 +msgid "Disable" +msgstr "Отключить" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:30 +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:77 qcsrc/menu/xonotic/util.qc:614 +msgid "Color:" +msgstr "Цвет:" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:35 qcsrc/menu/xonotic/util.qc:622 +msgid "Border size:" +msgstr "Ширина краёв:" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:50 +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:89 +msgid "Team color:" +msgstr "Цвет команды:" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:58 qcsrc/menu/xonotic/util.qc:648 +msgid "Test team color in configure mode" +msgstr "Проверить цвет команды в режиме настройки" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:61 qcsrc/menu/xonotic/util.qc:651 +msgid "Padding:" +msgstr "Промежуток:" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:68 +msgid "HUD Dock:" +msgstr "Область HUD:" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:70 +msgid "DOCK^Disabled" +msgstr "Отключено" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:71 +msgid "DOCK^Small" +msgstr "Небольшая" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:72 +msgid "DOCK^Medium" +msgstr "Средняя" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:73 +msgid "DOCK^Large" +msgstr "Большая" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:96 +msgid "Grid settings:" +msgstr "Настройки сетки:" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:99 +msgid "Snap panels to grid" +msgstr "Передвижение панелей по сетке" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:102 +msgid "Grid size:" +msgstr "Шаг сетки:" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:103 +msgid "X:" +msgstr "X:" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:109 +msgid "Y:" +msgstr "Y:" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:117 +msgid "Exit setup" +msgstr "Выйти из настройки" + +#: qcsrc/menu/xonotic/dialog_multiplayer.c:4 +msgid "Multiplayer" +msgstr "Игра по сети" + +#: qcsrc/menu/xonotic/dialog_multiplayer.c:18 +msgid "Servers" +msgstr "Серверы" + +#: qcsrc/menu/xonotic/dialog_multiplayer.c:19 +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:5 +msgid "Create" +msgstr "Создать" + +#: qcsrc/menu/xonotic/dialog_multiplayer.c:20 +msgid "Demos" +msgstr "Demo файлы" + +#: qcsrc/menu/xonotic/dialog_multiplayer.c:21 +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:5 +msgid "Player Setup" +msgstr "Настройки игрока" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:35 +msgid "Game type:" +msgstr "Тип игры:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:47 +msgid "Match settings:" +msgstr "Настройки матча:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:50 +msgid "Time limit:" +msgstr "Предел времени:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:54 +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:62 +msgid "Use map specified default" +msgstr "Исп. предел карты" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:57 +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:156 +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:157 +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:158 +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:162 +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:163 +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:164 +msgid "Point limit:" +msgstr "Предел очков:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:65 +msgid "Player slots:" +msgstr "Кол-во игроков:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:68 +msgid "Number of bots:" +msgstr "Кол-во ботов:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:72 +msgid "Bot skill:" +msgstr "Уровень ботов:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:75 +msgid "Botlike" +msgstr "Ботоподобный" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:76 +msgid "Beginner" +msgstr "Новичок" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:77 +msgid "You will win" +msgstr "Лёгкая победа" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:78 +msgid "You can win" +msgstr "Можешь выиграть" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:79 +msgid "You might win" +msgstr "Возможно выиграешь" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:80 +msgid "Advanced" +msgstr "Продвинутый" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:81 +msgid "Expert" +msgstr "Эксперт" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:82 +msgid "Pro" +msgstr "Про" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:83 +msgid "Assassin" +msgstr "Убийца" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:84 +msgid "Unhuman" +msgstr "Сверхчеловек" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:85 +msgid "Godlike" +msgstr "Богоподобный" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:89 +msgid "Mutators..." +msgstr "Мутаторы..." + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:98 +#: qcsrc/menu/xonotic/dialog_settings_misc.c:84 +msgid "Advanced settings..." +msgstr "Доп. настройки..." + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:105 +msgid "Map list:" +msgstr "Список карт:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:111 +msgid "Select all" +msgstr "Выбрать все" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:114 +msgid "Select none" +msgstr "Снять выделение" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:120 +msgid "Start Multiplayer!" +msgstr "Начать игру по сети" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:155 +msgid "Capture limit:" +msgstr "Предел захватов:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:159 +msgid "Lives:" +msgstr "Жизни:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:160 +msgid "Laps:" +msgstr "Круги:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:161 +msgid "Goals:" +msgstr "Цели:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:165 +msgid "Frag limit:" +msgstr "Предел убийств:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:6 +msgid "Advanced server settings" +msgstr "Доп. серверные настройки" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:25 +msgid "Game settings:" +msgstr "Настройки игры:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:28 +msgid "Allow spectating" +msgstr "Разрешить наблюдение" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:31 +msgid "Spawn shield:" +msgstr "Защита при возрождении" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:36 +msgid "Game speed:" +msgstr "Скорость игры:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:40 +msgid "Teamplay settings:" +msgstr "Настройки команд:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:43 +msgid "Friendly fire scale:" +msgstr "Огонь по союзникам:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:47 +msgid "Virtual friendly fire (effect only)" +msgstr "Фиктивный огонь по союзникам (только эффект)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:50 +msgid "Friendly fire penalty:" +msgstr "Штраф за огонь по союзникам" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:54 +msgid "Virtual penalty (effect only)" +msgstr "Фиктивный штраф (только эффект)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:57 +msgid "Teams:" +msgstr "Команды:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:66 +msgid "Map voting:" +msgstr "Голосование за карты:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:68 +msgid "No voting" +msgstr "Без голосования" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:69 +msgid "2 choices" +msgstr "2 выбора" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:70 +msgid "3 choices" +msgstr "3 выбора" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:71 +msgid "4 choices" +msgstr "4 выбора" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:72 +msgid "5 choices" +msgstr "5 выборов" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:73 +msgid "6 choices" +msgstr "6 выборов" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:74 +msgid "7 choices" +msgstr "7 выборов" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:75 +msgid "8 choices" +msgstr "8 выборов" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:76 +msgid "9 choices" +msgstr "9 выборов" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:79 +msgid "Simple majority wins vcall" +msgstr "Простое большинство выигрывает" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:5 +msgid "Map Information" +msgstr "Информация о карте" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:49 +msgid "Full item placement" +msgstr "С оружием" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:49 +msgid "MinstaGib only" +msgstr "Только MinstaGib" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:78 +msgid "Title:" +msgstr "Заголовок:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:84 +msgid "Author:" +msgstr "Автор:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:90 +msgid "Features:" +msgstr "Особенности:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:95 +msgid "Game types:" +msgstr "Режимы игры:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:119 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:308 +msgid "Close" +msgstr "Закрыть" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:122 +#: qcsrc/menu/xonotic/dialog_multiplayer_demo.c:46 +msgid "Play" +msgstr "Играть" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:7 +msgid "Mutators" +msgstr "Мутаторы" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:33 +msgid "All Weapons Arena" +msgstr "Арена со всем оружием" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:35 +msgid "Most Weapons Arena" +msgstr "Арена с большинством оружия" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:56 +#, c-format +msgid "%s Arena" +msgstr "%s Арена" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:68 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:167 +msgid "Dodging" +msgstr "Уклонение" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:70 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:250 +msgid "MinstaGib" +msgstr "MinstaGib" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:72 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:253 +msgid "NIX" +msgstr "NIX" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:74 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:205 +msgid "Rocket Flying" +msgstr "Ракетный полёт" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:78 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:264 +msgid "No start weapons" +msgstr "Без оружия в начале" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:80 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:189 +msgid "Low gravity" +msgstr "Низкая гравитация" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:82 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:170 +msgid "Cloaked" +msgstr "Невидимость" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:84 +msgid "Hook" +msgstr "Крюк" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:86 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:173 +msgid "Midair" +msgstr "Воздушный Конфликт" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:88 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:176 +msgid "Vampire" +msgstr "Вампиризм" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:90 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:208 +msgid "Piñata" +msgstr "Piñata" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:92 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:211 +msgid "Weapons stay" +msgstr "Неисчерпаемое Оружие" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:94 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:180 +msgid "Blood loss" +msgstr "Потеря Крови" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:96 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:202 +msgid "Jet pack" +msgstr "Джетпак" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:98 +msgid "MUT^None" +msgstr "Отсутствуют" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:164 +msgid "Gameplay mutators:" +msgstr "Мутаторы игрового процесса:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:196 +msgid "Weapon & item mutators:" +msgstr "Мутаторы оружия и предметов:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:199 +msgid "Grappling hook" +msgstr "Крюк" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:215 +msgid "Weapon arenas:" +msgstr "Арены с оружием" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:218 +msgid "Regular (no arena)" +msgstr "Обычная (не арена)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:239 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:256 +msgid "with laser" +msgstr "с лазером" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:247 +msgid "Special arenas:" +msgstr "Особые арены:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:260 +msgid "Most weapons" +msgstr "Большинство оружия" + +#: qcsrc/menu/xonotic/dialog_multiplayer_demo.c:4 +msgid "Demo" +msgstr "Демо" + +#: qcsrc/menu/xonotic/dialog_multiplayer_demo.c:28 +msgid "Record demos while playing" +msgstr "Записывать демо во время игры" + +#: qcsrc/menu/xonotic/dialog_multiplayer_demo.c:32 +#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:28 +msgid "Filter:" +msgstr "Фильтр:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_demo.c:33 +#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:29 +#: qcsrc/menu/xonotic/dialog_settings_input.c:41 +#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:24 +msgid "Clear" +msgstr "Очистить" + +#: qcsrc/menu/xonotic/dialog_multiplayer_demo.c:43 +msgid "Timedemo" +msgstr "Проверка производительности" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:4 +msgid "Join" +msgstr "Присоединиться" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:36 +msgid "SRVS^Empty" +msgstr "Пустые" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:40 +msgid "SRVS^Full" +msgstr "Полные" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:44 +msgid "Pause" +msgstr "Пауза" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:56 +msgid "Address:" +msgstr "Адрес:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:65 +msgid "Info..." +msgstr "Инфо..." + +#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:70 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:311 +msgid "Join!" +msgstr "Присоединиться" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:5 +msgid "Server Information" +msgstr "Инф. о сервере" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:115 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:116 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:177 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:183 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:193 +msgid "N/A" +msgstr "Н/Д" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:151 +#, c-format +msgid "%d/%d" +msgstr "%d/%d" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:166 +#, c-format +msgid "%d modified settings" +msgstr "кол-во изменённых настроек: %d" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:166 +msgid "Official settings" +msgstr "Оффициальные настройки" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:191 +msgid "N/A (can't connect)" +msgstr "Н/Д (не могу подключиться)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:199 +msgid "not supported (can't connect)" +msgstr "не поддерживается (не могу подключиться)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:201 +msgid "not supported (won't encrypt)" +msgstr "не поддерживается (шифрования не будет)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:205 +msgid "supported (will encrypt)" +msgstr "поддерживается (будет шифрование)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:207 +msgid "supported (won't encrypt)" +msgstr "поддерживается (шифрования не будет)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:211 +msgid "requested (will encrypt)" +msgstr "запрошено (будет шифрование)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:213 +msgid "requested (won't encrypt)" +msgstr "запрошено (шифрования не будет)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:217 +msgid "required (can't connect)" +msgstr "требуется (не могу подключиться)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:219 +msgid "required (will encrypt)" +msgstr "требуется (будет шифрование)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:240 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:263 +msgid "Players:" +msgstr "Игроки:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:248 +#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:38 +msgid "Type:" +msgstr "Тип:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:253 +msgid "Map:" +msgstr "Карта:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:258 +msgid "Gameplay:" +msgstr "Геймплей:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:268 +msgid "Bots:" +msgstr "Боты:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:273 +msgid "Mod:" +msgstr "Мод:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:278 +msgid "Version:" +msgstr "Версия:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:283 +msgid "Ping:" +msgstr "Пинг:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:289 +msgid "CA:" +msgstr "CA:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:295 +msgid "Key:" +msgstr "Ключ:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:301 +msgid "Encryption:" +msgstr "Шифрование:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:63 +msgid "Model:" +msgstr "Модель:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:88 +msgid "Field of view:" +msgstr "Field of view:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:92 +msgid "View bobbing:" +msgstr "Подпрыгивание:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:96 +msgid "Zoom factor:" +msgstr "Множитель увеличения:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:100 +msgid "Zoom speed:" +msgstr "Скорость увеличения:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:103 +msgid "Weapon settings..." +msgstr "Настройки оружия..." + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:110 +msgid "Crosshair:" +msgstr "Прицел:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:111 +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:143 +msgid "Per weapon" +msgstr "Уникальный" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:130 +msgid "Crosshair size:" +msgstr "Величина прицела:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:134 +msgid "Crosshair alpha:" +msgstr "Прозрачность:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:138 +msgid "Crosshair color:" +msgstr "Цвет прицела:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:145 +msgid "Enable center dot" +msgstr "Точка в центре" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:148 +msgid "Size:" +msgstr "Размер:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:155 +msgid "Hit test:" +msgstr "Проверка на попадание:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:156 +msgid "HTST^None" +msgstr "Отключена" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:157 +msgid "TrueAim" +msgstr "TrueAim" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:158 +msgid "Enemies" +msgstr "Враги" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:161 +msgid "Waypoints setup..." +msgstr "Настройка отметок..." + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:167 +msgid "Enter HUD editor" +msgstr "Войти в редактор HUD" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:174 +msgid "Force models:" +msgstr "Использовать свои модели:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:175 +msgid "MDL^None" +msgstr "Нет" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:176 +msgid "MDL^Custom" +msgstr "Вместо нестандартных" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:177 +msgid "MDL^All" +msgstr "Вместо всех" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:179 +msgid "Disable gore effects" +msgstr "Отключить эффекты жестокости" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:181 +msgid "Gibs:" +msgstr "Ошмётки:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:183 +msgid "GIBS^None" +msgstr "Нет" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:184 +msgid "GIBS^Few" +msgstr "Мало" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:185 +msgid "GIBS^Many" +msgstr "Много" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:186 +msgid "GIBS^Lots" +msgstr "Тонны" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:190 +msgid "Damage splash:" +msgstr "Изображ. урона" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:194 +#: qcsrc/menu/xonotic/dialog_settings_audio.c:178 +#: qcsrc/menu/xonotic/dialog_settings_effects.c:193 +#: qcsrc/menu/xonotic/dialog_settings_misc.c:30 +#: qcsrc/menu/xonotic/dialog_settings_misc.c:41 +#: qcsrc/menu/xonotic/dialog_settings_video.c:106 +msgid "Apply immediately" +msgstr "Применить" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:5 +msgid "Waypoints" +msgstr "Отметки" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:23 +msgid "Waypoint settings:" +msgstr "Настройки отметок:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:26 +msgid "Show base waypoints" +msgstr "Показывать основные отметки" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:29 +msgid "Waypoint scale:" +msgstr "Размер отметок:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:34 +msgid "Waypoint alpha:" +msgstr "Прозрачность отметок:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:39 +msgid "Show names:" +msgstr "Показывать имена:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:42 +msgid "Teammates" +msgstr "Союзники" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:43 +msgid "All players" +msgstr "Все игроки" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:6 +msgid "Weapon settings" +msgstr "Настройки оружия" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:29 +msgid "Weapon priority list:" +msgstr "Список приоритета оружия:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:34 +msgid "Up" +msgstr "Вверх" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:37 +msgid "Down" +msgstr "Вниз" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:41 +msgid "Use priority list for weapon cycling" +msgstr "Использовать приоритеты для прокрутки оружия" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:43 +msgid "Auto switch weapons on pickup" +msgstr "Автоматически переключаться на поднятое оружие" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:45 +msgid "Draw 1st person weapon model" +msgstr "Показывать модель оружия в руках" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:48 +msgid "Left align" +msgstr "Слева" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:50 +msgid "Right align" +msgstr "Справа" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:53 +msgid "Flip view horizontally" +msgstr "Перевернуть изображение по горизонтали" + +#: qcsrc/menu/xonotic/dialog_news.c:4 +msgid "News" +msgstr "Новости" + +#: qcsrc/menu/xonotic/dialog_news.c:18 +msgid "http://www.xonotic.org/team/blog/" +msgstr "http://www.xonotic.org/team/blog/" + +#: qcsrc/menu/xonotic/dialog_quit.c:4 +msgid "Quit" +msgstr "Выход" + +#: qcsrc/menu/xonotic/dialog_quit.c:17 +msgid "Are you sure you want to quit?" +msgstr "Вы точно желаете выйти?" + +#: qcsrc/menu/xonotic/dialog_quit.c:20 +msgid "Yes" +msgstr "Да" + +#: qcsrc/menu/xonotic/dialog_quit.c:21 +msgid "No" +msgstr "Нет" + +#: qcsrc/menu/xonotic/dialog_settings.c:4 +msgid "Settings" +msgstr "Настройки" + +#: qcsrc/menu/xonotic/dialog_settings.c:18 +#: qcsrc/menu/xonotic/dialog_settings_input.c:4 +msgid "Input" +msgstr "Ввод" + +#: qcsrc/menu/xonotic/dialog_settings.c:19 +#: qcsrc/menu/xonotic/dialog_settings_video.c:4 +msgid "Video" +msgstr "Изображение" + +#: qcsrc/menu/xonotic/dialog_settings.c:20 +#: qcsrc/menu/xonotic/dialog_settings_effects.c:4 +msgid "Effects" +msgstr "Эффекты" + +#: qcsrc/menu/xonotic/dialog_settings.c:21 +#: qcsrc/menu/xonotic/dialog_settings_audio.c:4 +msgid "Audio" +msgstr "Звук" + +#: qcsrc/menu/xonotic/dialog_settings.c:22 +#: qcsrc/menu/xonotic/dialog_settings_network.c:4 +msgid "Network" +msgstr "Сеть" + +#: qcsrc/menu/xonotic/dialog_settings.c:23 +#: qcsrc/menu/xonotic/dialog_settings_misc.c:4 +msgid "Misc" +msgstr "Разное" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:27 +msgid "Master:" +msgstr "Главный:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:33 +msgid "Music:" +msgstr "Музыка:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:40 +msgid "VOL^Ambient:" +msgstr "Фоновые звуки:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:48 +msgid "Info:" +msgstr "Инфо:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:57 +msgid "Items:" +msgstr "Предметы:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:65 +msgid "Pain:" +msgstr "Боль:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:73 +msgid "Player:" +msgstr "Игрок:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:81 +msgid "Shots:" +msgstr "Выстрелы:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:88 +msgid "Voice:" +msgstr "Голос:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:96 +msgid "Weapons:" +msgstr "Оружие:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:103 +#: qcsrc/menu/xonotic/dialog_settings_audio.c:161 +msgid "Frequency:" +msgstr "Частота:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:105 +msgid "8 kHz" +msgstr "8 кГц" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:106 +msgid "11.025 kHz" +msgstr "11.025 кГц" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:107 +msgid "16 kHz" +msgstr "16 кГц" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:108 +msgid "22.05 kHz" +msgstr "22.05 кГц" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:109 +msgid "24 kHz" +msgstr "24 кГц" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:110 +msgid "32 kHz" +msgstr "32 кГц" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:111 +msgid "44.1 kHz" +msgstr "44.1 кГц" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:112 +msgid "48 kHz" +msgstr "48 кГц" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:115 +msgid "Channels:" +msgstr "Каналы:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:117 +msgid "Mono" +msgstr "Моно" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:118 +msgid "Stereo" +msgstr "Стерео" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:119 +msgid "2.1" +msgstr "2.1" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:120 +msgid "4" +msgstr "4" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:121 +msgid "5" +msgstr "5" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:122 +msgid "5.1" +msgstr "5.1" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:123 +msgid "6.1" +msgstr "6.1" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:124 +msgid "7.1" +msgstr "7.1" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:128 +msgid "Swap Stereo" +msgstr "Обмен местами каналов" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:132 +msgid "Headphone friendly mode" +msgstr "Ориентированный на наушники режим" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:136 +msgid "Spatial voices:" +msgstr "Объёмные голоса" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:137 +msgid "VOCS^None" +msgstr "Отключены" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:138 +msgid "VOCS^Taunts" +msgstr "Насмешки" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:139 +msgid "VOCS^All" +msgstr "Все" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:142 +msgid "Taunt range:" +msgstr "Радиус насмешек:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:145 +msgid "RNG^Very short" +msgstr "Очень маленький" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:146 +msgid "RNG^Short" +msgstr "Маленький" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:147 +msgid "RNG^Normal" +msgstr "Нормальный" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:148 +msgid "RNG^Long" +msgstr "Большой" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:149 +msgid "RNG^Full" +msgstr "Полный" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:156 +msgid "Automatic taunts" +msgstr "Автоматические насмешки" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:165 +msgid "Time warning:" +msgstr "Предупреждение о таймауте за:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:167 +msgid "WRN^None" +msgstr "Нет" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:168 +msgid "1 minute" +msgstr "1 минуту" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:169 +msgid "5 minutes" +msgstr "5 минут" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:170 +msgid "WRN^Both" +msgstr "1 и 5 минут" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:173 +msgid "Hit indicator" +msgstr "Индикатор попадания" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:175 +msgid "Menu sounds" +msgstr "Звуки меню" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:38 +msgid "Quality preset:" +msgstr "Качество:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:41 +msgid "PRE^OMG!" +msgstr "ОХЩИ-" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:42 +msgid "PRE^Low" +msgstr "Низкое" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:43 +msgid "PRE^Medium" +msgstr "Среднее" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:44 +msgid "PRE^Normal" +msgstr "Нормальное" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:45 +msgid "PRE^High" +msgstr "Высокое" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:46 +msgid "PRE^Ultra" +msgstr "Ультра" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:48 +msgid "PRE^Ultimate" +msgstr ">9000" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:52 +msgid "Geometry detail:" +msgstr "Детализация:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:54 +msgid "DET^Lowest" +msgstr "Нижайшая" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:55 +msgid "DET^Low" +msgstr "Низкая" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:56 +msgid "DET^Normal" +msgstr "Нормальная" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:57 +msgid "DET^Good" +msgstr "Хорошая" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:58 +msgid "DET^Best" +msgstr "Лучшая" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:59 +msgid "DET^Insane" +msgstr "Высочайшая" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:62 +msgid "Antialiasing:" +msgstr "Сглаживание:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:64 +msgid "AA^Disabled" +msgstr "Отключено" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:65 +#: qcsrc/menu/xonotic/dialog_settings_effects.c:103 +msgid "2x" +msgstr "2x" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:66 +#: qcsrc/menu/xonotic/dialog_settings_effects.c:104 +msgid "4x" +msgstr "4x" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:70 +msgid "Texture resolution:" +msgstr "Разрешение текстур:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:73 +msgid "RES^Leet" +msgstr "Ужасное" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:74 +msgid "RES^Lowest" +msgstr "Нижайшее" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:75 +msgid "RES^Low" +msgstr "Низкое" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:76 +msgid "RES^Normal" +msgstr "Нормальное" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:77 +msgid "RES^Good" +msgstr "Хорошее" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:78 +msgid "RES^Best" +msgstr "Лучшее" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:91 +#: qcsrc/menu/xonotic/dialog_settings_effects.c:94 +msgid "Avoid lossy texture compression" +msgstr "Избегать сжатия текстур с потерями" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:100 +msgid "Anisotropy:" +msgstr "Анизотропия:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:102 +msgid "ANISO^Disabled" +msgstr "Отключена" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:105 +msgid "8x" +msgstr "8x" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:106 +msgid "16x" +msgstr "16x" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:110 +msgid "Particle quality:" +msgstr "Качество частиц:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:113 +msgid "Particle distance:" +msgstr "Дальность частиц:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:117 +msgid "Decals" +msgstr "Декали:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:120 +msgid "Distance:" +msgstr "Дальность:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:126 +msgid "Time:" +msgstr "Время:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:132 +msgid "Use lightmaps" +msgstr "Использовать карты освещения" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:133 +msgid "Deluxe mapping" +msgstr "Особое качество" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:135 +msgid "Gloss" +msgstr "Блеск" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:138 +msgid "Offset mapping" +msgstr "Оффсетное текстурирование" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:140 +msgid "Relief mapping" +msgstr "Рельефное текстурирование" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:143 +msgid "Reflections:" +msgstr "Отражения:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:146 +msgid "Blurred" +msgstr "Размытые" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:147 +msgid "REFL^Good" +msgstr "Хорошие" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:148 +msgid "Sharp" +msgstr "Резкие" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:153 +msgid "Show surfaces" +msgstr "Показывать поверхности" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:155 +msgid "No dynamic lighting" +msgstr "Без динамического освещения" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:157 +msgid "Flash blend approximation" +msgstr "Грубая имитация" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:159 +msgid "Realtime dynamic lighting" +msgstr "Дин. освещение в реальном времени" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:160 +#: qcsrc/menu/xonotic/dialog_settings_effects.c:164 +msgid "Shadows" +msgstr "Тени" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:163 +msgid "Realtime world lighting" +msgstr "Дин. освещение мира в реальном времени" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:168 +msgid "Use normal maps" +msgstr "Использовать карты нормалей" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:170 +msgid "Soft shadows" +msgstr "Мягкие тени" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:173 +msgid "Coronas" +msgstr "Короны" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:175 +msgid "Bloom" +msgstr "Свечение" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:177 +msgid "High Dynamic Range (HDR)" +msgstr "High Dynamic Range (HDR)" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:181 +msgid "Motion blur:" +msgstr "Размытие (motion blur):" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:187 +msgid "Damage blur:" +msgstr "Размытие (урон):" + +#: qcsrc/menu/xonotic/dialog_settings_input.c:26 +msgid "Key bindings:" +msgstr "Привязки клавиш:" + +#: qcsrc/menu/xonotic/dialog_settings_input.c:31 +msgid "Change key..." +msgstr "Сменить кнопку..." + +#: qcsrc/menu/xonotic/dialog_settings_input.c:35 +msgid "Edit..." +msgstr "Изменить..." + +#: qcsrc/menu/xonotic/dialog_settings_input.c:46 +msgid "Sensitivity:" +msgstr "Чувствительность:" + +#: qcsrc/menu/xonotic/dialog_settings_input.c:49 +msgid "UI mouse speed:" +msgstr "Скорость мыши в UI:" + +#: qcsrc/menu/xonotic/dialog_settings_input.c:52 +msgid "Mouse filter" +msgstr "Фильтр мыши" + +#: qcsrc/menu/xonotic/dialog_settings_input.c:54 +msgid "Invert mouse" +msgstr "Инвертировать мышь" + +#: qcsrc/menu/xonotic/dialog_settings_input.c:57 +#: qcsrc/menu/xonotic/dialog_settings_input.c:59 +msgid "Use joystick input" +msgstr "Использовать ввод с джойстика" + +#: qcsrc/menu/xonotic/dialog_settings_input.c:62 +#: qcsrc/menu/xonotic/dialog_settings_input.c:64 +msgid "Turn off OS mouse acceleration" +msgstr "Отключить OS акселерацию мыши" + +#: qcsrc/menu/xonotic/dialog_settings_input.c:66 +msgid "\"enter console\" also closes" +msgstr "\"открыть консоль\" также закрывает" + +#: qcsrc/menu/xonotic/dialog_settings_input_userbind.c:5 +msgid "User defined key bind" +msgstr "Определённая пользователем привязка клавиш" + +#: qcsrc/menu/xonotic/dialog_settings_input_userbind.c:42 +msgid "Command when pressed:" +msgstr "Команда при нажатии:" + +#: qcsrc/menu/xonotic/dialog_settings_input_userbind.c:45 +msgid "Command when released:" +msgstr "Команда при отжатии:" + +#: qcsrc/menu/xonotic/dialog_settings_input_userbind.c:48 +msgid "Save" +msgstr "Сохранение" + +#: qcsrc/menu/xonotic/dialog_settings_input_userbind.c:51 +msgid "Cancel" +msgstr "Отмена" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:26 +msgid "Menu skins:" +msgstr "Оформления:" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:47 +msgid "Show current time" +msgstr "Показывать время" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:49 +msgid "Show current date" +msgstr "Показывать дату" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:51 +msgid "Show frames per second" +msgstr "Показывать кадры/с (FPS)" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:53 +msgid "Speedometer" +msgstr "Спидометр" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:56 +msgid "qu/s (hidden)" +msgstr "qu/s (без назв.)" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:58 +msgid "qu/s" +msgstr "qu/s" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:60 +msgid "m/s" +msgstr "м/с" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:64 +msgid "km/h" +msgstr "км/ч" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:66 +msgid "mph" +msgstr "м/ч" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:68 +msgid "knots" +msgstr "узлы" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:71 +msgid "Show accelerometer" +msgstr "Показывать акселерометр" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:74 +msgid "Accelerometer scale:" +msgstr "Размер акселерометра:" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:80 +msgid "Minimize input latency" +msgstr "Уменьшить задержку ввода" + +#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:5 +msgid "Advanced settings" +msgstr "Доп. настройки" + +#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:23 +msgid "Cvar filter:" +msgstr "Фильтр Cvar:" + +#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:34 +msgid "Setting:" +msgstr "Настройка:" + +#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:42 +msgid "Value:" +msgstr "Значение:" + +#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:54 +msgid "Description:" +msgstr "Описание:" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:26 +msgid "Client-side movement prediction" +msgstr "Предсказание движения на стороне клиента" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:30 +msgid "Show netgraph" +msgstr "Показывать netgraph" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:33 +msgid "Network speed:" +msgstr "Скорость соединения:" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:35 +msgid "56k" +msgstr "56k" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:36 +msgid "ISDN" +msgstr "ISDN" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:37 +msgid "Slow ADSL" +msgstr "Медленный ADSL" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:38 +msgid "Fast ADSL" +msgstr "Быстрый ADSL" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:39 +msgid "Broadband" +msgstr "Broadband" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:42 +msgid "Input packets/s:" +msgstr "Кол-во пакетов/с" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:46 +msgid "HTTP downloads:" +msgstr "HTTP загрузки:" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:49 +msgid "Downloads:" +msgstr "Загрузки:" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:53 +msgid "Speed (kB/s):" +msgstr "Скорость (кБ/с):" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:57 +msgid "Client UDP port:" +msgstr "UDP порт клиента:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:26 +msgid "Resolution:" +msgstr "Разрешение:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:29 +msgid "Font/UI size:" +msgstr "Размера шрифта/UI" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:31 +msgid "SZ^Unreadable" +msgstr "Нечитаемый" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:32 +msgid "SZ^Tiny" +msgstr "Крошечный" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:33 +msgid "SZ^Little" +msgstr "Маленький" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:34 +msgid "SZ^Small" +msgstr "Небольшой" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:35 +msgid "SZ^Medium" +msgstr "Средний" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:36 +msgid "SZ^Large" +msgstr "Большой" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:37 +msgid "SZ^Huge" +msgstr "Огромный" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:38 +msgid "SZ^Gigantic" +msgstr "Гигантский" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:39 +msgid "SZ^Colossal" +msgstr "Колоссальный" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:42 +msgid "Color depth:" +msgstr "Глубина цвета:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:45 +msgid "Full screen" +msgstr "Полный экран" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:46 +msgid "Vertical Synchronization" +msgstr "Вертикальная синхронизация" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:49 +msgid "Use OpenGL 2.0 shaders (GLSL)" +msgstr "Использовать шейдеры OGL 2.0 (GLSL)" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:52 +msgid "Use Occlusion Queries" +msgstr "Использовать Occlusion Queries (Проверка видимости)" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:55 +msgid "Vertex Buffer Objects (VBOs)" +msgstr "Использование Vertex Buffer Objects (VBOs)" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:58 +msgid "VBO^Off" +msgstr "Отключено" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:59 +msgid "Vertices, some Tris (compatible)" +msgstr "Вершины, некоторые треугольники (совместимо)" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:62 +msgid "Vertices" +msgstr "Вершины" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:63 +msgid "Vertices and Triangles" +msgstr "Вершины и треугольники" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:65 +msgid "Depth first:" +msgstr "Сперва глубина:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:67 +msgid "DF^Disabled" +msgstr "Отключено" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:68 +msgid "DF^World" +msgstr "Мир" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:69 +msgid "DF^All" +msgstr "Всё" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:73 +msgid "Disable multithreaded OpenGL" +msgstr "Отключить многопоточный OpenGL" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:75 +msgid "Wait for GPU to finish each frame" +msgstr "Ждать завершения каждого кадра GPU" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:78 +msgid "Brightness:" +msgstr "Яркость:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:81 +msgid "Contrast:" +msgstr "Контраст:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:84 +msgid "Gamma:" +msgstr "Гамма:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:87 +msgid "Contrast boost:" +msgstr "Усиление контраста:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:90 +msgid "Saturation:" +msgstr "Насыщенность:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:95 +msgid "Use GLSL to handle color control" +msgstr "Использовать GLSL для контроля цвета" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:99 +msgid "LIT^Ambient:" +msgstr "Фоновое освещение:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:102 +msgid "Intensity:" +msgstr "Интенсивность:" + +#: qcsrc/menu/xonotic/dialog_singleplayer.c:4 +msgid "Singleplayer" +msgstr "Одиночная игра" + +#: qcsrc/menu/xonotic/dialog_singleplayer.c:59 +msgid "Instant action! (random map with bots)" +msgstr "Быстрая игра (случайная карта с ботами)" + +#: qcsrc/menu/xonotic/dialog_singleplayer.c:80 +msgid "Start Singleplayer!" +msgstr "Начать одиночную игру" + +#: qcsrc/menu/xonotic/dialog_singleplayer_winner.c:4 +msgid "Winner" +msgstr "Победитель" + +#: qcsrc/menu/xonotic/dialog_teamselect.c:5 +msgid "Team Selection" +msgstr "Выбор команды" + +#: qcsrc/menu/xonotic/dialog_teamselect.c:41 +msgid "join 'best' team (auto-select)" +msgstr "Выбрать 'лучшую' команду (автовыбор)" + +#: qcsrc/menu/xonotic/dialog_teamselect.c:45 +msgid "red" +msgstr "красная" + +#: qcsrc/menu/xonotic/dialog_teamselect.c:46 +msgid "blue" +msgstr "синяя" + +#: qcsrc/menu/xonotic/dialog_teamselect.c:47 +msgid "yellow" +msgstr "жёлтая" + +#: qcsrc/menu/xonotic/dialog_teamselect.c:48 +msgid "pink" +msgstr "розовая" + +#: qcsrc/menu/xonotic/dialog_teamselect.c:51 +msgid "spectate" +msgstr "наблюдать" + +#: qcsrc/menu/xonotic/mainwindow.c:35 qcsrc/menu/xonotic/mainwindow.c:38 +msgid "Do not press this button again!" +msgstr "Не нажимайте снова эту кнопку!" + +#: qcsrc/menu/xonotic/maplist.c:278 +msgid "" +"Huh? Can't play this (m is NULL). Refiltering so this won't happen again.\n" +msgstr "" +"Что? Не могу зайти (m = NULL). Перефильтрую, чтобы такого больше не " +"случалось.\n" + +#: qcsrc/menu/xonotic/maplist.c:286 +#, c-format +msgid "%s's Xonotic Server" +msgstr "Сервер Xonotic от %s" + +#: qcsrc/menu/xonotic/maplist.c:291 +msgid "" +"Huh? Can't play this (invalid game type). Refiltering so this won't happen " +"again.\n" +msgstr "" +"Что? Не могу зайти (неверный тип игры). Перефильтрую, чтобы такого больше не " +"случалось.\n" + +#: qcsrc/menu/xonotic/playermodel.c:174 +msgid "<no model found>" +msgstr "<модель игрока не найдена>" + +#: qcsrc/menu/xonotic/serverlist.c:357 +msgid "Remove" +msgstr "Убрать" + +#: qcsrc/menu/xonotic/serverlist.c:359 +msgid "Bookmark" +msgstr "В закладки" + +#: qcsrc/menu/xonotic/serverlist.c:515 +msgid "Ping" +msgstr "Пинг" + +#: qcsrc/menu/xonotic/serverlist.c:516 +msgid "Host name" +msgstr "Имя сервера" + +#: qcsrc/menu/xonotic/serverlist.c:517 +msgid "Map" +msgstr "Карта" + +#: qcsrc/menu/xonotic/serverlist.c:518 +msgid "Type" +msgstr "Тип" + +#: qcsrc/menu/xonotic/serverlist.c:519 +msgid "Players" +msgstr "Игроки" + +#: qcsrc/menu/xonotic/skinlist.c:105 +msgid "<TITLE>" +msgstr "<ЗАГОЛОВОК>" + +#: qcsrc/menu/xonotic/skinlist.c:106 +msgid "<AUTHOR>" +msgstr "<АВТОР>" + +#: qcsrc/menu/xonotic/skinlist.c:163 +#, c-format +msgid "%s: %s" +msgstr "%s: %s" + +#: qcsrc/menu/xonotic/slider_decibels.c:50 +msgid "VOL^OFF" +msgstr "Отключено" + +#: qcsrc/menu/xonotic/slider_decibels.c:52 +msgid "VOL^MAX" +msgstr "Максимум" + +#: qcsrc/menu/xonotic/slider_decibels.c:53 +#, c-format +msgid "%s dB" +msgstr "%s дБ" + +#: qcsrc/menu/xonotic/slider_resolution.c:65 +#, c-format +msgid "%dx%d" +msgstr "%dx%d" + +#: qcsrc/menu/xonotic/util.qc:270 +#, c-format +msgid "Received HTTP request data for an invalid id %d.\n" +msgstr "Получены данные HTTP запроса для неверного id %d.\n" + +#: qcsrc/menu/xonotic/util.qc:285 +#, c-format +msgid "error receiving update notification: status is %d\n" +msgstr "ошибка при получении уведомления об обновлении: статус %d\n" + +#: qcsrc/menu/xonotic/util.qc:290 +msgid "error: received HTML instead of an update notification\n" +msgstr "ошибка: получение HTML вместо уведомления об обновлении\n" + +#: qcsrc/menu/xonotic/util.qc:295 +msgid "error: received carriage returns from update notification server\n" +msgstr "" +"ошибка: получены символы возврата строки от сервера уведомлений об " +"обновлениях" + +#: qcsrc/menu/xonotic/util.qc:316 +#, c-format +msgid "" +"Update can be downloaded at:\n" +"%s\n" +msgstr "" +"Обновление может быть загружено с:\n" +"%s\n" + +#: qcsrc/menu/xonotic/util.qc:337 +msgid "Autogenerating mapinfo for newly added maps..." +msgstr "Автоматическое создание mapinfo для новых карт..." + +#: qcsrc/menu/xonotic/util.qc:432 +#, c-format +msgid "Update to %s now!" +msgstr "Обновитесь до %s сейчас же!" + +#: qcsrc/menu/xonotic/util.qc:509 +msgid "" +"^1ERROR: Texture compression is required but not supported.\n" +"^1Expect visual problems.\n" +msgstr "" +"1^ОШИБКА: Сжатие текстур требуется, но не поддерживается.\n" +"1^Ожидайте проблемы с отображением.\n" + +#: qcsrc/menu/xonotic/util.qc:531 +msgid "Arena" +msgstr "Arena" + +#: qcsrc/menu/xonotic/util.qc:532 +msgid "Assault" +msgstr "Assault" + +#: qcsrc/menu/xonotic/util.qc:533 +msgid "Capture The Flag" +msgstr "Capture The Flag" + +#: qcsrc/menu/xonotic/util.qc:534 +msgid "Clan Arena" +msgstr "Clan Arena" + +#: qcsrc/menu/xonotic/util.qc:535 +msgid "Deathmatch" +msgstr "Deathmatch" + +#: qcsrc/menu/xonotic/util.qc:536 +msgid "Domination" +msgstr "Domination" + +#: qcsrc/menu/xonotic/util.qc:537 +msgid "Freeze Tag" +msgstr "Freeze Tag" + +#: qcsrc/menu/xonotic/util.qc:538 +msgid "Keepaway" +msgstr "Keepaway" + +#: qcsrc/menu/xonotic/util.qc:539 +msgid "Key Hunt" +msgstr "Key Hunt" + +#: qcsrc/menu/xonotic/util.qc:540 +msgid "Last Man Standing" +msgstr "Last Man Standing" + +#: qcsrc/menu/xonotic/util.qc:541 +msgid "Nexball" +msgstr "Nexball" + +#: qcsrc/menu/xonotic/util.qc:542 +msgid "Onslaught" +msgstr "Onslaught" + +#: qcsrc/menu/xonotic/util.qc:543 +msgid "Race" +msgstr "Race" + +#: qcsrc/menu/xonotic/util.qc:544 +msgid "Race CTS" +msgstr "Race CTS" + +#: qcsrc/menu/xonotic/util.qc:545 +msgid "Runematch" +msgstr "Runematch" + +#: qcsrc/menu/xonotic/util.qc:546 +msgid "Team Deathmatch" +msgstr "Team Deathmatch" + +#: qcsrc/menu/xonotic/util.qc:565 +#, c-format +msgid "@!#%'n Tuba Throwing" +msgstr "@!#%'n Швыряние Тубой" + +#: qcsrc/menu/xonotic/util.qc:606 +msgid "Background:" +msgstr "Фон:" + +#: qcsrc/menu/xonotic/util.qc:608 qcsrc/menu/xonotic/util.qc:624 +#: qcsrc/menu/xonotic/util.qc:633 qcsrc/menu/xonotic/util.qc:641 +#: qcsrc/menu/xonotic/util.qc:653 +msgid "Default" +msgstr "По умолчанию" + +#: qcsrc/menu/xonotic/util.qc:619 +msgid "Use default" +msgstr "Исп. настройки по умолчанию" + +#: qcsrc/menu/xonotic/util.qc:639 +msgid "Team Color:" +msgstr "Цвет команды:" + +#: qcsrc/menu/xonotic/util.qh:49 +msgid "Enable panel" +msgstr "Включить панель" + +#~ msgid "" +#~ "Please answer a few initial questions to enhance the game experience." +#~ msgstr "Пожалуйста, ответьте на несколько начальных вопросов." diff --git a/qcsrc/client/Main.qc b/qcsrc/client/Main.qc index 044569fb5c..75e7320c9e 100644 --- a/qcsrc/client/Main.qc +++ b/qcsrc/client/Main.qc @@ -27,7 +27,7 @@ void cvar_clientsettemp_restore() void() menu_show_error = { - drawstring('0 200 0', "ERROR - MENU IS VISIBLE BUT NO MENU WAS DEFINED!", '8 8 0', '1 0 0', 1, 0); + drawstring('0 200 0', _("ERROR - MENU IS VISIBLE BUT NO MENU WAS DEFINED!"), '8 8 0', '1 0 0', 1, 0); }; // CSQC_Init : Called every time the CSQC code is initialized (essentially at map load) @@ -51,7 +51,7 @@ void CSQC_Init(void) __engine_check = checkextension("DP_SV_WRITEPICTURE"); if(!__engine_check) { - print("^3Your engine build is outdated\n^3This Server uses a newer QC VM. Please update!\n"); + print(_("^3Your engine build is outdated\n^3This Server uses a newer QC VM. Please update!\n")); localcmd("\ndisconnect\n"); return; } @@ -61,7 +61,7 @@ void CSQC_Init(void) check_unacceptable_compiler_bugs(); #ifdef WATERMARK - print("^4CSQC Build information: ", WATERMARK(), "\n"); + print(sprintf(_("^4CSQC Build information: %s\n"), WATERMARK())); #endif float i; @@ -222,7 +222,7 @@ float SetTeam(entity o, float Team) default: if(GetTeam(Team, false) == NULL) { - print("trying to switch to unsupported team ", ftos(Team), "\n"); + print(sprintf(_("trying to switch to unsupported team %d\n"), Team)); Team = COLOR_SPECTATOR; } break; @@ -238,7 +238,7 @@ float SetTeam(entity o, float Team) default: if(GetTeam(Team, false) == NULL) { - print("trying to switch to unsupported team ", ftos(Team), "\n"); + print(sprintf(_("trying to switch to unsupported team %d\n"), Team)); Team = COLOR_SPECTATOR; } break; @@ -248,7 +248,6 @@ float SetTeam(entity o, float Team) { if(o.has_team) { - //print("(DISCONNECT) leave team ", ftos(o.team), "\n"); tm = GetTeam(o.team, false); tm.team_size -= 1; o.has_team = 0; @@ -259,7 +258,6 @@ float SetTeam(entity o, float Team) { if not(o.has_team) { - //print("(CONNECT) enter team ", ftos(o.team), "\n"); o.team = Team; tm = GetTeam(Team, true); tm.team_size += 1; @@ -268,11 +266,9 @@ float SetTeam(entity o, float Team) } else if(Team != o.team) { - //print("(CHANGE) leave team ", ftos(o.team), "\n"); tm = GetTeam(o.team, false); tm.team_size -= 1; o.team = Team; - //print("(CHANGE) enter team ", ftos(o.team), "\n"); tm = GetTeam(Team, true); tm.team_size += 1; return TRUE; @@ -292,7 +288,6 @@ void Playerchecker_Think() { if(e.sort_prev) { - //print("playerchecker: KILL KILL KILL\n"); // player disconnected SetTeam(e, -1); RemovePlayer(e); @@ -304,7 +299,6 @@ void Playerchecker_Think() { if not(e.sort_prev) { - //print("playerchecker: SPAWN SPAWN SPAWN\n"); // player connected if not(e) playerslots[i] = e = spawn(); @@ -326,7 +320,6 @@ void Porto_Init(); void TrueAim_Init(); void PostInit(void) { - print(strcat("PostInit\n maxclients = ", ftos(maxclients), "\n")); localcmd(strcat("\nscoreboard_columns_set ", autocvar_scoreboard_columns, ";\n")); entity playerchecker; @@ -361,8 +354,8 @@ float CSQC_ConsoleCommand(string strMessage) return true; } else if(strCmd == "hud_save") { // save hud config if(argv(1) == "" || argv(2)) { - print("Usage:\n"); - print("hud_save configname (saves to hud_skinname_configname.cfg)\n"); + print(_("Usage:\n")); + print(_("hud_save configname (saves to hud_skinname_configname.cfg)\n")); } else HUD_Panel_ExportCfg(argv(1)); @@ -509,10 +502,10 @@ void GameCommand(string msg) if(argv(0) == "help" || argc == 0) { - print("Usage: cl_cmd COMMAND..., where possible commands are:\n"); - print(" settemp cvar value\n"); - print(" scoreboard_columns_set ...\n"); - print(" scoreboard_columns_help\n"); + print(_("Usage: cl_cmd COMMAND..., where possible commands are:\n")); + print(_(" settemp cvar value\n")); + print(_(" scoreboard_columns_set ...\n")); + print(_(" scoreboard_columns_help\n")); GameCommand_Generic("help"); return; } @@ -717,7 +710,7 @@ void Ent_ReadPlayerScore() #ifdef DP_CSQC_ENTITY_REMOVE_IS_B0RKED if(!isNew && n != self.sv_entnum) { - print("A CSQC entity changed its owner!\n"); + print(_("A CSQC entity changed its owner!\n")); isNew = true; Ent_Remove(); self.enttype = ENT_CLIENT_SCORES; @@ -931,7 +924,7 @@ void(float bIsNewEntity) CSQC_Ent_Update = if(self.enttype) if(t != self.enttype) { - print("A CSQC entity changed its type!\n"); + print(_("A CSQC entity changed its type!\n")); Ent_Remove(); bIsNewEntity = 1; } @@ -968,7 +961,7 @@ void(float bIsNewEntity) CSQC_Ent_Update = case ENT_CLIENT_GAUNTLET: Ent_ReadHook(bIsNewEntity, ENT_CLIENT_GAUNTLET); break; case ENT_CLIENT_ACCURACY: Ent_ReadAccuracy(); break; default: - error(strcat("unknown entity type in CSQC_Ent_Update: ", ftos(self.enttype), "\n")); + error(strcat(_("unknown entity type in CSQC_Ent_Update: %d\n"), self.enttype)); break; } @@ -1440,12 +1433,12 @@ string getcommandkey(string text, string command) if ("" == keys) { if (hud_showbinds > 1) - return strcat(text, " (not bound)"); + return sprintf(_("%s (not bound)"), text); else return text; } else if (hud_showbinds > 1) - return strcat(text, " (", keys, ")"); + return sprintf(_("%s (%s)"), text, keys); else return keys; } diff --git a/qcsrc/client/bgmscript.qc b/qcsrc/client/bgmscript.qc index 43255da584..353c5419ab 100644 --- a/qcsrc/client/bgmscript.qc +++ b/qcsrc/client/bgmscript.qc @@ -131,7 +131,7 @@ void BGMScript_InitEntity(entity e) e.bgmscriptline = e.bgmscriptline0 = i; if(i >= bgmscriptbufsize) { - print("ERROR: bgmscript does not define ", e.bgmscript, "\n"); + print(sprintf("ERROR: bgmscript does not define %s\n", e.bgmscript)); e.bgmscript = ""; } } @@ -182,7 +182,6 @@ float BGMScript(entity e) if(bgmtime < e.bgmscripttime) { - //print("reset ", e.bgmscript, "\n"); amp = GetCurrentAmplitude(e, e.bgmscripttime - e.bgmscriptstatetime + drawframetime); e.bgmscriptline = e.bgmscriptline0; diff --git a/qcsrc/client/ctf.qc b/qcsrc/client/ctf.qc index 0a5375f51d..0bd585f439 100644 --- a/qcsrc/client/ctf.qc +++ b/qcsrc/client/ctf.qc @@ -1,4 +1,5 @@ -//include "main.qh" +#ifdef CTF_EXAMPLE + // NOTE: This file contains lots of debugging stuff // it is not really used... can be seen as another sample... @@ -31,10 +32,10 @@ void() order_menu_render = color = getplayerkey(player_localentnum-1, "topcolor"); if(getstati(STAT_CTF_STATE) == CTF_STATE_COMMANDER) { - drawstring(ps, "\x1D\x1E\x1E\x1E\x1E Order Menu \x1E\x1E\x1E\x1E\x1F", '8 8 0', '1 1 0', 1, 0); ps += po; - drawstring(ps, strcat("Order: ", ctf_temp_1), '8 8 0', '1 1 0', 1, 0); ps += po; - drawcolorcodedstring(ps, "1) ^3previous page", '8 8 0', 1, 0); ps += po; - drawcolorcodedstring(ps, "2) ^3next page", '8 8 0', 1, 0); ps += po; + drawstring(ps, _("----- Order Menu -----"), '8 8 0', '1 1 0', 1, 0); ps += po; + drawstring(ps, sprintf(_("Order: %s"), ctf_temp_1), '8 8 0', '1 1 0', 1, 0); ps += po; + drawcolorcodedstring(ps, _("1) ^3previous page"), '8 8 0', 1, 0); ps += po; + drawcolorcodedstring(ps, _("2) ^3next page"), '8 8 0', 1, 0); ps += po; for((n = 2), (p = i = 0); i < maxclients && n > 0; ++i) { frags = getplayerkey(i, "frags"); if(!frags || (i+1) == player_localentnum) @@ -51,7 +52,7 @@ void() order_menu_render = drawcolorcodedstring(ps, strcat(ftos(n), ") ", GetPlayerName(i), " : ", ftos(getstatf(STAT_CTF_STATE))), '8 8 0', 1, 0); ps += po; } } - drawstring(ps, "ESC) Exit Menu", '8 8 0', '1 1 0', 1, 0); ps += po; + drawstring(ps, _("ESC) Exit Menu"), '8 8 0', '1 1 0', 1, 0); ps += po; } else { menu_close(); } @@ -118,18 +119,18 @@ float(float bInputType, float nPrimary, float nSecondary) order_menu_action = } } if(n == 0) { - //print(strcat("Issuing order to: ", ftos(i+1), "\n")); + //print(sprintf(_("Issuing order to: %d\n"), i+1)); //print(strcat("cmd order #", ftos(i+1), " ", ctf_temp_1, ";\n")); localcmd(strcat("\ncmd order #", ftos(i+1), " ", ctf_temp_1, ";")); } else { - print(strcat("Couldn't find player ", ftos(chose), "\n")); + print(sprintf(_("Couldn't find player %d\n"), chose)); } return TRUE; } else if(nSecondary == K_ESCAPE) { strunzone(ctf_temp_1); menu_close(); } else { - //print(strcat("Menu action ", arg, " does not exist.\n")); + //print(sprintf(_("Menu action %s does not exist.\n"), arg)); return FALSE; } return TRUE; @@ -150,14 +151,14 @@ void() ctf_menu_render = po = '0 8 0'; if(getstati(STAT_CTF_STATE) == CTF_STATE_COMMANDER) { - drawstring(ps, "\x1D\x1E\x1E\x1E\x1E Command Menu \x1E\x1E\x1E\x1E\x1F", '8 8 0', '1 1 0', 1, 0); ps += po; - drawstring(ps, "Issue orders:", '8 8 0', '1 1 0', 1, 0); ps += po; - drawstring(ps, " 1) Attack ", '8 8 0', '1 1 0', 1, 0); - drawstring(ps + '80 0 0', " \x0F", '8 8 0', '1 1 1', 1, 0); ps += po; - drawstring(ps, " 2) Defend \x0E", '8 8 0', '1 1 0', 1, 0); ps += po; + drawstring(ps, _("----- Command Menu -----"), '8 8 0', '1 1 0', 1, 0); ps += po; + drawstring(ps, _("Issue orders:"), '8 8 0', '1 1 0', 1, 0); ps += po; + drawstring(ps, _(" 1) Attack "), '8 8 0', '1 1 0', 1, 0); + drawstring(ps + '80 0 0', _(" \x0F"), '8 8 0', '1 1 1', 1, 0); ps += po; + drawstring(ps, _(" 2) Defend \x0E"), '8 8 0', '1 1 0', 1, 0); ps += po; ps += po; - drawstring(ps, "3) Resign from command.", '8 8 0', '1 1 0', 1, 0); ps += po; - drawstring(ps, "ESC) Exit Menu", '8 8 0', '1 1 0', 1, 0); ps += po; + drawstring(ps, _("3) Resign from command."), '8 8 0', '1 1 0', 1, 0); ps += po; + drawstring(ps, _("ESC) Exit Menu"), '8 8 0', '1 1 0', 1, 0); ps += po; } else { menu_close(); } @@ -208,9 +209,11 @@ void() ctf_view = } else if(stat == CTF_STATE_DEFEND) { drawpic('0 0 0', "gfx/ctf_ic_def.tga", '64 64 0', '1 1 1', 1, 0); } else if(stat == CTF_STATE_COMMANDER) { - drawstring('0 0 0', "You're commander!", '8 8 0', '1 1 1', 1, 0); + drawstring('0 0 0', _("You're commander!"), '8 8 0', '1 1 1', 1, 0); } else if(stat < 0) { } else { - drawstring('0 0 0', "Awaiting orders...", '8 8 0', '1 1 1', 0.5, 0); + drawstring('0 0 0', _("Awaiting orders..."), '8 8 0', '1 1 1', 0.5, 0); } }; + +#endif diff --git a/qcsrc/client/damage.qc b/qcsrc/client/damage.qc index 24c5f0153b..13c8e462e3 100644 --- a/qcsrc/client/damage.qc +++ b/qcsrc/client/damage.qc @@ -54,15 +54,11 @@ void Ent_DamageInfo(float isNew) thisforce = forcemul * force; } - //print("check ", ftos(num_for_edict(self)), " ", self.classname, "\n"); - //print(ftos(self.damageforcescale), "\n"); - //print(vtos(thisforce), "\n"); if(self.damageforcescale) if(vlen(thisforce)) { self.move_velocity = self.move_velocity + self.damageforcescale * thisforce; self.move_flags &~= FL_ONGROUND; - //print("pushed ", ftos(num_for_edict(self)), " loose\n"); } if(w_issilent) diff --git a/qcsrc/client/effects.qc b/qcsrc/client/effects.qc index 5793ed88b2..b695867ca3 100644 --- a/qcsrc/client/effects.qc +++ b/qcsrc/client/effects.qc @@ -57,19 +57,16 @@ void cl_effetcs_lightningarc(vector from, vector to,float seglength,float drifts dirnew = normalize(direction * (1 - drift) + randomvec() * drift); pos = pos_l + dirnew * steplength; te_lightning1(world,pos_l,pos); - //b_make(pos_l, pos,"particles/lightning2",0.25,64); if(random() < branchfactor) cl_effetcs_lightningarc(pos, pos + (dirnew * length * 0.25),seglength,drifts,drifte,min(branchfactor + branchfactor_add,1),branchfactor_add); pos_l = pos; } te_lightning1(world,pos_l,to); - //b_make(pos_l, to,"particles/lightning2",0.25,64); } else te_lightning1(world,from,to); - //b_make(from, to,"particles/lightning2",0.25,64); } diff --git a/qcsrc/client/hook.qc b/qcsrc/client/hook.qc index 09327e30aa..7ff5adeca4 100644 --- a/qcsrc/client/hook.qc +++ b/qcsrc/client/hook.qc @@ -18,13 +18,6 @@ void Draw_CylindricLine(vector from, vector to, float thickness, string texture, // direction is perpendicular to the view normal, and perpendicular to the axis thickdir = normalize(cross(axis, vieworg - from)); -/* - print("from ", vtos(from), "\n"); - print("to ", vtos(to), "\n"); - print("org ", vtos(view_origin), "\n"); - print("dir ", vtos(thickdir), "\n"); -*/ - A = from - thickdir * (thickness / 2); B = from + thickdir * (thickness / 2); C = to + thickdir * (thickness / 2); diff --git a/qcsrc/client/main.qh b/qcsrc/client/main.qh index 364e5a999f..970a1aa0b7 100644 --- a/qcsrc/client/main.qh +++ b/qcsrc/client/main.qh @@ -20,8 +20,10 @@ var float(float bInputType, float nPrimary, float nSecondary) menu_action; // -------------------------------------------------------------------------- // CTF +#ifdef CTF_EXAMPLE void() ctf_menu_show; string ctf_temp_1; +#endif // -------------------------------------------------------------------------- // Onslaught diff --git a/qcsrc/client/mapvoting.qc b/qcsrc/client/mapvoting.qc index 4d96d5821c..e94d6a68aa 100644 --- a/qcsrc/client/mapvoting.qc +++ b/qcsrc/client/mapvoting.qc @@ -12,6 +12,8 @@ float mv_ownvote; float mv_detail; float mv_timeout; float mv_maps_mask; +float mv_top2_time; +float mv_top2_alpha; vector mv_mousepos; float mv_selection; @@ -19,13 +21,13 @@ float mv_selection; string MapVote_FormatMapItem(float id, string map, float count, float maxwidth, vector fontsize) { string pre, post; - pre = strcat(ftos(id+1), ". "); + pre = sprintf("%d. ", id+1); if(mv_detail) { if(count == 1) - post = strcat(" (1 vote)"); + post = _(" (1 vote)"); else - post = strcat(" (", ftos(count), " votes)"); + post = sprintf(_(" (%d votes)"), count); } else post = ""; @@ -34,8 +36,10 @@ string MapVote_FormatMapItem(float id, string map, float count, float maxwidth, return strcat(pre, map, post); } -vector MapVote_RGB(float id) +vector MapVote_RGB(float id, float count) { + if(count < 0) + return '1 1 1'; if(id == mv_ownvote) return '0 1 0'; else if (id == mv_selection) @@ -53,7 +57,7 @@ void MapVote_DrawMapItem(vector pos, float isize, float tsize, string map, strin isize -= hud_fontsize_y; // respect the text when calculating the image size - rgb = MapVote_RGB(id); + rgb = MapVote_RGB(id, count); img_size_y = isize; img_size_x = isize / 0.75; // 4:3 x can be stretched easily, height is defined in isize @@ -63,9 +67,15 @@ void MapVote_DrawMapItem(vector pos, float isize, float tsize, string map, strin label = MapVote_FormatMapItem(id, map, count, tsize, hud_fontsize); text_size = stringwidth(label, false, hud_fontsize); - + + float alpha; + if (count < 0 && mv_top2_alpha) + alpha = mv_top2_alpha; + else + alpha = 1; + pos_x -= text_size*0.5; - drawstring(pos, label, hud_fontsize, rgb, 1, DRAWFLAG_NORMAL); + drawstring(pos, label, hud_fontsize, rgb, alpha, DRAWFLAG_NORMAL); pos_x = pos_x + text_size*0.5 - img_size_x*0.5; pos_y = pos_y - img_size_y; @@ -74,19 +84,19 @@ void MapVote_DrawMapItem(vector pos, float isize, float tsize, string map, strin img_size -= (autocvar_scoreboard_border_thickness * 2) * '1 1 0'; if(pic == "") { - drawfill(pos, img_size, '.5 .5 .5', .7, DRAWFLAG_NORMAL); + drawfill(pos, img_size, '.5 .5 .5', .7 * alpha, DRAWFLAG_NORMAL); } else { - drawpic(pos, pic, img_size, '1 1 1', 1, DRAWFLAG_NORMAL); + drawpic(pos, pic, img_size, '1 1 1', alpha, DRAWFLAG_NORMAL); } if(id == mv_ownvote) - drawborderlines(autocvar_scoreboard_border_thickness, pos, img_size, rgb, 1, DRAWFLAG_NORMAL); + drawborderlines(autocvar_scoreboard_border_thickness, pos, img_size, rgb, alpha, DRAWFLAG_NORMAL); else - drawborderlines(autocvar_scoreboard_border_thickness, pos, img_size, '0 0 0', 1, DRAWFLAG_NORMAL); + drawborderlines(autocvar_scoreboard_border_thickness, pos, img_size, '0 0 0', alpha, DRAWFLAG_NORMAL); - if(id == mv_selection) + if(id == mv_selection && count >= 0) drawfill(pos, img_size, '1 1 1', 0.1, DRAWFLAG_NORMAL); } @@ -96,11 +106,11 @@ void MapVote_DrawAbstain(vector pos, float isize, float tsize, float count, floa float text_size; string label; - rgb = MapVote_RGB(id); + rgb = MapVote_RGB(id, count); pos_y = pos_y + hud_fontsize_y; - label = MapVote_FormatMapItem(id, "Don't care", count, tsize, hud_fontsize); + label = MapVote_FormatMapItem(id, _("Don't care"), count, tsize, hud_fontsize); text_size = stringwidth(label, false, hud_fontsize); @@ -181,12 +191,12 @@ void MapVote_Draw() pos_y = ymin; pos_z = 0; //pos_x = center - stringwidth("Vote for a map", false) * 0.5 * 24; - pos_x = center - stringwidth("Vote for a map", false, '12 0 0'); + pos_x = center - stringwidth(_("Vote for a map"), false, '12 0 0'); drawstring(pos, "Vote for a map", '24 24 0', '1 1 1', 1, DRAWFLAG_NORMAL); pos_y += 26; i = ceil(max(0, mv_timeout - time)); - map = strcat(ftos(i), " seconds left"); + map = sprintf(_("%d seconds left"), i); //pos_x = center - stringwidth(map, false) * 0.5 * 16; pos_x = center - stringwidth(map, false, '8 0 0'); drawstring(pos, map, '16 16 0', '0 1 0', 1, DRAWFLAG_NORMAL); @@ -217,11 +227,12 @@ void MapVote_Draw() pos_y += (dist_y - isize) / 2; ymax -= isize; + if (mv_top2_time) + mv_top2_alpha = max(0.2, 1 - (time - mv_top2_time)*(time - mv_top2_time)); + for(i = 0; i < mv_num_maps; ++i) { tmp = mv_votes[i]; // FTEQCC bug: too many array accesses in the function call screw it up - if(tmp < 0) - continue; map = mv_maps[i]; if(mv_preview[i]) MapVote_DrawMapItem(pos + MapVote_GridVec(dist, i, columns), isize, tsize, map, mv_pics[i], tmp, i); @@ -249,7 +260,7 @@ void Cmd_MapVote_MapDownload(float argc) if(argc != 2 || !mv_pk3list) { - print("mv_mapdownload: ^3You're not supposed to use this command on your own!\n"); + print(_("mv_mapdownload: ^3You're not supposed to use this command on your own!\n")); return; } @@ -259,19 +270,16 @@ void Cmd_MapVote_MapDownload(float argc) break; if(!pak || pak.sv_entnum != id) { - print("^1Error:^7 Couldn't find pak index.\n"); + print(_("^1Error:^7 Couldn't find pak index.\n")); return; } - //print(strcat("^3Adding: ", ftos(id), " - ", pak.message, " - ")); - if(PreviewExists(pak.message)) { mv_preview[id] = true; - //print("^2Found...\n"); return; } else { - print("Requesting preview...\n"); + print(_("Requesting preview...\n")); localcmd(strcat("\ncmd mv_getpic ", ftos(id), "\n")); } } @@ -370,7 +378,6 @@ void MapVote_Init() mv_preview[i] = false; - //print(strcat("RECV: ", map, " in ", pk3, "\n")); MapVote_CheckPic(map, pk3, i); } else @@ -435,6 +442,8 @@ void MapVote_UpdateMask() for(i = 0, power = 1; i < mv_num_maps; ++i, power *= 2) if not(mv_maps_mask & power) mv_votes[i] = -1; + + mv_top2_time = time; } void MapVote_UpdateVotes() diff --git a/qcsrc/client/miscfunctions.qc b/qcsrc/client/miscfunctions.qc index 90098a79a3..9b1d3282a7 100644 --- a/qcsrc/client/miscfunctions.qc +++ b/qcsrc/client/miscfunctions.qc @@ -31,7 +31,7 @@ void restartAnnouncer_Think() { } else { if (!spectatee_status) //do cprint only for players - centerprint(strcat("^1Game starts in ", ftos(countdown_rounded), " seconds")); + centerprint(sprintf("^1Game starts in %d seconds", countdown_rounded)); if(countdown_rounded <= 3 && countdown_rounded >= 1) { sound(world, CHAN_AUTO, strcat("announcer/", autocvar_cl_announcer, "/", ftos(countdown_rounded), ".wav"), VOL_BASEVOICE, ATTN_NONE); @@ -71,7 +71,6 @@ void maptimeAnnouncer() { //if we're in warmup mode, check whether there's a warmup timelimit if not (warmuplimit == -1 && warmup_stage) { announcer_5min = TRUE; - //dprint("i will play the sound, I promise!\n"); sound(world, CHAN_AUTO, strcat("announcer/", autocvar_cl_announcer, "/5minutesremain.wav"), VOL_BASEVOICE, ATTN_NONE); } } @@ -111,12 +110,12 @@ void carrierAnnouncer() { blueflag = (stat_items/IT_BLUE_FLAG_TAKEN) & 3; if (redflag == 3 && redflag != redflag_prev) { - item = "^1RED^7 flag"; + item = _("^1RED^7 flag"); pickup = (redflag_prev == 2); } if (blueflag == 3 && blueflag != blueflag_prev) { - item = "^4BLUE^7 flag"; + item = _("^4BLUE^7 flag"); pickup = (blueflag_prev == 2); } @@ -124,11 +123,11 @@ void carrierAnnouncer() { { if (pickup) { if (autocvar_cl_notify_carried_items & 2) - centerprint(strcat("You picked up the ", item, "!")); + centerprint(sprintf("You picked up the %s!", item)); } else { if (autocvar_cl_notify_carried_items & 1) - centerprint(strcat("You got the ", item, "!")); + centerprint(sprintf("You got the %s!", item)); } } @@ -281,7 +280,7 @@ void RemoveTeam(entity Team) if(!tm) { - print("Trying to remove a team which is not in the teamlist!"); + print(_("Trying to remove a team which is not in the teamlist!")); return; } parent.sort_next = Team.sort_next; diff --git a/qcsrc/client/prandom.qc b/qcsrc/client/prandom.qc index 1fae8abe0d..1132d06a32 100644 --- a/qcsrc/client/prandom.qc +++ b/qcsrc/client/prandom.qc @@ -9,7 +9,7 @@ float prandom() prandom_seed = c; #ifdef USE_PRANDOM_DEBUG - print("RANDOM -> ", ftos(c), "\n"); + dprint("RANDOM -> ", ftos(c), "\n"); #endif return c / 65536; // in [0..1[ @@ -34,14 +34,14 @@ void psrandom(float seed) { prandom_seed = seed; #ifdef USE_PRANDOM_DEBUG - print("SRANDOM ", ftos(seed), "\n"); + dprint("SRANDOM ", ftos(seed), "\n"); #endif } #ifdef USE_PRANDOM_DEBUG void prandom_debug() { - print("Current random seed = ", ftos(prandom_seed), "\n"); + dprint("Current random seed = ", ftos(prandom_seed), "\n"); } #endif #endif diff --git a/qcsrc/client/scoreboard.qc b/qcsrc/client/scoreboard.qc index 4055f54007..aabc069f17 100644 --- a/qcsrc/client/scoreboard.qc +++ b/qcsrc/client/scoreboard.qc @@ -882,10 +882,12 @@ float HUD_WouldDrawScoreboard() { return 1; else if (intermission == 1) return 1; + else if (intermission == 2) + return 0; else if (getstati(STAT_HEALTH) <= 0 && autocvar_cl_deathscoreboard && gametype != GAME_CTS) return 1; - else if (spectatee_status == -1) - return 1; + else if (spectatee_status == -1) + return 1; else if (scoreboard_showscores_force) return 1; return 0; diff --git a/qcsrc/client/target_music.qc b/qcsrc/client/target_music.qc index 5703c146d2..b50d5a862a 100644 --- a/qcsrc/client/target_music.qc +++ b/qcsrc/client/target_music.qc @@ -90,7 +90,7 @@ void Net_TargetMusic() sound(e, CHAN_VOICE, e.noise, 0, ATTN_NONE); if(getsoundtime(e, CHAN_VOICE) < 0) { - print("Cannot initialize sound ", e.noise, "\n"); + print(sprintf(_("Cannot initialize sound %s\n"), e.noise)); strunzone(e.noise); e.noise = string_null; } @@ -178,7 +178,7 @@ void Ent_ReadTriggerMusic() sound(self, CHAN_VOICE, self.noise, 0, ATTN_NONE); if(getsoundtime(self, CHAN_VOICE) < 0) { - print("Cannot initialize sound ", self.noise, "\n"); + print(sprintf(_("Cannot initialize sound %s\n"), self.noise)); strunzone(self.noise); self.noise = string_null; } diff --git a/qcsrc/client/teamplay.qc b/qcsrc/client/teamplay.qc index 02c40ba26e..7d5031fb87 100644 --- a/qcsrc/client/teamplay.qc +++ b/qcsrc/client/teamplay.qc @@ -52,10 +52,10 @@ string GetTeamName(float color) { switch(color) { - default: return "Spectators"; - case COLOR_TEAM1: return "Red Team"; - case COLOR_TEAM2: return "Blue Team"; - case COLOR_TEAM3: return "Yellow Team"; - case COLOR_TEAM4: return "Pink Team"; + default: return _("Spectators"); + case COLOR_TEAM1: return _("Red Team"); + case COLOR_TEAM2: return _("Blue Team"); + case COLOR_TEAM3: return _("Yellow Team"); + case COLOR_TEAM4: return _("Pink Team"); } } diff --git a/qcsrc/client/waypointsprites.qc b/qcsrc/client/waypointsprites.qc index 1a35579839..8ecadaeb85 100644 --- a/qcsrc/client/waypointsprites.qc +++ b/qcsrc/client/waypointsprites.qc @@ -336,7 +336,6 @@ void Ent_WaypointSprite() else self.build_starthealth = 0; self.build_finished = servertime + t / 32; - //print("build: ", ftos(self.build_finished - self.build_started), "\n"); } } else diff --git a/qcsrc/common/util.qc b/qcsrc/common/util.qc index 1bfbca6ae1..dcdd74deef 100644 --- a/qcsrc/common/util.qc +++ b/qcsrc/common/util.qc @@ -360,7 +360,10 @@ float buf_load(string pFilename) return -1; fh = fopen(pFilename, FILE_READ); if(fh < 0) - return buf; + { + buf_del(buf); + return -1; + } i = 0; while((l = fgets(fh))) { diff --git a/qcsrc/i18n-badwords.txt b/qcsrc/i18n-badwords.txt new file mode 100644 index 0000000000..828fe0a8b8 --- /dev/null +++ b/qcsrc/i18n-badwords.txt @@ -0,0 +1,34 @@ +# list of words that must not be used in the source as a single string; +# use ZCTX(_("CONTEXT^string")) instead +# vi macro to do it: +# :s/_("\([^"]*\)")/ZCTX(_("CONTEXT^\1"))/g +# test by: +# grep -v ^# i18n-badwords.txt | while IFS= read -r W; do grep -nri "_(\"$W\")" menu/xonotic; done | sort -n +# this is done to help with languages like Russian where these words may need +# different grammatical gender in different instances +All +Best +Disabled +Good +High +Insane +Low +Lowest +Medium +Normal +Off +Ultra +Small +Large +Custom +Very short +Short +Long +Full +Empty +None +Few +Many +Lots +Both +Ambient: diff --git a/qcsrc/i18n-guide.txt b/qcsrc/i18n-guide.txt new file mode 100644 index 0000000000..0bc255ffa5 --- /dev/null +++ b/qcsrc/i18n-guide.txt @@ -0,0 +1,33 @@ +How to make the .po template: + +find . -type f -not -name \*.po -not -name \*.txt | xgettext -LC -k_ -f- --from-code utf-8 + + +How to compare the .po template against a language file: + +msgcmp ../../menu.dat.de.po messages.po + + +How to merge the .po template into a language file: + +msgmerge -U ../../menu.dat.de.po messages.po + + +Guideline: +- do NOT translate strings in error() messages, or in dprint()! +- delete obviously useless developer prints while at it +- change obvious developer prints from print to dprint (even in comments), + unless in developer-only functions (e.g. *dumptree*) +- mark translatable strings with _() +- if a translatable string is a strcat monster, change it to sprintf +- if code loads files with text, use language_filename() +- interesting vim macros: + :map # /"<return> + :map ' i_(<esc>2f"a)<esc>/"<return> + +Unresolved TODO: + +- translated campaigns + +client/hud.qc +client/scoreboard.qc diff --git a/qcsrc/menu/classes.c b/qcsrc/menu/classes.c index bc7368d095..b85546569a 100644 --- a/qcsrc/menu/classes.c +++ b/qcsrc/menu/classes.c @@ -27,6 +27,7 @@ #include "xonotic/bigbutton.c" #include "xonotic/commandbutton.c" #include "xonotic/bigcommandbutton.c" +#include "xonotic/dialog_firstrun.c" #include "xonotic/dialog_teamselect.c" #include "xonotic/dialog_settings.c" #include "xonotic/dialog_settings_video.c" @@ -61,6 +62,7 @@ #include "xonotic/gametypelist.c" #include "xonotic/maplist.c" #include "xonotic/skinlist.c" +#include "xonotic/languagelist.c" #include "xonotic/image.c" #include "xonotic/crosshairbutton.c" #include "xonotic/playermodel.c" diff --git a/qcsrc/menu/draw.qc b/qcsrc/menu/draw.qc index a33cac9163..12b56d8dae 100644 --- a/qcsrc/menu/draw.qc +++ b/qcsrc/menu/draw.qc @@ -282,14 +282,14 @@ void draw_Text(vector theOrigin, string theText, vector theSize, vector theColor } void draw_CenterText(vector theOrigin, string theText, vector theSize, vector theColor, float theAlpha, float ICanHasKallerz) { - //print(strcat("orig = ", vtos(theOrigin) ," tx = ", ftos(draw_TextWidth(theText, ICanHasKallerz, theSize)), "\n")); + //dprint(strcat("orig = ", vtos(theOrigin) ," tx = ", ftos(draw_TextWidth(theText, ICanHasKallerz, theSize)), "\n")); draw_Text(theOrigin - eX * 0.5 * draw_TextWidth(theText, ICanHasKallerz, theSize), theText, theSize, theColor, theAlpha, ICanHasKallerz); } float draw_TextWidth(string theText, float ICanHasKallerz, vector SizeThxBye) { //return strlen(theText); - //print("draw_TextWidth \"", theText, "\"\n"); + //dprint("draw_TextWidth \"", theText, "\"\n"); vector v; v = '0 0 0'; //float r; diff --git a/qcsrc/menu/gamecommand.qc b/qcsrc/menu/gamecommand.qc index 439a1b5c96..f3d780b6f5 100644 --- a/qcsrc/menu/gamecommand.qc +++ b/qcsrc/menu/gamecommand.qc @@ -44,7 +44,7 @@ void Curl_URI_Get_Callback(float id, float status, string data) do_cvar = curl_uri_get_cvar[i]; if(status != 0) { - print("error: status is ", ftos(status), "\n"); + print(sprintf(_("error: status is %d\n"), status)); return; } if(do_exec) @@ -62,9 +62,9 @@ void GameCommand(string theCommand) if(argv(0) == "help" || argc == 0) { - print("Usage: menu_cmd theCommand..., where possible theCommands are:\n"); - print(" sync - reloads all cvars on the current menu page\n"); - print(" directmenu ITEM - select a menu item as main item\n"); + print(_("Usage: menu_cmd command..., where possible commands are:\n")); + print(_(" sync - reloads all cvars on the current menu page\n")); + print(_(" directmenu ITEM - select a menu item as main item\n")); GameCommand_Generic("help"); return; } @@ -100,6 +100,12 @@ void GameCommand(string theCommand) return; } + if(argv(0) == "languageselect") + { + m_goto_language_selector(); + return; + } + if(argv(0) == "videosettings") { m_goto_video_settings(); @@ -184,7 +190,7 @@ void GameCommand(string theCommand) curl_uri_get_pos = mod(curl_uri_get_pos + 1, URI_GET_CURL_END - URI_GET_CURL + 1); } else - print("error creating curl handle\n"); + print(_("error creating curl handle\n")); buf_del(buf); @@ -230,5 +236,5 @@ void GameCommand(string theCommand) } #endif - print("Invalid theCommand. For a list of supported theCommands, try menu_cmd help.\n"); + print(_("Invalid command. For a list of supported commands, try menu_cmd help.\n")); } diff --git a/qcsrc/menu/item.c b/qcsrc/menu/item.c index 497d1cf661..52b960e456 100644 --- a/qcsrc/menu/item.c +++ b/qcsrc/menu/item.c @@ -42,7 +42,6 @@ void Item_resizeNotify(entity me, vector relOrigin, vector relSize, vector absOr { me.origin = absOrigin; me.size = absSize; - // me.tooltip = "The quick brown fox jumped over the lazy sleeping dog's back then sat on a tack. Franz jagt im komplett verwahrlosten Taxi quer durch Bayern."; } void Item_draw(entity me) diff --git a/qcsrc/menu/item/borderimage.c b/qcsrc/menu/item/borderimage.c index 236b235222..b23078bae0 100644 --- a/qcsrc/menu/item/borderimage.c +++ b/qcsrc/menu/item/borderimage.c @@ -57,8 +57,6 @@ void BorderImage_configureBorderImage(entity me, string theTitle, float sz, vect } void BorderImage_draw(entity me) { - //print(vtos(me.borderVec), "\n"); - if(me.src) draw_BorderPicture('0 0 0', me.src, '1 1 0', me.color, 1, me.borderVec); if(me.fontSize > 0) diff --git a/qcsrc/menu/item/button.c b/qcsrc/menu/item/button.c index 3d91229ec6..871685f537 100644 --- a/qcsrc/menu/item/button.c +++ b/qcsrc/menu/item/button.c @@ -169,4 +169,4 @@ void Button_draw(entity me) else if(!me.focused && me.playedfocus) me.playedfocus = 0; } -#endif \ No newline at end of file +#endif diff --git a/qcsrc/menu/item/dialog.c b/qcsrc/menu/item/dialog.c index 3d537bfb92..800a12681e 100644 --- a/qcsrc/menu/item/dialog.c +++ b/qcsrc/menu/item/dialog.c @@ -78,7 +78,6 @@ void Dialog_fill(entity me) void Dialog_addItemSimple(entity me, float row, float col, float rowspan, float colspan, entity e, vector v) { - //print(vtos(me.itemSpacing), " ", vtos(me.itemSize), "\n"); vector o, s; o = me.itemOrigin + eX * ( col * me.itemSpacing_x) + eY * ( row * me.itemSpacing_y); s = me.itemSize + eX * ((colspan - 1) * me.itemSpacing_x) + eY * ((rowspan - 1) * me.itemSpacing_y); @@ -156,7 +155,7 @@ void Dialog_configureDialog(entity me) if(me.closable) { closebutton = me.closeButton = spawnButton(); - closebutton.configureButton(closebutton, "Close", 0, me.closeButtonImage); + closebutton.configureButton(closebutton, "", 0, me.closeButtonImage); closebutton.onClick = Dialog_Close; closebutton.onClickEntity = me; closebutton.srcMulti = 0; me.addItem(me, closebutton, '0 0 0', '1 1 0', 1); // put it as LAST diff --git a/qcsrc/menu/item/gecko.c b/qcsrc/menu/item/gecko.c index 139e87e1a0..dd752e6e54 100644 --- a/qcsrc/menu/item/gecko.c +++ b/qcsrc/menu/item/gecko.c @@ -46,7 +46,7 @@ void Gecko_draw(entity me) local vector fontsize; fontsize_x = fontsize_y = 1.0 / 30.0; fontsize_z = 0.0; - draw_Text( '0 0 0', "Browser not initialized!", fontsize, '1 1 1', 1.0, 0 ); + draw_Text( '0 0 0', _("Browser not initialized!"), fontsize, '1 1 1', 1.0, 0 ); } } diff --git a/qcsrc/menu/item/inputbox.c b/qcsrc/menu/item/inputbox.c index 750bc83b89..5b07afd4ee 100644 --- a/qcsrc/menu/item/inputbox.c +++ b/qcsrc/menu/item/inputbox.c @@ -272,35 +272,6 @@ void InputBox_draw(entity me) draw_Text(p, substring(me.text, i, 2), me.realFontSize, '1 1 1', theAlpha, 0); } } - /*else if(ch2 == "a") // ^a found - { - draw_Fill(p, eX * w + eY * me.realFontSize_y, '1 1 1', 0.5); - draw_Text(p, substring(me.text, i, 2), me.realFontSize, theColor, 0.8, 0); - - component = str2chr(me.text, i+2); - if (component >= '0' && component <= '9') - component = component - '0'; - else if (component >= 'a' && component <= 'f') - component = component - 87; - else if (component >= 'A' && component <= 'F') - component = component - 55; - else - component = -1; - - if (component >= 0) // ^ah found - { - // FIX ME: overflow here - if (component == 20 && theVariableAlpha <= 0.97) - theVariableAlpha = theVariableAlpha + 0.0625; - else if (component == 30 && theVariableAlpha >= 0.03) - theVariableAlpha = theVariableAlpha - 0.0625; - else - theVariableAlpha = component*0.0625; - - draw_Fill(p, eX * draw_TextWidth(substring(me.text, i, 3), 0, me.realFontSize) + eY * me.realFontSize_y, '0.8 0.8 0.8', 0.5); - draw_Text(p, strcat(ch, ch2), me.realFontSize, theColor, 0.8, 0); - } - }*/ else { draw_Fill(p, eX * w + eY * me.realFontSize_y, '1 1 1', 0.5); diff --git a/qcsrc/menu/item/label.c b/qcsrc/menu/item/label.c index 7ed6e4f68e..e91668dba9 100644 --- a/qcsrc/menu/item/label.c +++ b/qcsrc/menu/item/label.c @@ -5,6 +5,7 @@ CLASS(Label) EXTENDS(Item) METHOD(Label, resizeNotify, void(entity, vector, vector, vector, vector)) METHOD(Label, setText, void(entity, string)) METHOD(Label, toString, string(entity)) + METHOD(Label, recalcPosition, void(entity)) ATTRIB(Label, text, string, string_null) ATTRIB(Label, fontSize, float, 8) ATTRIB(Label, align, float, 0.5) @@ -23,6 +24,7 @@ CLASS(Label) EXTENDS(Item) ATTRIB(Label, textEntity, entity, NULL) ATTRIB(Label, allowWrap, float, 0) ATTRIB(Label, recalcPos, float, 0) + ATTRIB(Label, condenseFactor, float, 1) ENDCLASS(Label) #endif @@ -36,6 +38,32 @@ void Label_setText(entity me, string txt) me.text = txt; me.recalcPos = 1; } +void Label_recalcPosition(entity me) +{ + float spaceAvail; + spaceAvail = 1 - me.keepspaceLeft - me.keepspaceRight; + + float spaceUsed; + spaceUsed = draw_TextWidth(me.text, me.allowColors, me.realFontSize); + + if(spaceUsed <= spaceAvail) + { + me.realOrigin_x = me.align * (spaceAvail - spaceUsed) + me.keepspaceLeft; + me.condenseFactor = 1; + } + else if(me.allowCut || me.allowWrap) + { + me.realOrigin_x = me.keepspaceLeft; + me.condenseFactor = 1; + } + else + { + me.realOrigin_x = me.keepspaceLeft; + me.condenseFactor = spaceAvail / spaceUsed; + dprint(sprintf(_("NOTE: label text %s too wide for label, condensed by factor %f\n"), me.text, me.condenseFactor)); + } + me.recalcPos = 0; +} void Label_resizeNotify(entity me, vector relOrigin, vector relSize, vector absOrigin, vector absSize) { SUPER(Label).resizeNotify(me, relOrigin, relSize, absOrigin, absSize); @@ -46,9 +74,44 @@ void Label_resizeNotify(entity me, vector relOrigin, vector relSize, vector absO me.keepspaceLeft = me.marginLeft * me.realFontSize_x; if(me.marginRight) me.keepspaceRight = me.marginRight * me.realFontSize_x; - me.realOrigin_y = 0.5 * (1 - me.realFontSize_y); - me.realOrigin_x = me.align * (1 - me.keepspaceLeft - me.keepspaceRight - min(draw_TextWidth(me.text, me.allowColors, me.realFontSize), (1 - me.keepspaceLeft - me.keepspaceRight))) + me.keepspaceLeft; - me.recalcPos = 0; + + me.recalcPosition(me); + + float lines; + + vector dfs; + vector fs; + + // set up variables to draw in condensed size, but use hinting for original size + fs = me.realFontSize; + fs_x *= me.condenseFactor; + + dfs = draw_fontscale; + draw_fontscale_x *= me.condenseFactor; + + if(me.allowCut) // FIXME allowCut incompatible with align != 0 + lines = 1; + else if(me.allowWrap) // FIXME allowWrap incompatible with align != 0 + { + getWrappedLine_remaining = me.text; + lines = 0; + while(getWrappedLine_remaining) + { + if (me.allowColors) + getWrappedLine((1 - me.keepspaceLeft - me.keepspaceRight), fs, draw_TextWidth_WithColors); + else + getWrappedLine((1 - me.keepspaceLeft - me.keepspaceRight), fs, draw_TextWidth_WithoutColors); + ++lines; + } + } + else + lines = 1; + + draw_fontscale = dfs; + + me.realOrigin_y = 0.5 * (1 - lines * me.realFontSize_y); + if(substring(me.text, 0, 3) == "Wel") + print(ftos(me.realOrigin_y), " ", me.text, "\n"); } void Label_configureLabel(entity me, string txt, float sz, float algn) { @@ -72,17 +135,23 @@ void Label_draw(entity me) t = me.text; if(me.recalcPos) - me.realOrigin_x = me.align * (1 - me.keepspaceLeft - me.keepspaceRight - min(draw_TextWidth(t, me.allowColors, me.realFontSize), (1 - me.keepspaceLeft - me.keepspaceRight))) + me.keepspaceLeft; - me.recalcPos = 0; + me.recalcPosition(me); - //if(me.text == "Bookmark") - // draw_Fill(me.realOrigin, '0 1 0' + '1 0 0' * draw_TextWidth(t, me.allowColors, me.realFontSize), '1 0 1', 1); - if(me.fontSize) if(t) { + vector dfs; + vector fs; + + // set up variables to draw in condensed size, but use hinting for original size + fs = me.realFontSize; + fs_x *= me.condenseFactor; + + dfs = draw_fontscale; + draw_fontscale_x *= me.condenseFactor; + if(me.allowCut) // FIXME allowCut incompatible with align != 0 - draw_Text(me.realOrigin, draw_TextShortenToWidth(t, (1 - me.keepspaceLeft - me.keepspaceRight), me.allowColors, me.realFontSize), me.realFontSize, me.colorL, me.alpha, me.allowColors); + draw_Text(me.realOrigin, draw_TextShortenToWidth(t, (1 - me.keepspaceLeft - me.keepspaceRight), me.allowColors, fs), fs, me.colorL, me.alpha, me.allowColors); else if(me.allowWrap) // FIXME allowWrap incompatible with align != 0 { getWrappedLine_remaining = t; @@ -90,15 +159,17 @@ void Label_draw(entity me) while(getWrappedLine_remaining) { if (me.allowColors) - t = getWrappedLine((1 - me.keepspaceLeft - me.keepspaceRight), me.realFontSize, draw_TextWidth_WithColors); + t = getWrappedLine((1 - me.keepspaceLeft - me.keepspaceRight), fs, draw_TextWidth_WithColors); else - t = getWrappedLine((1 - me.keepspaceLeft - me.keepspaceRight), me.realFontSize, draw_TextWidth_WithoutColors); - draw_Text(o, t, me.realFontSize, me.colorL, me.alpha, me.allowColors); + t = getWrappedLine((1 - me.keepspaceLeft - me.keepspaceRight), fs, draw_TextWidth_WithoutColors); + draw_Text(o, t, fs, me.colorL, me.alpha, me.allowColors); o_y += me.realFontSize_y; } } else - draw_Text(me.realOrigin, t, me.realFontSize, me.colorL, me.alpha, me.allowColors); + draw_Text(me.realOrigin, t, fs, me.colorL, me.alpha, me.allowColors); + + draw_fontscale = dfs; } } #endif diff --git a/qcsrc/menu/item/listbox.c b/qcsrc/menu/item/listbox.c index 361e3cb325..9664e93765 100644 --- a/qcsrc/menu/item/listbox.c +++ b/qcsrc/menu/item/listbox.c @@ -297,6 +297,6 @@ void ListBox_clickListBoxItem(entity me, float i, vector where) void ListBox_drawListBoxItem(entity me, float i, vector absSize, float selected) { - draw_Text('0 0 0', strcat("Item ", ftos(i)), eX * (8 / absSize_x) + eY * (8 / absSize_y), (selected ? '0 1 0' : '1 1 1'), 1, 0); + draw_Text('0 0 0', sprintf(_("Item %d"), i), eX * (8 / absSize_x) + eY * (8 / absSize_y), (selected ? '0 1 0' : '1 1 1'), 1, 0); } #endif diff --git a/qcsrc/menu/item/nexposee.c b/qcsrc/menu/item/nexposee.c index 2369a41077..304bf1dd24 100644 --- a/qcsrc/menu/item/nexposee.c +++ b/qcsrc/menu/item/nexposee.c @@ -149,8 +149,6 @@ void Nexposee_draw(entity me) me.animationState = 0; } - //print(ftos(me.animationState), "\n"); - f = min(1, frametime * 5); switch(me.animationState) { diff --git a/qcsrc/menu/item/slider.c b/qcsrc/menu/item/slider.c index c8bab9bf80..9a8a35fdcb 100644 --- a/qcsrc/menu/item/slider.c +++ b/qcsrc/menu/item/slider.c @@ -61,7 +61,7 @@ void Slider_setSliderValue(entity me, float val) } string Slider_toString(entity me) { - return strcat(ftos(me.value), " (", me.valueToText(me, me.value), ")"); + return sprintf(_("%d (%s)"), me.value, me.valueToText(me, me.value)); } void Slider_resizeNotify(entity me, vector relOrigin, vector relSize, vector absOrigin, vector absSize) { diff --git a/qcsrc/menu/item/textslider.c b/qcsrc/menu/item/textslider.c index c4a7af7a89..028a1603a1 100644 --- a/qcsrc/menu/item/textslider.c +++ b/qcsrc/menu/item/textslider.c @@ -26,9 +26,9 @@ string TextSlider_valueToIdentifier(entity me, float val) string TextSlider_valueToText(entity me, float val) { if(val >= me.nValues) - return "custom"; + return _("custom"); if(val < 0) - return "custom"; + return _("custom"); return me.(valueStrings[val]); } void TextSlider_setValueFromIdentifier(entity me, string id) diff --git a/qcsrc/menu/mbuiltin.qh b/qcsrc/menu/mbuiltin.qh index 761b63a83b..e5d366eb70 100644 --- a/qcsrc/menu/mbuiltin.qh +++ b/qcsrc/menu/mbuiltin.qh @@ -3,9 +3,6 @@ ////////////////////////////////////////////////// // AK FIXME: Create perhaps a special builtin file for the common cmds -//#define PROFILESTRZONE -//#define FIXEDFOPEN - float checkextension(string ext) = #1; // error cmds @@ -100,11 +97,7 @@ float bound(float min,float value, float max) = #45; float pow(float a, float b) = #46; void copyentity(entity src, entity dst) = #47; -#ifdef FIXEDFOPEN -float _fopen( string filename, float mode ) = #48; -#else float fopen(string filename, float mode) = #48; -#endif void fclose(float fhandle) = #49; string fgets(float fhandle) = #50; void fputs(float fhandle, string s) = #51; @@ -116,23 +109,8 @@ string substring(string s, float start, float length) = #54; vector stov(string s) = #55; -#ifdef PROFILESTRZONE -string _strzone(string s) = #56; -void _strunzone(string s) = #57; - -string( string s ) strzone = -{ - return _strzone( s ); -}; - -void( string s ) strunzone = -{ - return _strunzone( s ); -}; -#else string strzone(string s) = #56; void strunzone(string s) = #57; -#endif float tokenize(string s) = #58; float(string s, string separator1, ...) tokenizebyseparator = #479; @@ -343,26 +321,6 @@ string(string search, string replace, string subject) strreplace = #484; string(float uselocaltime, string format, ...) strftime = #478; -#ifdef FIXEDFOPEN -float fopen( string filename, float mode ) = -{ - local float handle; - if( mode == FILE_READ ) { - return _fopen( filename, mode ); - } - - // check for data/ - filename = strzone( filename ); - if( substring( filename, 0, 5 ) != "data/" ) { - print( "menu: fopen: all output must go into data/!\n" ); - return -1; - } - handle = _fopen( substring( filename, 5, 10000 ), mode ); - strunzone( filename ); - return handle; -}; -#endif - float(string s) tokenize_console = #514; float(float i) argv_start_index = #515; float(float i) argv_end_index = #516; diff --git a/qcsrc/menu/menu.qc b/qcsrc/menu/menu.qc index 7bec34ea0b..71cc021b5a 100644 --- a/qcsrc/menu/menu.qc +++ b/qcsrc/menu/menu.qc @@ -21,11 +21,12 @@ void SUB_Null() { }; void() m_init = { cvar_set("_menu_alpha", "0"); + prvm_language = strzone(cvar_string("prvm_language")); check_unacceptable_compiler_bugs(); #ifdef WATERMARK - print("^4MQC Build information: ", WATERMARK(), "\n"); + print(sprintf(_("^4MQC Build information: %s\n"), WATERMARK())); #endif // list all game dirs (TEST) @@ -38,7 +39,7 @@ void() m_init = s = getgamedirinfo(i, GETGAMEDIRINFO_NAME); if not(s) break; - print(s, ": ", getgamedirinfo(i, GETGAMEDIRINFO_DESCRIPTION)); + dprint(s, ": ", getgamedirinfo(i, GETGAMEDIRINFO_DESCRIPTION)); } } } @@ -115,18 +116,18 @@ void() m_init_delayed = if(cvar_string("menu_skin") != "") { draw_currentSkin = strcat("gfx/menu/", cvar_string("menu_skin")); - fh = fopen(strcat(draw_currentSkin, "/skinvalues.txt"), FILE_READ); + fh = fopen(language_filename(strcat(draw_currentSkin, "/skinvalues.txt")), FILE_READ); } if(fh < 0) if(cvar_defstring("menu_skin") != "") { draw_currentSkin = strcat("gfx/menu/", cvar_defstring("menu_skin")); - fh = fopen(strcat(draw_currentSkin, "/skinvalues.txt"), FILE_READ); + fh = fopen(language_filename(strcat(draw_currentSkin, "/skinvalues.txt")), FILE_READ); } if(fh < 0) { draw_currentSkin = "gfx/menu/default"; - fh = fopen(strcat(draw_currentSkin, "/skinvalues.txt"), FILE_READ); + fh = fopen(language_filename(strcat(draw_currentSkin, "/skinvalues.txt")), FILE_READ); } draw_currentSkin = strzone(draw_currentSkin); while((s = fgets(fh))) @@ -183,7 +184,7 @@ void(float key, float ascii) m_keyup = if(mouseButtonsPressed < 0) { mouseButtonsPressed = 0; - print("Warning: released an already released button\n"); + dprint("Warning: released an already released button\n"); } } if(key == K_ALT) menuShiftState -= (menuShiftState & S_ALT); @@ -221,7 +222,7 @@ void(float key, float ascii) m_keydown = if(mouseButtonsPressed > 10) { mouseButtonsPressed = 10; - print("Warning: pressed an already pressed button\n"); + dprint("Warning: pressed an already pressed button\n"); } } if(key == K_ALT) menuShiftState |= S_ALT; @@ -341,11 +342,6 @@ float m_testtooltipbox(vector tooltippos) return FALSE; if(tooltippos_y + menuTooltipSize_y > 1) return FALSE; - /* - menuTooltipOrigin_x = rint(tooltippos_x * cvar("vid_width")) / cvar("vid_width"); - menuTooltipOrigin_y = rint(tooltippos_y * cvar("vid_height")) / cvar("vid_height"); - menuTooltipOrigin_z = 0; - */ menuTooltipOrigin = tooltippos; return TRUE; } @@ -566,7 +562,7 @@ void() m_draw = if(!cvar("menu_video_played")) { localcmd("set menu_video_played 1; cd loop $menu_cdtrack; play sound/announcer/default/welcome.ogg\n"); - menuLogoAlpha = -0.8; // no idea why, but when I start this at zero, it jumps instead of fading + menuLogoAlpha = -0.8; // no idea why, but when I start this at zero, it jumps instead of fading FIXME } } @@ -839,7 +835,9 @@ void(string itemname) m_goto = } else { - e = findstring(NULL, name, itemname); + for(e = NULL; (e = findstring(e, name, itemname)); ) + if(e.classname != "vtbl") + break; if(e) { m_hide(); @@ -858,10 +856,18 @@ void() m_goto_skin_selector = m_goto("skinselector"); } +void() m_goto_language_selector = +{ + if(!menuInitialized) + return; + // TODO add code to switch back to the language selector (no idea how to do it now) + m_goto("languageselector"); +} + void() m_goto_video_settings = { if(!menuInitialized) return; - // TODO add code to switch back to the skin selector (no idea how to do it now) + // TODO add code to switch back to the video settings (no idea how to do it now) m_goto("videosettings"); } diff --git a/qcsrc/menu/menu.qh b/qcsrc/menu/menu.qh index 903700d5d5..3188ef0b01 100644 --- a/qcsrc/menu/menu.qh +++ b/qcsrc/menu/menu.qh @@ -27,6 +27,7 @@ void m_hide(); void m_display(); void m_goto(string name); void m_goto_skin_selector(); +void m_goto_language_selector(); void m_goto_video_settings(); .string name; @@ -40,3 +41,5 @@ void SUB_Null(); float preMenuInit(); // you have to define this for pre-menu initialization. Return 0 if initialization needs to be retried a frame later, 1 if it succeeded. void preMenuDraw(); // this is run before the menu is drawn. You may put some stuff there that has to be done every frame. void postMenuDraw(); // this is run just after the menu is drawn (or not). Useful to draw something over everything else. + +string prvm_language; diff --git a/qcsrc/menu/skin-customizables.inc b/qcsrc/menu/skin-customizables.inc index afea3e752f..fa88d92246 100644 --- a/qcsrc/menu/skin-customizables.inc +++ b/qcsrc/menu/skin-customizables.inc @@ -6,7 +6,7 @@ print "\n"; while(<DATA>) { chomp; - if(/^\s*(?:SKINFLOAT|SKINVECTOR)\(([A-Z_]+), ([-'0-9. ]+)\);$/) + if(/^\s*(?:SKINFLOAT|SKINVECTOR)\(([A-Z_]+), ([-'0-9. ]+)\);$/) #' { printf "%-31s %s\n", $1, $2; } @@ -51,6 +51,7 @@ SKINBEGIN SKINVECTOR(AVOID_TOOLTIP, '8 8 0'); // the individual dialog background colors + SKINVECTOR(COLOR_DIALOG_FIRSTRUN, '0.7 0.7 1'); SKINVECTOR(COLOR_DIALOG_MULTIPLAYER, '0.7 0.7 1'); SKINVECTOR(COLOR_DIALOG_SETTINGS, '0.7 0.7 1'); SKINVECTOR(COLOR_DIALOG_TEAMSELECT, '1 1 1'); @@ -101,6 +102,7 @@ SKINBEGIN SKINVECTOR(COLOR_BUTTON_C, '1 1 1'); SKINVECTOR(COLOR_BUTTON_F, '1 1 1'); SKINVECTOR(COLOR_BUTTON_D, '1 1 1'); + SKINFLOAT(MARGIN_BUTTON, 0.5); // item: campaign SKINFLOAT(ALPHA_CAMPAIGN_SELECTABLE, 0.8); diff --git a/qcsrc/menu/skin.qh b/qcsrc/menu/skin.qh index 20da37d24e..437c49bf72 100644 --- a/qcsrc/menu/skin.qh +++ b/qcsrc/menu/skin.qh @@ -17,7 +17,7 @@ //#define SKINSTRING(name,def) case #name: break #define SKINSTRING(name,def) case #name: SKIN##name = strzone(value); break // I know this leaks memory when skin is read multiple times. Screw it. -#define SKINEND case "": break; case "//": break; default: print("Invalid key in skin file: ", key, "\n"); } } +#define SKINEND case "": break; case "//": break; default: dprint("Invalid key in skin file: ", key, "\n"); } } #include "skin-customizables.inc" #undef SKINEND #undef SKINSTRING diff --git a/qcsrc/menu/xonotic/button.c b/qcsrc/menu/xonotic/button.c index 5522905bc2..cbc7c47c40 100644 --- a/qcsrc/menu/xonotic/button.c +++ b/qcsrc/menu/xonotic/button.c @@ -10,6 +10,8 @@ CLASS(XonoticButton) EXTENDS(Button) ATTRIB(XonoticButton, colorD, vector, SKINCOLOR_BUTTON_D) ATTRIB(XonoticButton, alpha, float, SKINALPHA_TEXT) ATTRIB(XonoticButton, disabledAlpha, float, SKINALPHA_DISABLED) + ATTRIB(XonoticButton, marginLeft, float, SKINMARGIN_BUTTON) // chars + ATTRIB(XonoticButton, marginRight, float, SKINMARGIN_BUTTON) // chars ENDCLASS(XonoticButton) entity makeXonoticButton(string theText, vector theColor); #endif diff --git a/qcsrc/menu/xonotic/campaign.c b/qcsrc/menu/xonotic/campaign.c index e7667f69cf..04f7a083c2 100644 --- a/qcsrc/menu/xonotic/campaign.c +++ b/qcsrc/menu/xonotic/campaign.c @@ -281,8 +281,8 @@ void XonoticCampaignList_drawListBoxItem(entity me, float i, vector absSize, flo if(i <= me.campaignIndex) s = campaign_shortdesc[i]; // fteqcc sucks else - s = "???"; - s = draw_TextShortenToWidth(strcat("Level ", ftos(i + 1), ": ", s), me.columnNameSize, 0, me.realFontSize); + s = _("???"); + s = draw_TextShortenToWidth(sprintf(_("Level %d: %s"), i+1, s), me.columnNameSize, 0, me.realFontSize); draw_Text(me.realUpperMargin1 * eY + (me.columnNameOrigin + 0.00 * (me.columnNameSize - draw_TextWidth(s, 0, me.realFontSize))) * eX, s, me.realFontSize, theColor, theAlpha, 0); if(i <= me.campaignIndex) diff --git a/qcsrc/menu/xonotic/credits.c b/qcsrc/menu/xonotic/credits.c index 86609a6598..daf4d22f9c 100644 --- a/qcsrc/menu/xonotic/credits.c +++ b/qcsrc/menu/xonotic/credits.c @@ -30,7 +30,9 @@ void XonoticCreditsList_configureXonoticCreditsList(entity me) { me.configureXonoticListBox(me); // load the file - me.bufferIndex = buf_load("xonotic-credits.txt"); + me.bufferIndex = buf_load(language_filename("xonotic-credits.txt")); + if(me.bufferIndex < 0) + me.bufferIndex = buf_load("xonotic-credits.txt"); me.nItems = buf_getsize(me.bufferIndex); } void XonoticCreditsList_destroy(entity me) diff --git a/qcsrc/menu/xonotic/cvarlist.c b/qcsrc/menu/xonotic/cvarlist.c index 3eaf2677e9..4d36c92581 100644 --- a/qcsrc/menu/xonotic/cvarlist.c +++ b/qcsrc/menu/xonotic/cvarlist.c @@ -81,15 +81,15 @@ void XonoticCvarList_setSelected(entity me, float i) t = cvar_type(me.cvarName); me.cvarType = ""; if(t & CVAR_TYPEFLAG_SAVED) - me.cvarType = strcat(me.cvarType, ", will be saved to config.cfg"); + me.cvarType = strcat(me.cvarType, ", ", _("will be saved to config.cfg")); else - me.cvarType = strcat(me.cvarType, ", will not be saved"); + me.cvarType = strcat(me.cvarType, ", ", _("will not be saved")); if(t & CVAR_TYPEFLAG_PRIVATE) - me.cvarType = strcat(me.cvarType, ", private"); + me.cvarType = strcat(me.cvarType, ", ", _("private")); if(t & CVAR_TYPEFLAG_ENGINE) - me.cvarType = strcat(me.cvarType, ", engine setting"); + me.cvarType = strcat(me.cvarType, ", ", _("engine setting")); if(t & CVAR_TYPEFLAG_READONLY) - me.cvarType = strcat(me.cvarType, ", read only"); + me.cvarType = strcat(me.cvarType, ", ", _("read only")); me.cvarType = strzone(substring(me.cvarType, 2, strlen(me.cvarType) - 2)); me.cvarNameBox.setText(me.cvarNameBox, me.cvarName); diff --git a/qcsrc/menu/xonotic/dialog.c b/qcsrc/menu/xonotic/dialog.c index 7087d83cb9..f18658c715 100644 --- a/qcsrc/menu/xonotic/dialog.c +++ b/qcsrc/menu/xonotic/dialog.c @@ -3,7 +3,7 @@ CLASS(XonoticDialog) EXTENDS(Dialog) // still to be customized by user /* ATTRIB(XonoticDialog, closable, float, 1) - ATTRIB(XonoticDialog, title, string, "Form1") // ;) + ATTRIB(XonoticDialog, title, string, _("Form1")) // ;) ATTRIB(XonoticDialog, color, vector, '1 0.5 1') ATTRIB(XonoticDialog, intendedWidth, float, 0) ATTRIB(XonoticDialog, rows, float, 3) diff --git a/qcsrc/menu/xonotic/dialog_credits.c b/qcsrc/menu/xonotic/dialog_credits.c index 07c2fc4f29..e90ae4b425 100644 --- a/qcsrc/menu/xonotic/dialog_credits.c +++ b/qcsrc/menu/xonotic/dialog_credits.c @@ -2,7 +2,7 @@ CLASS(XonoticCreditsDialog) EXTENDS(XonoticDialog) METHOD(XonoticCreditsDialog, fill, void(entity)) METHOD(XonoticCreditsDialog, focusEnter, void(entity)) - ATTRIB(XonoticCreditsDialog, title, string, "Credits") + ATTRIB(XonoticCreditsDialog, title, string, _("Credits")) ATTRIB(XonoticCreditsDialog, color, vector, SKINCOLOR_DIALOG_CREDITS) ATTRIB(XonoticCreditsDialog, intendedWidth, float, SKINWIDTH_CREDITS) ATTRIB(XonoticCreditsDialog, rows, float, SKINROWS_CREDITS) @@ -18,7 +18,7 @@ void XonoticCreditsDialog_fill(entity me) me.TR(me); me.TD(me, me.rows - 1, me.columns, me.creditsList = makeXonoticCreditsList()); me.gotoRC(me, me.rows - 1, 0); - me.TD(me, 1, me.columns, e = makeXonoticButton("OK", '0 0 0')); + me.TD(me, 1, me.columns, e = makeXonoticButton(_("OK"), '0 0 0')); e.onClick = Dialog_Close; e.onClickEntity = me; } diff --git a/qcsrc/menu/xonotic/dialog_firstrun.c b/qcsrc/menu/xonotic/dialog_firstrun.c new file mode 100644 index 0000000000..6568a7198f --- /dev/null +++ b/qcsrc/menu/xonotic/dialog_firstrun.c @@ -0,0 +1,72 @@ +#ifdef INTERFACE +CLASS(XonoticFirstRunDialog) EXTENDS(XonoticRootDialog) + METHOD(XonoticFirstRunDialog, fill, void(entity)) // to be overridden by user to fill the dialog with controls + ATTRIB(XonoticFirstRunDialog, title, string, _("Welcome")) + ATTRIB(XonoticFirstRunDialog, color, vector, SKINCOLOR_DIALOG_FIRSTRUN) + ATTRIB(XonoticFirstRunDialog, intendedWidth, float, 0.6) + ATTRIB(XonoticFirstRunDialog, rows, float, 15) + ATTRIB(XonoticFirstRunDialog, columns, float, 3) + ATTRIB(XonoticFirstRunDialog, name, string, "FirstRun") + ATTRIB(XonoticFirstRunDialog, playerNameLabel, entity, NULL) + ATTRIB(XonoticFirstRunDialog, playerNameLabelAlpha, float, 0) + + ATTRIB(XonoticFirstRunDialog, closable, float, 0) +ENDCLASS(XonoticFirstRunDialog) +#endif + +#ifdef IMPLEMENTATION +float CheckFirstRunButton(entity me) +{ + if(cvar_string("_cl_name") != "Player") + return 1; + if(cvar_string("prvm_language") != prvm_language) + return 1; // OK will then reopen the dialog in another language + return 0; +} + +void XonoticFirstRunDialog_fill(entity me) +{ + entity e; + entity label, box; + + me.TR(me); + me.TD(me, 2, 3, e = makeXonoticTextLabel(0, _("Welcome to Xonotic, please select your language preference and enter your player name to get started. You can change these options later through the menu system."))); + e.allowWrap = 1; + me.TR(me); + + me.TR(me); + me.TD(me, 1, 3, e = makeXonoticTextLabel(0, _("Text language:"))); + me.TR(me); + me.TD(me, 3, 3, e = makeXonoticLanguageList()); + e.name = "languageselector_firstrun"; + e.doubleClickCommand = "saveconfig; menu_restart; togglemenu"; + me.TR(me); + me.TR(me); + + me.TR(me); + me.TD(me, 1, 0.5, me.playerNameLabel = makeXonoticTextLabel(0, _("Name:"))); + me.playerNameLabelAlpha = me.playerNameLabel.alpha; + me.TD(me, 1, 2.5, label = makeXonoticTextLabel(0, string_null)); + label.allowCut = 1; + label.allowColors = 1; + label.alpha = 1; + me.TR(me); + me.TD(me, 1, 3.0, box = makeXonoticInputBox(1, "_cl_name")); + box.forbiddenCharacters = "\r\n\\\"$"; // don't care, isn't getting saved + box.maxLength = -127; // negative means encoded length in bytes + box.saveImmediately = 1; + label.textEntity = box; + me.TR(me); + me.TD(me, 5, 1, e = makeXonoticColorpicker(box)); + me.TD(me, 5, 2, e = makeXonoticCharmap(box)); + me.TR(me); + me.TR(me); + me.TR(me); + me.TR(me); + + // because of the language selector, this is a menu_restart! + me.gotoRC(me, me.rows - 1, 0); + me.TD(me, 1, me.columns, e = makeXonoticCommandButton(_("Save settings"), '0 0 0', "saveconfig; menu_restart; togglemenu", COMMANDBUTTON_APPLY)); + setDependentWeird(e, CheckFirstRunButton); +} +#endif diff --git a/qcsrc/menu/xonotic/dialog_hudpanel_ammo.c b/qcsrc/menu/xonotic/dialog_hudpanel_ammo.c index 256dbe7df0..299ea09fd7 100644 --- a/qcsrc/menu/xonotic/dialog_hudpanel_ammo.c +++ b/qcsrc/menu/xonotic/dialog_hudpanel_ammo.c @@ -1,7 +1,7 @@ #ifdef INTERFACE CLASS(XonoticHUDAmmoDialog) EXTENDS(XonoticRootDialog) METHOD(XonoticHUDAmmoDialog, fill, void(entity)) - ATTRIB(XonoticHUDAmmoDialog, title, string, "Ammo Panel") + ATTRIB(XonoticHUDAmmoDialog, title, string, _("Ammo Panel")) ATTRIB(XonoticHUDAmmoDialog, color, vector, SKINCOLOR_DIALOG_TEAMSELECT) ATTRIB(XonoticHUDAmmoDialog, intendedWidth, float, 0.4) ATTRIB(XonoticHUDAmmoDialog, rows, float, 15) @@ -15,71 +15,18 @@ void XonoticHUDAmmoDialog_fill(entity me) { entity e; string panelname = "ammo"; - float i; + + DIALOG_HUDPANEL_COMMON(); me.TR(me); - me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "hud_panel_ammo", "Enable panel")); - me.TR(me); - me.TD(me, 1, 1.4, e = makeXonoticTextLabel(0, "Background:")); - me.TD(me, 1, 1.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg")))); - e.addValue(e, "Default", ""); - e.addValue(e, "Disable", "0"); - e.addValue(e, strzone(strcat("border_", panelname)), strzone(strcat("border_", panelname))); - e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Color:")); - me.TD(me, 2, 2.4, e = makeXonoticColorpickerString(strzone(strcat("hud_panel_", panelname, "_bg_color")), "hud_panel_bg_color")); - setDependentStringNotEqual(e, strzone(strcat("hud_panel_", panelname, "_bg_color")), ""); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticCheckBoxString("", "1 1 1", strzone(strcat("hud_panel_", panelname, "_bg_color")), "Use default")); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Border size:")); - me.TD(me, 1, 2.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg_border")))); - e.addValue(e, "Default", ""); - e.addValue(e, "Disable", "0"); - for(i = 1; i <= 10; ++i) - e.addValue(e, strzone(ftos_decimals(i * 2, 0)), strzone(ftos(i * 2))); - e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Alpha:")); - me.TD(me, 1, 2.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg_alpha")))); - e.addValue(e, "Default", ""); - for(i = 1; i <= 10; ++i) - e.addValue(e, strzone(ftos_decimals(i/10, 1)), strzone(ftos(i/10))); - e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Team Color:")); - me.TD(me, 1, 2.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg_color_team")))); - e.addValue(e, "Default", ""); - e.addValue(e, "Disable", "0"); - for(i = 1; i <= 10; ++i) - e.addValue(e, strzone(ftos_decimals(i/10, 1)), strzone(ftos(i/10))); - e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TDempty(me, 0.4); - me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "hud_configure_teamcolorforced", "Test the team color in HUD configure mode")); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Padding:")); - me.TD(me, 1, 2.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg_padding")))); - e.addValue(e, "Default", ""); - for(i = 0; i <= 10; ++i) - e.addValue(e, strzone(ftos_decimals(i - 5, 0)), strzone(ftos(i - 5))); - e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TD(me, 1, 2, e = makeXonoticTextLabel(0, "Ammunition display:")); + me.TD(me, 1, 2, e = makeXonoticTextLabel(0, _("Ammunition display:"))); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 2, e = makeXonoticCheckBox(0, "hud_panel_ammo_onlycurrent", "Show only current ammo type")); + me.TD(me, 1, 2, e = makeXonoticCheckBox(0, "hud_panel_ammo_onlycurrent", _("Show only current ammo type"))); me.TR(me); me.TDempty(me, 0.2); me.TD(me, 1, 1.4, e = makeXonoticTextLabel(0, "Align icon:")); - me.TD(me, 1, 0.8, e = makeXonoticRadioButton(2, "hud_panel_ammo_iconalign", "0", "Left")); - me.TD(me, 1, 0.8, e = makeXonoticRadioButton(2, "hud_panel_ammo_iconalign", "1", "Right")); + me.TD(me, 1, 0.8, e = makeXonoticRadioButton(2, "hud_panel_ammo_iconalign", "0", _("Left"))); + me.TD(me, 1, 0.8, e = makeXonoticRadioButton(2, "hud_panel_ammo_iconalign", "1", _("Right"))); } #endif diff --git a/qcsrc/menu/xonotic/dialog_hudpanel_chat.c b/qcsrc/menu/xonotic/dialog_hudpanel_chat.c index c9a4eae6e8..331b0ee9ae 100644 --- a/qcsrc/menu/xonotic/dialog_hudpanel_chat.c +++ b/qcsrc/menu/xonotic/dialog_hudpanel_chat.c @@ -1,7 +1,7 @@ #ifdef INTERFACE CLASS(XonoticHUDChatDialog) EXTENDS(XonoticRootDialog) METHOD(XonoticHUDChatDialog, fill, void(entity)) - ATTRIB(XonoticHUDChatDialog, title, string, "Chat Panel") + ATTRIB(XonoticHUDChatDialog, title, string, _("Chat Panel")) ATTRIB(XonoticHUDChatDialog, color, vector, SKINCOLOR_DIALOG_TEAMSELECT) ATTRIB(XonoticHUDChatDialog, intendedWidth, float, 0.4) ATTRIB(XonoticHUDChatDialog, rows, float, 15) @@ -15,74 +15,21 @@ void XonoticHUDChatDialog_fill(entity me) { entity e; string panelname = "chat"; - float i; + + DIALOG_HUDPANEL_COMMON(); me.TR(me); - me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "hud_panel_chat", "Enable panel")); - me.TR(me); - me.TD(me, 1, 1.4, e = makeXonoticTextLabel(0, "Background:")); - me.TD(me, 1, 1.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg")))); - e.addValue(e, "Default", ""); - e.addValue(e, "Disable", "0"); - e.addValue(e, strzone(strcat("border_", panelname)), strzone(strcat("border_", panelname))); - e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Color:")); - me.TD(me, 2, 2.4, e = makeXonoticColorpickerString(strzone(strcat("hud_panel_", panelname, "_bg_color")), "hud_panel_bg_color")); - setDependentStringNotEqual(e, strzone(strcat("hud_panel_", panelname, "_bg_color")), ""); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticCheckBoxString("", "1 1 1", strzone(strcat("hud_panel_", panelname, "_bg_color")), "Use default")); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Border size:")); - me.TD(me, 1, 2.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg_border")))); - e.addValue(e, "Default", ""); - e.addValue(e, "Disable", "0"); - for(i = 1; i <= 10; ++i) - e.addValue(e, strzone(ftos_decimals(i * 2, 0)), strzone(ftos(i * 2))); - e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Alpha:")); - me.TD(me, 1, 2.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg_alpha")))); - e.addValue(e, "Default", ""); - for(i = 1; i <= 10; ++i) - e.addValue(e, strzone(ftos_decimals(i/10, 1)), strzone(ftos(i/10))); - e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Team Color:")); - me.TD(me, 1, 2.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg_color_team")))); - e.addValue(e, "Default", ""); - e.addValue(e, "Disable", "0"); - for(i = 1; i <= 10; ++i) - e.addValue(e, strzone(ftos_decimals(i/10, 1)), strzone(ftos(i/10))); - e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TDempty(me, 0.4); - me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "hud_configure_teamcolorforced", "Test the team color in HUD configure mode")); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Padding:")); - me.TD(me, 1, 2.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg_padding")))); - e.addValue(e, "Default", ""); - for(i = 0; i <= 10; ++i) - e.addValue(e, strzone(ftos_decimals(i - 5, 0)), strzone(ftos(i - 5))); - e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TD(me, 1, 2, e = makeXonoticTextLabel(0, "Chat entries:")); + me.TD(me, 1, 2, e = makeXonoticTextLabel(0, _("Chat entries:"))); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Chat size:")); + me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, _("Chat size:"))); me.TD(me, 1, 2.6, e = makeXonoticSlider(6, 20, 1, "con_chatsize")); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Chat lifetime:")); + me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, _("Chat lifetime:"))); me.TD(me, 1, 2.6, e = makeXonoticSlider(5, 60, 5, "con_chattime")); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "con_chatsound", "Chat beep sound")); + me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "con_chatsound", _("Chat beep sound"))); } #endif diff --git a/qcsrc/menu/xonotic/dialog_hudpanel_engineinfo.c b/qcsrc/menu/xonotic/dialog_hudpanel_engineinfo.c index 03ef106c7d..b69a5869e7 100644 --- a/qcsrc/menu/xonotic/dialog_hudpanel_engineinfo.c +++ b/qcsrc/menu/xonotic/dialog_hudpanel_engineinfo.c @@ -1,7 +1,7 @@ #ifdef INTERFACE CLASS(XonoticHUDEngineInfoDialog) EXTENDS(XonoticRootDialog) METHOD(XonoticHUDEngineInfoDialog, fill, void(entity)) - ATTRIB(XonoticHUDEngineInfoDialog, title, string, "Engine Info Panel") + ATTRIB(XonoticHUDEngineInfoDialog, title, string, _("Engine Info Panel")) ATTRIB(XonoticHUDEngineInfoDialog, color, vector, SKINCOLOR_DIALOG_TEAMSELECT) ATTRIB(XonoticHUDEngineInfoDialog, intendedWidth, float, 0.4) ATTRIB(XonoticHUDEngineInfoDialog, rows, float, 15) @@ -15,66 +15,13 @@ void XonoticHUDEngineInfoDialog_fill(entity me) { entity e; string panelname = "engineinfo"; - float i; + + DIALOG_HUDPANEL_COMMON(); me.TR(me); - me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "hud_panel_engineinfo", "Enable panel")); - me.TR(me); - me.TD(me, 1, 1.4, e = makeXonoticTextLabel(0, "Background:")); - me.TD(me, 1, 1.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg")))); - e.addValue(e, "Default", ""); - e.addValue(e, "Disable", "0"); - e.addValue(e, strzone(strcat("border_", panelname)), strzone(strcat("border_", panelname))); - e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Color:")); - me.TD(me, 2, 2.4, e = makeXonoticColorpickerString(strzone(strcat("hud_panel_", panelname, "_bg_color")), "hud_panel_bg_color")); - setDependentStringNotEqual(e, strzone(strcat("hud_panel_", panelname, "_bg_color")), ""); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticCheckBoxString("", "1 1 1", strzone(strcat("hud_panel_", panelname, "_bg_color")), "Use default")); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Border size:")); - me.TD(me, 1, 2.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg_border")))); - e.addValue(e, "Default", ""); - e.addValue(e, "Disable", "0"); - for(i = 1; i <= 10; ++i) - e.addValue(e, strzone(ftos_decimals(i * 2, 0)), strzone(ftos(i * 2))); - e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Alpha:")); - me.TD(me, 1, 2.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg_alpha")))); - e.addValue(e, "Default", ""); - for(i = 1; i <= 10; ++i) - e.addValue(e, strzone(ftos_decimals(i/10, 1)), strzone(ftos(i/10))); - e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Team Color:")); - me.TD(me, 1, 2.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg_color_team")))); - e.addValue(e, "Default", ""); - e.addValue(e, "Disable", "0"); - for(i = 1; i <= 10; ++i) - e.addValue(e, strzone(ftos_decimals(i/10, 1)), strzone(ftos(i/10))); - e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TDempty(me, 0.4); - me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "hud_configure_teamcolorforced", "Test the team color in HUD configure mode")); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Padding:")); - me.TD(me, 1, 2.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg_padding")))); - e.addValue(e, "Default", ""); - for(i = 0; i <= 10; ++i) - e.addValue(e, strzone(ftos_decimals(i - 5, 0)), strzone(ftos(i - 5))); - e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TD(me, 1, 2, e = makeXonoticTextLabel(0, "Engine info:")); + me.TD(me, 1, 2, e = makeXonoticTextLabel(0, _("Engine info:"))); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "hud_panel_engineinfo_framecounter_exponentialmovingaverage", "Use an averaging algorithm for fps")); + me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "hud_panel_engineinfo_framecounter_exponentialmovingaverage", _("Use an averaging algorithm for fps"))); } #endif diff --git a/qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c b/qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c index 3e8a43aeb3..91da57cdfa 100644 --- a/qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c +++ b/qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c @@ -1,7 +1,7 @@ #ifdef INTERFACE CLASS(XonoticHUDHealthArmorDialog) EXTENDS(XonoticRootDialog) METHOD(XonoticHUDHealthArmorDialog, fill, void(entity)) - ATTRIB(XonoticHUDHealthArmorDialog, title, string, "Health/Armor Panel") + ATTRIB(XonoticHUDHealthArmorDialog, title, string, _("Health/Armor Panel")) ATTRIB(XonoticHUDHealthArmorDialog, color, vector, SKINCOLOR_DIALOG_TEAMSELECT) ATTRIB(XonoticHUDHealthArmorDialog, intendedWidth, float, 0.4) ATTRIB(XonoticHUDHealthArmorDialog, rows, float, 15) @@ -15,86 +15,33 @@ void XonoticHUDHealthArmorDialog_fill(entity me) { entity e; string panelname = "healtharmor"; - float i; + + DIALOG_HUDPANEL_COMMON(); me.TR(me); - me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "hud_panel_healtharmor", "Enable panel")); - me.TR(me); - me.TD(me, 1, 1.4, e = makeXonoticTextLabel(0, "Background:")); - me.TD(me, 1, 1.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg")))); - e.addValue(e, "Default", ""); - e.addValue(e, "Disable", "0"); - e.addValue(e, strzone(strcat("border_", panelname)), strzone(strcat("border_", panelname))); - e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Color:")); - me.TD(me, 2, 2.4, e = makeXonoticColorpickerString(strzone(strcat("hud_panel_", panelname, "_bg_color")), "hud_panel_bg_color")); - setDependentStringNotEqual(e, strzone(strcat("hud_panel_", panelname, "_bg_color")), ""); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticCheckBoxString("", "1 1 1", strzone(strcat("hud_panel_", panelname, "_bg_color")), "Use default")); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Border size:")); - me.TD(me, 1, 2.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg_border")))); - e.addValue(e, "Default", ""); - e.addValue(e, "Disable", "0"); - for(i = 1; i <= 10; ++i) - e.addValue(e, strzone(ftos_decimals(i * 2, 0)), strzone(ftos(i * 2))); - e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Alpha:")); - me.TD(me, 1, 2.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg_alpha")))); - e.addValue(e, "Default", ""); - for(i = 1; i <= 10; ++i) - e.addValue(e, strzone(ftos_decimals(i/10, 1)), strzone(ftos(i/10))); - e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Team Color:")); - me.TD(me, 1, 2.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg_color_team")))); - e.addValue(e, "Default", ""); - e.addValue(e, "Disable", "0"); - for(i = 1; i <= 10; ++i) - e.addValue(e, strzone(ftos_decimals(i/10, 1)), strzone(ftos(i/10))); - e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TDempty(me, 0.4); - me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "hud_configure_teamcolorforced", "Test the team color in HUD configure mode")); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Padding:")); - me.TD(me, 1, 2.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg_padding")))); - e.addValue(e, "Default", ""); - for(i = 0; i <= 10; ++i) - e.addValue(e, strzone(ftos_decimals(i - 5, 0)), strzone(ftos(i - 5))); - e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "hud_panel_healtharmor_progressbar", "Enable status bar")); + me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "hud_panel_healtharmor_progressbar", _("Enable status bar"))); me.TR(me); - me.TD(me, 1, 2, e = makeXonoticTextLabel(0, "Status bar alignment:")); + me.TD(me, 1, 2, e = makeXonoticTextLabel(0, _("Status bar alignment:"))); setDependent(e, "hud_panel_healtharmor_progressbar", 1, 1); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 0.95, e = makeXonoticRadioButton(2, "hud_panel_healtharmor_baralign", "0", "Left")); + me.TD(me, 1, 0.95, e = makeXonoticRadioButton(2, "hud_panel_healtharmor_baralign", "0", _("Left"))); setDependent(e, "hud_panel_healtharmor_progressbar", 1, 1); - me.TD(me, 1, 0.95, e = makeXonoticRadioButton(2, "hud_panel_healtharmor_baralign", "1", "Right")); + me.TD(me, 1, 0.95, e = makeXonoticRadioButton(2, "hud_panel_healtharmor_baralign", "1", _("Right"))); setDependent(e, "hud_panel_healtharmor_progressbar", 1, 1); - me.TD(me, 1, 0.95, e = makeXonoticRadioButton(2, "hud_panel_healtharmor_baralign", "3", "Inward")); + me.TD(me, 1, 0.95, e = makeXonoticRadioButton(2, "hud_panel_healtharmor_baralign", "3", _("Inward"))); setDependent(e, "hud_panel_healtharmor_progressbar", 1, 1); - me.TD(me, 1, 0.95, e = makeXonoticRadioButton(2, "hud_panel_healtharmor_baralign", "4", "Outward")); + me.TD(me, 1, 0.95, e = makeXonoticRadioButton(2, "hud_panel_healtharmor_baralign", "4", _("Outward"))); setDependent(e, "hud_panel_healtharmor_progressbar", 1, 1); me.TR(me); - me.TD(me, 1, 2, e = makeXonoticTextLabel(0, "Icon alignment:")); + me.TD(me, 1, 2, e = makeXonoticTextLabel(0, _("Icon alignment:"))); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 0.95, e = makeXonoticRadioButton(3, "hud_panel_healtharmor_iconalign", "0", "Left")); - me.TD(me, 1, 0.95, e = makeXonoticRadioButton(3, "hud_panel_healtharmor_iconalign", "1", "Right")); - me.TD(me, 1, 0.95, e = makeXonoticRadioButton(3, "hud_panel_healtharmor_iconalign", "3", "Inward")); - me.TD(me, 1, 0.95, e = makeXonoticRadioButton(3, "hud_panel_healtharmor_iconalign", "4", "Outward")); + me.TD(me, 1, 0.95, e = makeXonoticRadioButton(3, "hud_panel_healtharmor_iconalign", "0", _("Left"))); + me.TD(me, 1, 0.95, e = makeXonoticRadioButton(3, "hud_panel_healtharmor_iconalign", "1", _("Right"))); + me.TD(me, 1, 0.95, e = makeXonoticRadioButton(3, "hud_panel_healtharmor_iconalign", "3", _("Inward"))); + me.TD(me, 1, 0.95, e = makeXonoticRadioButton(3, "hud_panel_healtharmor_iconalign", "4", _("Outward"))); me.TR(me); - me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "hud_panel_healtharmor_flip", "Flip health and armor positions")); + me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "hud_panel_healtharmor_flip", _("Flip health and armor positions"))); } #endif diff --git a/qcsrc/menu/xonotic/dialog_hudpanel_infomessages.c b/qcsrc/menu/xonotic/dialog_hudpanel_infomessages.c index d8534a20e9..44b20294b7 100644 --- a/qcsrc/menu/xonotic/dialog_hudpanel_infomessages.c +++ b/qcsrc/menu/xonotic/dialog_hudpanel_infomessages.c @@ -1,7 +1,7 @@ #ifdef INTERFACE CLASS(XonoticHUDInfoMessagesDialog) EXTENDS(XonoticRootDialog) METHOD(XonoticHUDInfoMessagesDialog, fill, void(entity)) - ATTRIB(XonoticHUDInfoMessagesDialog, title, string, "Info Messages Panel") + ATTRIB(XonoticHUDInfoMessagesDialog, title, string, _("Info Messages Panel")) ATTRIB(XonoticHUDInfoMessagesDialog, color, vector, SKINCOLOR_DIALOG_TEAMSELECT) ATTRIB(XonoticHUDInfoMessagesDialog, intendedWidth, float, 0.4) ATTRIB(XonoticHUDInfoMessagesDialog, rows, float, 15) @@ -15,66 +15,13 @@ void XonoticHUDInfoMessagesDialog_fill(entity me) { entity e; string panelname = "infomessages"; - float i; + + DIALOG_HUDPANEL_COMMON(); me.TR(me); - me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "hud_panel_infomessages", "Enable panel")); - me.TR(me); - me.TD(me, 1, 1.4, e = makeXonoticTextLabel(0, "Background:")); - me.TD(me, 1, 1.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg")))); - e.addValue(e, "Default", ""); - e.addValue(e, "Disable", "0"); - e.addValue(e, strzone(strcat("border_", panelname)), strzone(strcat("border_", panelname))); - e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Color:")); - me.TD(me, 2, 2.4, e = makeXonoticColorpickerString(strzone(strcat("hud_panel_", panelname, "_bg_color")), "hud_panel_bg_color")); - setDependentStringNotEqual(e, strzone(strcat("hud_panel_", panelname, "_bg_color")), ""); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticCheckBoxString("", "1 1 1", strzone(strcat("hud_panel_", panelname, "_bg_color")), "Use default")); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Border size:")); - me.TD(me, 1, 2.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg_border")))); - e.addValue(e, "Default", ""); - e.addValue(e, "Disable", "0"); - for(i = 1; i <= 10; ++i) - e.addValue(e, strzone(ftos_decimals(i * 2, 0)), strzone(ftos(i * 2))); - e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Alpha:")); - me.TD(me, 1, 2.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg_alpha")))); - e.addValue(e, "Default", ""); - for(i = 1; i <= 10; ++i) - e.addValue(e, strzone(ftos_decimals(i/10, 1)), strzone(ftos(i/10))); - e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Team Color:")); - me.TD(me, 1, 2.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg_color_team")))); - e.addValue(e, "Default", ""); - e.addValue(e, "Disable", "0"); - for(i = 1; i <= 10; ++i) - e.addValue(e, strzone(ftos_decimals(i/10, 1)), strzone(ftos(i/10))); - e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TDempty(me, 0.4); - me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "hud_configure_teamcolorforced", "Test the team color in HUD configure mode")); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Padding:")); - me.TD(me, 1, 2.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg_padding")))); - e.addValue(e, "Default", ""); - for(i = 0; i <= 10; ++i) - e.addValue(e, strzone(ftos_decimals(i - 5, 0)), strzone(ftos(i - 5))); - e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TD(me, 1, 2, e = makeXonoticTextLabel(0, "Info messages:")); + me.TD(me, 1, 2, e = makeXonoticTextLabel(0, _("Info messages:"))); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "hud_panel_infomessages_flip", "Flip align")); + me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "hud_panel_infomessages_flip", _("Flip align"))); } #endif diff --git a/qcsrc/menu/xonotic/dialog_hudpanel_modicons.c b/qcsrc/menu/xonotic/dialog_hudpanel_modicons.c index d60a72473f..fd5d233dcf 100644 --- a/qcsrc/menu/xonotic/dialog_hudpanel_modicons.c +++ b/qcsrc/menu/xonotic/dialog_hudpanel_modicons.c @@ -1,7 +1,7 @@ #ifdef INTERFACE CLASS(XonoticHUDModIconsDialog) EXTENDS(XonoticRootDialog) METHOD(XonoticHUDModIconsDialog, fill, void(entity)) - ATTRIB(XonoticHUDModIconsDialog, title, string, "Mod Icons Panel") + ATTRIB(XonoticHUDModIconsDialog, title, string, _("Mod Icons Panel")) ATTRIB(XonoticHUDModIconsDialog, color, vector, SKINCOLOR_DIALOG_TEAMSELECT) ATTRIB(XonoticHUDModIconsDialog, intendedWidth, float, 0.4) ATTRIB(XonoticHUDModIconsDialog, rows, float, 15) @@ -15,61 +15,7 @@ void XonoticHUDModIconsDialog_fill(entity me) { entity e; string panelname = "modicons"; - float i; - me.TR(me); - me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "hud_panel_modicons", "Enable panel")); - me.TR(me); - me.TD(me, 1, 1.4, e = makeXonoticTextLabel(0, "Background:")); - me.TD(me, 1, 1.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg")))); - e.addValue(e, "Default", ""); - e.addValue(e, "Disable", "0"); - e.addValue(e, strzone(strcat("border_", panelname)), strzone(strcat("border_", panelname))); - e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Color:")); - me.TD(me, 2, 2.4, e = makeXonoticColorpickerString(strzone(strcat("hud_panel_", panelname, "_bg_color")), "hud_panel_bg_color")); - setDependentStringNotEqual(e, strzone(strcat("hud_panel_", panelname, "_bg_color")), ""); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticCheckBoxString("", "1 1 1", strzone(strcat("hud_panel_", panelname, "_bg_color")), "Use default")); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Border size:")); - me.TD(me, 1, 2.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg_border")))); - e.addValue(e, "Default", ""); - e.addValue(e, "Disable", "0"); - for(i = 1; i <= 10; ++i) - e.addValue(e, strzone(ftos_decimals(i * 2, 0)), strzone(ftos(i * 2))); - e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Alpha:")); - me.TD(me, 1, 2.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg_alpha")))); - e.addValue(e, "Default", ""); - for(i = 1; i <= 10; ++i) - e.addValue(e, strzone(ftos_decimals(i/10, 1)), strzone(ftos(i/10))); - e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Team Color:")); - me.TD(me, 1, 2.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg_color_team")))); - e.addValue(e, "Default", ""); - e.addValue(e, "Disable", "0"); - for(i = 1; i <= 10; ++i) - e.addValue(e, strzone(ftos_decimals(i/10, 1)), strzone(ftos(i/10))); - e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TDempty(me, 0.4); - me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "hud_configure_teamcolorforced", "Test the team color in HUD configure mode")); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Padding:")); - me.TD(me, 1, 2.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg_padding")))); - e.addValue(e, "Default", ""); - for(i = 0; i <= 10; ++i) - e.addValue(e, strzone(ftos_decimals(i - 5, 0)), strzone(ftos(i - 5))); - e.configureXonoticTextSliderValues(e); + DIALOG_HUDPANEL_COMMON(); } #endif diff --git a/qcsrc/menu/xonotic/dialog_hudpanel_notification.c b/qcsrc/menu/xonotic/dialog_hudpanel_notification.c index b0752664f2..1f26ab34aa 100644 --- a/qcsrc/menu/xonotic/dialog_hudpanel_notification.c +++ b/qcsrc/menu/xonotic/dialog_hudpanel_notification.c @@ -1,7 +1,7 @@ #ifdef INTERFACE CLASS(XonoticHUDNotificationDialog) EXTENDS(XonoticRootDialog) METHOD(XonoticHUDNotificationDialog, fill, void(entity)) - ATTRIB(XonoticHUDNotificationDialog, title, string, "Notification Panel") + ATTRIB(XonoticHUDNotificationDialog, title, string, _("Notification Panel")) ATTRIB(XonoticHUDNotificationDialog, color, vector, SKINCOLOR_DIALOG_TEAMSELECT) ATTRIB(XonoticHUDNotificationDialog, intendedWidth, float, 0.4) ATTRIB(XonoticHUDNotificationDialog, rows, float, 15) @@ -15,77 +15,24 @@ void XonoticHUDNotificationDialog_fill(entity me) { entity e; string panelname = "notify"; - float i; + + DIALOG_HUDPANEL_COMMON(); me.TR(me); - me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "hud_panel_notify", "Enable panel")); - me.TR(me); - me.TD(me, 1, 1.4, e = makeXonoticTextLabel(0, "Background:")); - me.TD(me, 1, 1.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg")))); - e.addValue(e, "Default", ""); - e.addValue(e, "Disable", "0"); - e.addValue(e, strzone(strcat("border_", panelname)), strzone(strcat("border_", panelname))); - e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Color:")); - me.TD(me, 2, 2.4, e = makeXonoticColorpickerString(strzone(strcat("hud_panel_", panelname, "_bg_color")), "hud_panel_bg_color")); - setDependentStringNotEqual(e, strzone(strcat("hud_panel_", panelname, "_bg_color")), ""); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticCheckBoxString("", "1 1 1", strzone(strcat("hud_panel_", panelname, "_bg_color")), "Use default")); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Border size:")); - me.TD(me, 1, 2.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg_border")))); - e.addValue(e, "Default", ""); - e.addValue(e, "Disable", "0"); - for(i = 1; i <= 10; ++i) - e.addValue(e, strzone(ftos_decimals(i * 2, 0)), strzone(ftos(i * 2))); - e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Alpha:")); - me.TD(me, 1, 2.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg_alpha")))); - e.addValue(e, "Default", ""); - for(i = 1; i <= 10; ++i) - e.addValue(e, strzone(ftos_decimals(i/10, 1)), strzone(ftos(i/10))); - e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Team Color:")); - me.TD(me, 1, 2.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg_color_team")))); - e.addValue(e, "Default", ""); - e.addValue(e, "Disable", "0"); - for(i = 1; i <= 10; ++i) - e.addValue(e, strzone(ftos_decimals(i/10, 1)), strzone(ftos(i/10))); - e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TDempty(me, 0.4); - me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "hud_configure_teamcolorforced", "Test the team color in HUD configure mode")); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Padding:")); - me.TD(me, 1, 2.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg_padding")))); - e.addValue(e, "Default", ""); - for(i = 0; i <= 10; ++i) - e.addValue(e, strzone(ftos_decimals(i - 5, 0)), strzone(ftos(i - 5))); - e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TD(me, 1, 2, e = makeXonoticTextLabel(0, "Notifications:")); + me.TD(me, 1, 2, e = makeXonoticTextLabel(0, _("Notifications:"))); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "hud_panel_notify_print", "Also print notifications to the console")); + me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "hud_panel_notify_print", _("Also print notifications to the console"))); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "hud_panel_notify_flip", "Flip notify order")); + me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "hud_panel_notify_flip", _("Flip notify order"))); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Entry lifetime:")); + me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, _("Entry lifetime:"))); me.TD(me, 1, 2.6, e = makeXonoticSlider(3, 15, 1, "hud_panel_notify_time")); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Entry fadetime:")); + me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, _("Entry fadetime:"))); me.TD(me, 1, 2.6, e = makeXonoticSlider(0.5, 5, 0.5, "hud_panel_notify_fadetime")); } #endif diff --git a/qcsrc/menu/xonotic/dialog_hudpanel_powerups.c b/qcsrc/menu/xonotic/dialog_hudpanel_powerups.c index 5d4e14c08b..e63e785528 100644 --- a/qcsrc/menu/xonotic/dialog_hudpanel_powerups.c +++ b/qcsrc/menu/xonotic/dialog_hudpanel_powerups.c @@ -1,7 +1,7 @@ #ifdef INTERFACE CLASS(XonoticHUDPowerupsDialog) EXTENDS(XonoticRootDialog) METHOD(XonoticHUDPowerupsDialog, fill, void(entity)) - ATTRIB(XonoticHUDPowerupsDialog, title, string, "Powerups Panel") + ATTRIB(XonoticHUDPowerupsDialog, title, string, _("Powerups Panel")) ATTRIB(XonoticHUDPowerupsDialog, color, vector, SKINCOLOR_DIALOG_TEAMSELECT) ATTRIB(XonoticHUDPowerupsDialog, intendedWidth, float, 0.4) ATTRIB(XonoticHUDPowerupsDialog, rows, float, 15) @@ -15,86 +15,33 @@ void XonoticHUDPowerupsDialog_fill(entity me) { entity e; string panelname = "powerups"; - float i; + + DIALOG_HUDPANEL_COMMON(); me.TR(me); - me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "hud_panel_powerups", "Enable panel")); - me.TR(me); - me.TD(me, 1, 1.4, e = makeXonoticTextLabel(0, "Background:")); - me.TD(me, 1, 1.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg")))); - e.addValue(e, "Default", ""); - e.addValue(e, "Disable", "0"); - e.addValue(e, strzone(strcat("border_", panelname)), strzone(strcat("border_", panelname))); - e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Color:")); - me.TD(me, 2, 2.4, e = makeXonoticColorpickerString(strzone(strcat("hud_panel_", panelname, "_bg_color")), "hud_panel_bg_color")); - setDependentStringNotEqual(e, strzone(strcat("hud_panel_", panelname, "_bg_color")), ""); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticCheckBoxString("", "1 1 1", strzone(strcat("hud_panel_", panelname, "_bg_color")), "Use default")); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Border size:")); - me.TD(me, 1, 2.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg_border")))); - e.addValue(e, "Default", ""); - e.addValue(e, "Disable", "0"); - for(i = 1; i <= 10; ++i) - e.addValue(e, strzone(ftos_decimals(i * 2, 0)), strzone(ftos(i * 2))); - e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Alpha:")); - me.TD(me, 1, 2.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg_alpha")))); - e.addValue(e, "Default", ""); - for(i = 1; i <= 10; ++i) - e.addValue(e, strzone(ftos_decimals(i/10, 1)), strzone(ftos(i/10))); - e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Team Color:")); - me.TD(me, 1, 2.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg_color_team")))); - e.addValue(e, "Default", ""); - e.addValue(e, "Disable", "0"); - for(i = 1; i <= 10; ++i) - e.addValue(e, strzone(ftos_decimals(i/10, 1)), strzone(ftos(i/10))); - e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TDempty(me, 0.4); - me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "hud_configure_teamcolorforced", "Test the team color in HUD configure mode")); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Padding:")); - me.TD(me, 1, 2.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg_padding")))); - e.addValue(e, "Default", ""); - for(i = 0; i <= 10; ++i) - e.addValue(e, strzone(ftos_decimals(i - 5, 0)), strzone(ftos(i - 5))); - e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "hud_panel_powerups_progressbar", "Enable status bar")); + me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "hud_panel_powerups_progressbar", _("Enable status bar"))); me.TR(me); - me.TD(me, 1, 2, e = makeXonoticTextLabel(0, "Status bar alignment:")); + me.TD(me, 1, 2, e = makeXonoticTextLabel(0, _("Status bar alignment:"))); setDependent(e, "hud_panel_powerups_progressbar", 1, 1); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 0.95, e = makeXonoticRadioButton(2, "hud_panel_powerups_baralign", "0", "Left")); + me.TD(me, 1, 0.95, e = makeXonoticRadioButton(2, "hud_panel_powerups_baralign", "0", _("Left"))); setDependent(e, "hud_panel_powerups_progressbar", 1, 1); - me.TD(me, 1, 0.95, e = makeXonoticRadioButton(2, "hud_panel_powerups_baralign", "1", "Right")); + me.TD(me, 1, 0.95, e = makeXonoticRadioButton(2, "hud_panel_powerups_baralign", "1", _("Right"))); setDependent(e, "hud_panel_powerups_progressbar", 1, 1); - me.TD(me, 1, 0.95, e = makeXonoticRadioButton(2, "hud_panel_powerups_baralign", "3", "Inward")); + me.TD(me, 1, 0.95, e = makeXonoticRadioButton(2, "hud_panel_powerups_baralign", "3", _("Inward"))); setDependent(e, "hud_panel_powerups_progressbar", 1, 1); - me.TD(me, 1, 0.95, e = makeXonoticRadioButton(2, "hud_panel_powerups_baralign", "4", "Outward")); + me.TD(me, 1, 0.95, e = makeXonoticRadioButton(2, "hud_panel_powerups_baralign", "4", _("Outward"))); setDependent(e, "hud_panel_powerups_progressbar", 1, 1); me.TR(me); - me.TD(me, 1, 2, e = makeXonoticTextLabel(0, "Icon alignment:")); + me.TD(me, 1, 2, e = makeXonoticTextLabel(0, _("Icon alignment:"))); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 0.95, e = makeXonoticRadioButton(3, "hud_panel_powerups_iconalign", "0", "Left")); - me.TD(me, 1, 0.95, e = makeXonoticRadioButton(3, "hud_panel_powerups_iconalign", "1", "Right")); - me.TD(me, 1, 0.95, e = makeXonoticRadioButton(3, "hud_panel_powerups_iconalign", "3", "Inward")); - me.TD(me, 1, 0.95, e = makeXonoticRadioButton(3, "hud_panel_powerups_iconalign", "4", "Outward")); + me.TD(me, 1, 0.95, e = makeXonoticRadioButton(3, "hud_panel_powerups_iconalign", "0", _("Left"))); + me.TD(me, 1, 0.95, e = makeXonoticRadioButton(3, "hud_panel_powerups_iconalign", "1", _("Right"))); + me.TD(me, 1, 0.95, e = makeXonoticRadioButton(3, "hud_panel_powerups_iconalign", "3", _("Inward"))); + me.TD(me, 1, 0.95, e = makeXonoticRadioButton(3, "hud_panel_powerups_iconalign", "4", _("Outward"))); me.TR(me); - me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "hud_panel_powerups_flip", "Flip strength and shield positions")); + me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "hud_panel_powerups_flip", _("Flip strength and shield positions"))); } #endif diff --git a/qcsrc/menu/xonotic/dialog_hudpanel_pressedkeys.c b/qcsrc/menu/xonotic/dialog_hudpanel_pressedkeys.c index 30f6bfc1f2..bbddb7fc1b 100644 --- a/qcsrc/menu/xonotic/dialog_hudpanel_pressedkeys.c +++ b/qcsrc/menu/xonotic/dialog_hudpanel_pressedkeys.c @@ -1,7 +1,7 @@ #ifdef INTERFACE CLASS(XonoticHUDPressedKeysDialog) EXTENDS(XonoticRootDialog) METHOD(XonoticHUDPressedKeysDialog, fill, void(entity)) - ATTRIB(XonoticHUDPressedKeysDialog, title, string, "Pressed Keys Panel") + ATTRIB(XonoticHUDPressedKeysDialog, title, string, _("Pressed Keys Panel")) ATTRIB(XonoticHUDPressedKeysDialog, color, vector, SKINCOLOR_DIALOG_TEAMSELECT) ATTRIB(XonoticHUDPressedKeysDialog, intendedWidth, float, 0.4) ATTRIB(XonoticHUDPressedKeysDialog, rows, float, 15) @@ -15,69 +15,19 @@ void XonoticHUDPressedKeysDialog_fill(entity me) { entity e; string panelname = "pressedkeys"; - float i; me.TR(me); me.TD(me, 1, 2, e = makeXonoticTextSlider("hud_panel_pressedkeys")); - e.addValue(e, "Panel disabled", "0"); - e.addValue(e, "Panel enabled when spectating", "1"); - e.addValue(e, "Panel always enabled", "2"); + e.addValue(e, _("Panel disabled"), "0"); + e.addValue(e, _("Panel enabled when spectating"), "1"); + e.addValue(e, _("Panel always enabled"), "2"); e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TD(me, 1, 1.4, e = makeXonoticTextLabel(0, "Background:")); - me.TD(me, 1, 1.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg")))); - e.addValue(e, "Default", ""); - e.addValue(e, "Disable", "0"); - e.addValue(e, strzone(strcat("border_", panelname)), strzone(strcat("border_", panelname))); - e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Color:")); - me.TD(me, 2, 2.4, e = makeXonoticColorpickerString(strzone(strcat("hud_panel_", panelname, "_bg_color")), "hud_panel_bg_color")); - setDependentStringNotEqual(e, strzone(strcat("hud_panel_", panelname, "_bg_color")), ""); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticCheckBoxString("", "1 1 1", strzone(strcat("hud_panel_", panelname, "_bg_color")), "Use default")); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Border size:")); - me.TD(me, 1, 2.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg_border")))); - e.addValue(e, "Default", ""); - e.addValue(e, "Disable", "0"); - for(i = 1; i <= 10; ++i) - e.addValue(e, strzone(ftos_decimals(i * 2, 0)), strzone(ftos(i * 2))); - e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Alpha:")); - me.TD(me, 1, 2.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg_alpha")))); - e.addValue(e, "Default", ""); - for(i = 1; i <= 10; ++i) - e.addValue(e, strzone(ftos_decimals(i/10, 1)), strzone(ftos(i/10))); - e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Team Color:")); - me.TD(me, 1, 2.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg_color_team")))); - e.addValue(e, "Default", ""); - e.addValue(e, "Disable", "0"); - for(i = 1; i <= 10; ++i) - e.addValue(e, strzone(ftos_decimals(i/10, 1)), strzone(ftos(i/10))); - e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TDempty(me, 0.4); - me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "hud_configure_teamcolorforced", "Test the team color in HUD configure mode")); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Padding:")); - me.TD(me, 1, 2.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg_padding")))); - e.addValue(e, "Default", ""); - for(i = 0; i <= 10; ++i) - e.addValue(e, strzone(ftos_decimals(i - 5, 0)), strzone(ftos(i - 5))); - e.configureXonoticTextSliderValues(e); + + DIALOG_HUDPANEL_COMMON_NOTOGGLE(); + me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Forced aspect:")); + me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, _("Forced aspect:"))); me.TD(me, 1, 2.6, e = makeXonoticSlider(0.2, 4, 0.1, "hud_panel_pressedkeys_aspect")); } #endif diff --git a/qcsrc/menu/xonotic/dialog_hudpanel_racetimer.c b/qcsrc/menu/xonotic/dialog_hudpanel_racetimer.c index 35fdc55f3c..015979b21e 100644 --- a/qcsrc/menu/xonotic/dialog_hudpanel_racetimer.c +++ b/qcsrc/menu/xonotic/dialog_hudpanel_racetimer.c @@ -1,7 +1,7 @@ #ifdef INTERFACE CLASS(XonoticHUDRaceTimerDialog) EXTENDS(XonoticRootDialog) METHOD(XonoticHUDRaceTimerDialog, fill, void(entity)) - ATTRIB(XonoticHUDRaceTimerDialog, title, string, "Race Timer Panel") + ATTRIB(XonoticHUDRaceTimerDialog, title, string, _("Race Timer Panel")) ATTRIB(XonoticHUDRaceTimerDialog, color, vector, SKINCOLOR_DIALOG_TEAMSELECT) ATTRIB(XonoticHUDRaceTimerDialog, intendedWidth, float, 0.4) ATTRIB(XonoticHUDRaceTimerDialog, rows, float, 15) @@ -15,61 +15,7 @@ void XonoticHUDRaceTimerDialog_fill(entity me) { entity e; string panelname = "racetimer"; - float i; - me.TR(me); - me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "hud_panel_racetimer", "Enable panel")); - me.TR(me); - me.TD(me, 1, 1.4, e = makeXonoticTextLabel(0, "Background:")); - me.TD(me, 1, 1.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg")))); - e.addValue(e, "Default", ""); - e.addValue(e, "Disable", "0"); - e.addValue(e, strzone(strcat("border_", panelname)), strzone(strcat("border_", panelname))); - e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Color:")); - me.TD(me, 2, 2.4, e = makeXonoticColorpickerString(strzone(strcat("hud_panel_", panelname, "_bg_color")), "hud_panel_bg_color")); - setDependentStringNotEqual(e, strzone(strcat("hud_panel_", panelname, "_bg_color")), ""); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticCheckBoxString("", "1 1 1", strzone(strcat("hud_panel_", panelname, "_bg_color")), "Use default")); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Border size:")); - me.TD(me, 1, 2.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg_border")))); - e.addValue(e, "Default", ""); - e.addValue(e, "Disable", "0"); - for(i = 1; i <= 10; ++i) - e.addValue(e, strzone(ftos_decimals(i * 2, 0)), strzone(ftos(i * 2))); - e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Alpha:")); - me.TD(me, 1, 2.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg_alpha")))); - e.addValue(e, "Default", ""); - for(i = 1; i <= 10; ++i) - e.addValue(e, strzone(ftos_decimals(i/10, 1)), strzone(ftos(i/10))); - e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Team Color:")); - me.TD(me, 1, 2.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg_color_team")))); - e.addValue(e, "Default", ""); - e.addValue(e, "Disable", "0"); - for(i = 1; i <= 10; ++i) - e.addValue(e, strzone(ftos_decimals(i/10, 1)), strzone(ftos(i/10))); - e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TDempty(me, 0.4); - me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "hud_configure_teamcolorforced", "Test the team color in HUD configure mode")); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Padding:")); - me.TD(me, 1, 2.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg_padding")))); - e.addValue(e, "Default", ""); - for(i = 0; i <= 10; ++i) - e.addValue(e, strzone(ftos_decimals(i - 5, 0)), strzone(ftos(i - 5))); - e.configureXonoticTextSliderValues(e); + DIALOG_HUDPANEL_COMMON(); } #endif diff --git a/qcsrc/menu/xonotic/dialog_hudpanel_radar.c b/qcsrc/menu/xonotic/dialog_hudpanel_radar.c index d1202846e2..5a43bbdf60 100644 --- a/qcsrc/menu/xonotic/dialog_hudpanel_radar.c +++ b/qcsrc/menu/xonotic/dialog_hudpanel_radar.c @@ -1,7 +1,7 @@ #ifdef INTERFACE CLASS(XonoticHUDRadarDialog) EXTENDS(XonoticRootDialog) METHOD(XonoticHUDRadarDialog, fill, void(entity)) - ATTRIB(XonoticHUDRadarDialog, title, string, "Radar Panel") + ATTRIB(XonoticHUDRadarDialog, title, string, _("Radar Panel")) ATTRIB(XonoticHUDRadarDialog, color, vector, SKINCOLOR_DIALOG_TEAMSELECT) ATTRIB(XonoticHUDRadarDialog, intendedWidth, float, 0.4) ATTRIB(XonoticHUDRadarDialog, rows, float, 15) @@ -15,94 +15,44 @@ void XonoticHUDRadarDialog_fill(entity me) { entity e; string panelname = "radar"; - float i; me.TR(me); me.TD(me, 1, 2, e = makeXonoticTextSlider("hud_panel_radar")); - e.addValue(e, "Panel disabled", "0"); - e.addValue(e, "Panel enabled in teamgames", "1"); - e.addValue(e, "Panel always enabled", "2"); + e.addValue(e, _("Panel disabled"), "0"); + e.addValue(e, _("Panel enabled in teamgames"), "1"); + e.addValue(e, _("Panel always enabled"), "2"); e.configureXonoticTextSliderValues(e); + + DIALOG_HUDPANEL_COMMON_NOTOGGLE(); + me.TR(me); - me.TD(me, 1, 1.4, e = makeXonoticTextLabel(0, "Background:")); - me.TD(me, 1, 1.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg")))); - e.addValue(e, "Default", ""); - e.addValue(e, "Disable", "0"); - e.addValue(e, strzone(strcat("border_", panelname)), strzone(strcat("border_", panelname))); - e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Color:")); - me.TD(me, 2, 2.4, e = makeXonoticColorpickerString(strzone(strcat("hud_panel_", panelname, "_bg_color")), "hud_panel_bg_color")); - setDependentStringNotEqual(e, strzone(strcat("hud_panel_", panelname, "_bg_color")), ""); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticCheckBoxString("", "1 1 1", strzone(strcat("hud_panel_", panelname, "_bg_color")), "Use default")); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Border size:")); - me.TD(me, 1, 2.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg_border")))); - e.addValue(e, "Default", ""); - e.addValue(e, "Disable", "0"); - for(i = 1; i <= 10; ++i) - e.addValue(e, strzone(ftos_decimals(i * 2, 0)), strzone(ftos(i * 2))); - e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Alpha:")); - me.TD(me, 1, 2.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg_alpha")))); - e.addValue(e, "Default", ""); - for(i = 1; i <= 10; ++i) - e.addValue(e, strzone(ftos_decimals(i/10, 1)), strzone(ftos(i/10))); - e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Team Color:")); - me.TD(me, 1, 2.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg_color_team")))); - e.addValue(e, "Default", ""); - e.addValue(e, "Disable", "0"); - for(i = 1; i <= 10; ++i) - e.addValue(e, strzone(ftos_decimals(i/10, 1)), strzone(ftos(i/10))); - e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TDempty(me, 0.4); - me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "hud_configure_teamcolorforced", "Test the team color in HUD configure mode")); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Padding:")); - me.TD(me, 1, 2.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg_padding")))); - e.addValue(e, "Default", ""); - for(i = 0; i <= 10; ++i) - e.addValue(e, strzone(ftos_decimals(i - 5, 0)), strzone(ftos(i - 5))); - e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TD(me, 1, 2, e = makeXonoticTextLabel(0, "Radar:")); + me.TD(me, 1, 2, e = makeXonoticTextLabel(0, _("Radar:"))); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Alpha:")); + me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, _("Alpha:"))); me.TD(me, 1, 2.6, e = makeXonoticSlider(0.1, 1, 0.1, "hud_panel_radar_foreground_alpha")); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Rotation:")); + me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, _("Rotation:"))); me.TD(me, 1, 2.6, e = makeXonoticTextSlider("hud_panel_radar_rotation")); - e.addValue(e, "Forward", "0"); - e.addValue(e, "West", "1"); - e.addValue(e, "South", "2"); - e.addValue(e, "East", "3"); - e.addValue(e, "North", "4"); + e.addValue(e, _("Forward"), "0"); + e.addValue(e, _("West"), "1"); + e.addValue(e, _("South"), "2"); + e.addValue(e, _("East"), "3"); + e.addValue(e, _("North"), "4"); e.configureXonoticTextSliderValues(e); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Scale:")); + me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, _("Scale:"))); me.TD(me, 1, 2.6, e = makeXonoticSlider(1024, 8192, 512, "hud_panel_radar_scale")); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Zoom mode:")); + me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, _("Zoom mode:"))); me.TD(me, 1, 1.6, e = makeXonoticTextSlider("hud_panel_radar_zoommode")); - e.addValue(e, "Zoomed in", "0"); - e.addValue(e, "Zoomed out", "1"); - e.addValue(e, "Always zoomed", "2"); - e.addValue(e, "Never zoomed", "3"); + e.addValue(e, _("Zoomed in"), "0"); + e.addValue(e, _("Zoomed out"), "1"); + e.addValue(e, _("Always zoomed"), "2"); + e.addValue(e, _("Never zoomed"), "3"); e.configureXonoticTextSliderValues(e); } #endif diff --git a/qcsrc/menu/xonotic/dialog_hudpanel_score.c b/qcsrc/menu/xonotic/dialog_hudpanel_score.c index fc51921e23..ccb8d9528b 100644 --- a/qcsrc/menu/xonotic/dialog_hudpanel_score.c +++ b/qcsrc/menu/xonotic/dialog_hudpanel_score.c @@ -1,7 +1,7 @@ #ifdef INTERFACE CLASS(XonoticHUDScoreDialog) EXTENDS(XonoticRootDialog) METHOD(XonoticHUDScoreDialog, fill, void(entity)) - ATTRIB(XonoticHUDScoreDialog, title, string, "Score Panel") + ATTRIB(XonoticHUDScoreDialog, title, string, _("Score Panel")) ATTRIB(XonoticHUDScoreDialog, color, vector, SKINCOLOR_DIALOG_TEAMSELECT) ATTRIB(XonoticHUDScoreDialog, intendedWidth, float, 0.4) ATTRIB(XonoticHUDScoreDialog, rows, float, 15) @@ -15,61 +15,7 @@ void XonoticHUDScoreDialog_fill(entity me) { entity e; string panelname = "score"; - float i; - me.TR(me); - me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "hud_panel_score", "Enable panel")); - me.TR(me); - me.TD(me, 1, 1.4, e = makeXonoticTextLabel(0, "Background:")); - me.TD(me, 1, 1.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg")))); - e.addValue(e, "Default", ""); - e.addValue(e, "Disable", "0"); - e.addValue(e, strzone(strcat("border_", panelname)), strzone(strcat("border_", panelname))); - e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Color:")); - me.TD(me, 2, 2.4, e = makeXonoticColorpickerString(strzone(strcat("hud_panel_", panelname, "_bg_color")), "hud_panel_bg_color")); - setDependentStringNotEqual(e, strzone(strcat("hud_panel_", panelname, "_bg_color")), ""); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticCheckBoxString("", "1 1 1", strzone(strcat("hud_panel_", panelname, "_bg_color")), "Use default")); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Border size:")); - me.TD(me, 1, 2.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg_border")))); - e.addValue(e, "Default", ""); - e.addValue(e, "Disable", "0"); - for(i = 1; i <= 10; ++i) - e.addValue(e, strzone(ftos_decimals(i * 2, 0)), strzone(ftos(i * 2))); - e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Alpha:")); - me.TD(me, 1, 2.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg_alpha")))); - e.addValue(e, "Default", ""); - for(i = 1; i <= 10; ++i) - e.addValue(e, strzone(ftos_decimals(i/10, 1)), strzone(ftos(i/10))); - e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Team Color:")); - me.TD(me, 1, 2.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg_color_team")))); - e.addValue(e, "Default", ""); - e.addValue(e, "Disable", "0"); - for(i = 1; i <= 10; ++i) - e.addValue(e, strzone(ftos_decimals(i/10, 1)), strzone(ftos(i/10))); - e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TDempty(me, 0.4); - me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "hud_configure_teamcolorforced", "Test the team color in HUD configure mode")); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Padding:")); - me.TD(me, 1, 2.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg_padding")))); - e.addValue(e, "Default", ""); - for(i = 0; i <= 10; ++i) - e.addValue(e, strzone(ftos_decimals(i - 5, 0)), strzone(ftos(i - 5))); - e.configureXonoticTextSliderValues(e); + DIALOG_HUDPANEL_COMMON(); } #endif diff --git a/qcsrc/menu/xonotic/dialog_hudpanel_timer.c b/qcsrc/menu/xonotic/dialog_hudpanel_timer.c index 96dc4aa695..5f2fc5dd74 100644 --- a/qcsrc/menu/xonotic/dialog_hudpanel_timer.c +++ b/qcsrc/menu/xonotic/dialog_hudpanel_timer.c @@ -1,7 +1,7 @@ #ifdef INTERFACE CLASS(XonoticHUDTimerDialog) EXTENDS(XonoticRootDialog) METHOD(XonoticHUDTimerDialog, fill, void(entity)) - ATTRIB(XonoticHUDTimerDialog, title, string, "Timer Panel") + ATTRIB(XonoticHUDTimerDialog, title, string, _("Timer Panel")) ATTRIB(XonoticHUDTimerDialog, color, vector, SKINCOLOR_DIALOG_TEAMSELECT) ATTRIB(XonoticHUDTimerDialog, intendedWidth, float, 0.4) ATTRIB(XonoticHUDTimerDialog, rows, float, 15) @@ -15,66 +15,13 @@ void XonoticHUDTimerDialog_fill(entity me) { entity e; string panelname = "timer"; - float i; + + DIALOG_HUDPANEL_COMMON(); me.TR(me); - me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "hud_panel_timer", "Enable panel")); - me.TR(me); - me.TD(me, 1, 1.4, e = makeXonoticTextLabel(0, "Background:")); - me.TD(me, 1, 1.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg")))); - e.addValue(e, "Default", ""); - e.addValue(e, "Disable", "0"); - e.addValue(e, strzone(strcat("border_", panelname)), strzone(strcat("border_", panelname))); - e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Color:")); - me.TD(me, 2, 2.4, e = makeXonoticColorpickerString(strzone(strcat("hud_panel_", panelname, "_bg_color")), "hud_panel_bg_color")); - setDependentStringNotEqual(e, strzone(strcat("hud_panel_", panelname, "_bg_color")), ""); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticCheckBoxString("", "1 1 1", strzone(strcat("hud_panel_", panelname, "_bg_color")), "Use default")); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Border size:")); - me.TD(me, 1, 2.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg_border")))); - e.addValue(e, "Default", ""); - e.addValue(e, "Disable", "0"); - for(i = 1; i <= 10; ++i) - e.addValue(e, strzone(ftos_decimals(i * 2, 0)), strzone(ftos(i * 2))); - e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Alpha:")); - me.TD(me, 1, 2.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg_alpha")))); - e.addValue(e, "Default", ""); - for(i = 1; i <= 10; ++i) - e.addValue(e, strzone(ftos_decimals(i/10, 1)), strzone(ftos(i/10))); - e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Team Color:")); - me.TD(me, 1, 2.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg_color_team")))); - e.addValue(e, "Default", ""); - e.addValue(e, "Disable", "0"); - for(i = 1; i <= 10; ++i) - e.addValue(e, strzone(ftos_decimals(i/10, 1)), strzone(ftos(i/10))); - e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TDempty(me, 0.4); - me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "hud_configure_teamcolorforced", "Test the team color in HUD configure mode")); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Padding:")); - me.TD(me, 1, 2.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg_padding")))); - e.addValue(e, "Default", ""); - for(i = 0; i <= 10; ++i) - e.addValue(e, strzone(ftos_decimals(i - 5, 0)), strzone(ftos(i - 5))); - e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TD(me, 1, 2, e = makeXonoticTextLabel(0, "Timer:")); + me.TD(me, 1, 2, e = makeXonoticTextLabel(0, _("Timer:"))); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "hud_panel_timer_increment", "Show elapsed time")); + me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "hud_panel_timer_increment", _("Show elapsed time"))); } #endif diff --git a/qcsrc/menu/xonotic/dialog_hudpanel_vote.c b/qcsrc/menu/xonotic/dialog_hudpanel_vote.c index b5f5b6e27b..d3d35c22a4 100644 --- a/qcsrc/menu/xonotic/dialog_hudpanel_vote.c +++ b/qcsrc/menu/xonotic/dialog_hudpanel_vote.c @@ -1,7 +1,7 @@ #ifdef INTERFACE CLASS(XonoticHUDVoteDialog) EXTENDS(XonoticRootDialog) METHOD(XonoticHUDVoteDialog, fill, void(entity)) - ATTRIB(XonoticHUDVoteDialog, title, string, "Vote Panel") + ATTRIB(XonoticHUDVoteDialog, title, string, _("Vote Panel")) ATTRIB(XonoticHUDVoteDialog, color, vector, SKINCOLOR_DIALOG_TEAMSELECT) ATTRIB(XonoticHUDVoteDialog, intendedWidth, float, 0.4) ATTRIB(XonoticHUDVoteDialog, rows, float, 15) @@ -15,64 +15,11 @@ void XonoticHUDVoteDialog_fill(entity me) { entity e; string panelname = "vote"; - float i; + + DIALOG_HUDPANEL_COMMON(); me.TR(me); - me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "hud_panel_vote", "Enable panel")); - me.TR(me); - me.TD(me, 1, 1.4, e = makeXonoticTextLabel(0, "Background:")); - me.TD(me, 1, 1.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg")))); - e.addValue(e, "Default", ""); - e.addValue(e, "Disable", "0"); - e.addValue(e, strzone(strcat("border_", panelname)), strzone(strcat("border_", panelname))); - e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Color:")); - me.TD(me, 2, 2.4, e = makeXonoticColorpickerString(strzone(strcat("hud_panel_", panelname, "_bg_color")), "hud_panel_bg_color")); - setDependentStringNotEqual(e, strzone(strcat("hud_panel_", panelname, "_bg_color")), ""); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticCheckBoxString("", "1 1 1", strzone(strcat("hud_panel_", panelname, "_bg_color")), "Use default")); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Border size:")); - me.TD(me, 1, 2.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg_border")))); - e.addValue(e, "Default", ""); - e.addValue(e, "Disable", "0"); - for(i = 1; i <= 10; ++i) - e.addValue(e, strzone(ftos_decimals(i * 2, 0)), strzone(ftos(i * 2))); - e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Alpha:")); - me.TD(me, 1, 2.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg_alpha")))); - e.addValue(e, "Default", ""); - for(i = 1; i <= 10; ++i) - e.addValue(e, strzone(ftos_decimals(i/10, 1)), strzone(ftos(i/10))); - e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Team Color:")); - me.TD(me, 1, 2.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg_color_team")))); - e.addValue(e, "Default", ""); - e.addValue(e, "Disable", "0"); - for(i = 1; i <= 10; ++i) - e.addValue(e, strzone(ftos_decimals(i/10, 1)), strzone(ftos(i/10))); - e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TDempty(me, 0.4); - me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "hud_configure_teamcolorforced", "Test the team color in HUD configure mode")); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Padding:")); - me.TD(me, 1, 2.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg_padding")))); - e.addValue(e, "Default", ""); - for(i = 0; i <= 10; ++i) - e.addValue(e, strzone(ftos_decimals(i - 5, 0)), strzone(ftos(i - 5))); - e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TD(me, 1, 1.4, e = makeXonoticTextLabel(0, "Alpha after voting:")); + me.TD(me, 1, 1.4, e = makeXonoticTextLabel(0, _("Alpha after voting:"))); me.TD(me, 1, 2.6, e = makeXonoticSlider(0.1, 1, 0.1, "hud_panel_vote_alreadyvoted_alpha")); } #endif diff --git a/qcsrc/menu/xonotic/dialog_hudpanel_weapons.c b/qcsrc/menu/xonotic/dialog_hudpanel_weapons.c index ad3d080415..394ec33238 100644 --- a/qcsrc/menu/xonotic/dialog_hudpanel_weapons.c +++ b/qcsrc/menu/xonotic/dialog_hudpanel_weapons.c @@ -1,7 +1,7 @@ #ifdef INTERFACE CLASS(XonoticHUDWeaponsDialog) EXTENDS(XonoticRootDialog) METHOD(XonoticHUDWeaponsDialog, fill, void(entity)) - ATTRIB(XonoticHUDWeaponsDialog, title, string, "Weapons Panel") + ATTRIB(XonoticHUDWeaponsDialog, title, string, _("Weapons Panel")) ATTRIB(XonoticHUDWeaponsDialog, color, vector, SKINCOLOR_DIALOG_TEAMSELECT) ATTRIB(XonoticHUDWeaponsDialog, intendedWidth, float, 0.4) ATTRIB(XonoticHUDWeaponsDialog, rows, float, 17) @@ -17,98 +17,46 @@ void XonoticHUDWeaponsDialog_fill(entity me) string panelname = "weapons"; float i; - me.TR(me); - me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "hud_panel_weapons", "Enable panel")); - me.TR(me); - me.TD(me, 1, 1.4, e = makeXonoticTextLabel(0, "Background:")); - me.TD(me, 1, 1.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg")))); - e.addValue(e, "Default", ""); - e.addValue(e, "Disable", "0"); - e.addValue(e, strzone(strcat("border_", panelname)), strzone(strcat("border_", panelname))); - e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Color:")); - me.TD(me, 2, 2.4, e = makeXonoticColorpickerString(strzone(strcat("hud_panel_", panelname, "_bg_color")), "hud_panel_bg_color")); - setDependentStringNotEqual(e, strzone(strcat("hud_panel_", panelname, "_bg_color")), ""); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticCheckBoxString("", cvar_string("hud_panel_bg_color"), strzone(strcat("hud_panel_", panelname, "_bg_color")), "Use default")); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Border size:")); - me.TD(me, 1, 2.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg_border")))); - e.addValue(e, "Default", ""); - e.addValue(e, "Disable", "0"); - for(i = 1; i <= 10; ++i) - e.addValue(e, strzone(ftos_decimals(i * 2, 0)), strzone(ftos(i * 2))); - e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Alpha:")); - me.TD(me, 1, 2.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg_alpha")))); - e.addValue(e, "Default", ""); - for(i = 1; i <= 10; ++i) - e.addValue(e, strzone(ftos_decimals(i/10, 1)), strzone(ftos(i/10))); - e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Team Color:")); - me.TD(me, 1, 2.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg_color_team")))); - e.addValue(e, "Default", ""); - e.addValue(e, "Disable", "0"); - for(i = 1; i <= 10; ++i) - e.addValue(e, strzone(ftos_decimals(i/10, 1)), strzone(ftos(i/10))); - e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TDempty(me, 0.4); - me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "hud_configure_teamcolorforced", "Test the team color in HUD configure mode")); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Padding:")); - me.TD(me, 1, 2.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg_padding")))); - e.addValue(e, "Default", ""); - for(i = 0; i <= 10; ++i) - e.addValue(e, strzone(ftos_decimals(i - 5, 0)), strzone(ftos(i - 5))); - e.configureXonoticTextSliderValues(e); + DIALOG_HUDPANEL_COMMON(); + me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Fade out after:")); + me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, _("Fade out after:"))); me.TD(me, 1, 2.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_timeout")))); - e.addValue(e, "Never", "0"); + e.addValue(e, _("Never"), "0"); for(i = 1; i <= 10; ++i) - e.addValue(e, strzone(strcat(ftos_decimals(i, 0), "s")), strzone(ftos(i))); + e.addValue(e, strzone(sprintf(_("%ds"), i)), strzone(ftos(i))); e.configureXonoticTextSliderValues(e); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 1.4, e = makeXonoticTextLabel(0, "Fade effect:")); - me.TD(me, 1, 0.8, e = makeXonoticRadioButton(3, "hud_panel_weapons_timeout_effect", "0", "None")); + me.TD(me, 1, 1.4, e = makeXonoticTextLabel(0, _("Fade effect:"))); + me.TD(me, 1, 0.8, e = makeXonoticRadioButton(3, "hud_panel_weapons_timeout_effect", "0", ZCTX(_("EF^None")))); setDependentStringNotEqual(e, strzone(strcat("hud_panel_", panelname, "_timeout")), "0"); - me.TD(me, 1, 0.8, e = makeXonoticRadioButton(3, "hud_panel_weapons_timeout_effect", "1", "Slide")); + me.TD(me, 1, 0.8, e = makeXonoticRadioButton(3, "hud_panel_weapons_timeout_effect", "1", _("Slide"))); setDependentStringNotEqual(e, strzone(strcat("hud_panel_", panelname, "_timeout")), "0"); - me.TD(me, 1, 0.8, e = makeXonoticRadioButton(3, "hud_panel_weapons_timeout_effect", "2", "Alpha")); + me.TD(me, 1, 0.8, e = makeXonoticRadioButton(3, "hud_panel_weapons_timeout_effect", "2", _("Alpha"))); setDependentStringNotEqual(e, strzone(strcat("hud_panel_", panelname, "_timeout")), "0"); me.TR(me); - me.TD(me, 1, 2, e = makeXonoticTextLabel(0, "Weapon icons:")); + me.TD(me, 1, 2, e = makeXonoticTextLabel(0, _("Weapon icons:"))); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 1.4, e = makeXonoticTextLabel(0, "Show weapon ID as:")); - me.TD(me, 1, 0.8, e = makeXonoticRadioButton(2, "hud_panel_weapons_label", "0", "None")); - me.TD(me, 1, 0.8, e = makeXonoticRadioButton(2, "hud_panel_weapons_label", "1", "Number")); - me.TD(me, 1, 0.8, e = makeXonoticRadioButton(2, "hud_panel_weapons_label", "2", "Bind")); + me.TD(me, 1, 1.4, e = makeXonoticTextLabel(0, _("Show weapon ID as:"))); + me.TD(me, 1, 0.8, e = makeXonoticRadioButton(2, "hud_panel_weapons_label", "0", ZCTX(_("SHOWAS^None")))); + me.TD(me, 1, 0.8, e = makeXonoticRadioButton(2, "hud_panel_weapons_label", "1", _("Number"))); + me.TD(me, 1, 0.8, e = makeXonoticRadioButton(2, "hud_panel_weapons_label", "2", _("Bind"))); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 2, e = makeXonoticCheckBox(0, "hud_panel_weapons_accuracy", "Show Accuracy")); - me.TD(me, 1, 2, e = makeXonoticCheckBox(0, "hud_panel_weapons_ammo", "Show Ammo")); + me.TD(me, 1, 2, e = makeXonoticCheckBox(0, "hud_panel_weapons_accuracy", _("Show Accuracy"))); + me.TD(me, 1, 2, e = makeXonoticCheckBox(0, "hud_panel_weapons_ammo", _("Show Ammo"))); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Ammo bar color:")); + me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, _("Ammo bar color:"))); me.TD(me, 2, 2.4, e = makeXonoticColorpickerString("hud_panel_weapons_ammo_color", "hud_panel_weapons_ammo_color")); setDependent(e, "hud_panel_weapons_ammo", 1, 1); me.TR(me); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 1.4, e = makeXonoticTextLabel(0, "Ammo bar alpha:")); + me.TD(me, 1, 1.4, e = makeXonoticTextLabel(0, _("Ammo bar alpha:"))); me.TD(me, 1, 2.6, e = makeXonoticSlider(0.1, 1, 0.1, "hud_panel_weapons_ammo_alpha")); setDependent(e, "hud_panel_weapons_ammo", 1, 1); } diff --git a/qcsrc/menu/xonotic/dialog_hudsetup_exit.c b/qcsrc/menu/xonotic/dialog_hudsetup_exit.c index 751b3cf95c..e449fa5d48 100644 --- a/qcsrc/menu/xonotic/dialog_hudsetup_exit.c +++ b/qcsrc/menu/xonotic/dialog_hudsetup_exit.c @@ -1,7 +1,7 @@ #ifdef INTERFACE CLASS(XonoticHUDExitDialog) EXTENDS(XonoticRootDialog) METHOD(XonoticHUDExitDialog, fill, void(entity)) - ATTRIB(XonoticHUDExitDialog, title, string, "Panel HUD Setup") + ATTRIB(XonoticHUDExitDialog, title, string, _("Panel HUD Setup")) ATTRIB(XonoticHUDExitDialog, color, vector, SKINCOLOR_DIALOG_TEAMSELECT) ATTRIB(XonoticHUDExitDialog, intendedWidth, float, 0.4) ATTRIB(XonoticHUDExitDialog, rows, float, 18) @@ -18,95 +18,95 @@ void XonoticHUDExitDialog_fill(entity me) float i; me.TR(me); - me.TD(me, 1, 4, makeXonoticTextLabel(0, "Panel background defaults:")); + me.TD(me, 1, 4, makeXonoticTextLabel(0, _("Panel background defaults:"))); me.TR(me); me.TD(me, 1, 1.4, e = makeXonoticTextLabel(0, "Background:")); - me.TD(me, 1, 1.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_bg")))); - e.addValue(e, "Disable", "0"); - e.addValue(e, "border_default", "border_default"); + me.TD(me, 1, 2.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_bg")))); + e.addValue(e, _("Disable"), "0"); + e.addValue(e, "border_default", "border_default"); // this is a file name! e.configureXonoticTextSliderValues(e); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Color:")); - me.TD(me, 2, 2.4, e = makeXonoticColorpickerString("hud_panel_bg_color", "hud_panel_bg_color")); + me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, _("Color:"))); + me.TD(me, 2, 2.6, e = makeXonoticColorpickerString("hud_panel_bg_color", "hud_panel_bg_color")); me.TR(me); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Border size:")); + me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, _("Border size:"))); me.TD(me, 1, 2.6, e = makeXonoticTextSlider("hud_panel_bg_border")); - e.addValue(e, "Disable", "0"); + e.addValue(e, _("Disable"), "0"); for(i = 1; i <= 10; ++i) e.addValue(e, strzone(ftos_decimals(i * 2, 0)), strzone(ftos(i * 2))); e.configureXonoticTextSliderValues(e); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Alpha:")); + me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, _("Alpha:"))); me.TD(me, 1, 2.6, e = makeXonoticTextSlider("hud_panel_bg_alpha")); for(i = 1; i <= 10; ++i) e.addValue(e, strzone(ftos_decimals(i/10, 1)), strzone(ftos(i/10))); e.configureXonoticTextSliderValues(e); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Team color:")); + me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, _("Team color:"))); me.TD(me, 1, 2.6, e = makeXonoticTextSlider("hud_panel_bg_color_team")); - e.addValue(e, "Disable", "0"); + e.addValue(e, _("Disable"), "0"); for(i = 1; i <= 10; ++i) e.addValue(e, strzone(ftos_decimals(i/10, 1)), strzone(ftos(i/10))); e.configureXonoticTextSliderValues(e); me.TR(me); me.TDempty(me, 0.4); - me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "hud_configure_teamcolorforced", "Test the team color in HUD configure mode")); + me.TD(me, 1, 3.6, e = makeXonoticCheckBox(0, "hud_configure_teamcolorforced", _("Test team color in configure mode"))); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Padding:")); + me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, _("Padding:"))); me.TD(me, 1, 2.6, e = makeXonoticTextSlider("hud_panel_bg_padding")); for(i = 0; i <= 10; ++i) e.addValue(e, strzone(ftos_decimals(i - 5, 0)), strzone(ftos(i - 5))); e.configureXonoticTextSliderValues(e); me.TR(me); - me.TD(me, 1, 1.4, e = makeXonoticTextLabel(0, "HUD Dock:")); + me.TD(me, 1, 1.4, e = makeXonoticTextLabel(0, _("HUD Dock:"))); me.TD(me, 1, 2.6, e = makeXonoticTextSlider("hud_dock")); - e.addValue(e, "Disable", "0"); - e.addValue(e, "Small", "dock_small"); - e.addValue(e, "Medium", "dock_medium"); - e.addValue(e, "Large", "dock_large"); + e.addValue(e, ZCTX(_("DOCK^Disabled")), "0"); + e.addValue(e, ZCTX(_("DOCK^Small")), "dock_small"); + e.addValue(e, ZCTX(_("DOCK^Medium")), "dock_medium"); + e.addValue(e, ZCTX(_("DOCK^Large")), "dock_large"); e.configureXonoticTextSliderValues(e); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Color:")); - me.TD(me, 2, 2.4, e = makeXonoticColorpickerString("hud_dock_color", "hud_dock_color")); + me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, _("Color:"))); + me.TD(me, 2, 2.6, e = makeXonoticColorpickerString("hud_dock_color", "hud_dock_color")); me.TR(me); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Alpha:")); + me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, _("Alpha:"))); me.TD(me, 1, 2.6, e = makeXonoticTextSlider("hud_dock_alpha")); for(i = 1; i <= 10; ++i) e.addValue(e, strzone(ftos_decimals(i/10, 1)), strzone(ftos(i/10))); e.configureXonoticTextSliderValues(e); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Team color:")); + me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, _("Team color:"))); me.TD(me, 1, 2.6, e = makeXonoticTextSlider("hud_dock_color_team")); - e.addValue(e, "Disable", "0"); + e.addValue(e, _("Disable"), "0"); for(i = 1; i <= 10; ++i) e.addValue(e, strzone(ftos_decimals(i/10, 1)), strzone(ftos(i/10))); e.configureXonoticTextSliderValues(e); me.TR(me); - me.TD(me, 1, 4, makeXonoticTextLabel(0, "Grid settings:")); + me.TD(me, 1, 4, makeXonoticTextLabel(0, _("Grid settings:"))); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "hud_configure_grid", "Snap panels to grid")); + me.TD(me, 1, 3.8, e = makeXonoticCheckBox(0, "hud_configure_grid", _("Snap panels to grid"))); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Grid size:")); - me.TD(me, 1, 0.2, e = makeXonoticTextLabel(0, "X:")); + me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, _("Grid size:"))); + me.TD(me, 1, 0.2, e = makeXonoticTextLabel(0, _("X:"))); me.TD(me, 1, 1.1, e = makeXonoticTextSlider("hud_configure_grid_xsize")); for(i = 1; i <= 14; ++i) e.addValue(e, strzone(ftos_decimals(i/200, 3)), strzone(ftos(i/200))); e.configureXonoticTextSliderValues(e); setDependent(e, "hud_configure_grid", 1, 1); - me.TD(me, 1, 0.2, e = makeXonoticTextLabel(0, "Y:")); + me.TD(me, 1, 0.2, e = makeXonoticTextLabel(0, _("Y:"))); me.TD(me, 1, 1.1, e = makeXonoticTextSlider("hud_configure_grid_ysize")); for(i = 1; i <= 14; ++i) e.addValue(e, strzone(ftos_decimals(i/200, 3)), strzone(ftos(i/200))); @@ -114,6 +114,6 @@ void XonoticHUDExitDialog_fill(entity me) setDependent(e, "hud_configure_grid", 1, 1); me.gotoRC(me, me.rows - 1, 0); - me.TD(me, 1, me.columns, e = makeXonoticCommandButton("Exit setup", '0 0 0', "_hud_configure 0", 1)); + me.TD(me, 1, me.columns, e = makeXonoticCommandButton(_("Exit setup"), '0 0 0', "_hud_configure 0", 1)); } #endif diff --git a/qcsrc/menu/xonotic/dialog_multiplayer.c b/qcsrc/menu/xonotic/dialog_multiplayer.c index e755710c5b..2492581d06 100644 --- a/qcsrc/menu/xonotic/dialog_multiplayer.c +++ b/qcsrc/menu/xonotic/dialog_multiplayer.c @@ -1,7 +1,7 @@ #ifdef INTERFACE CLASS(XonoticMultiplayerDialog) EXTENDS(XonoticDialog) METHOD(XonoticMultiplayerDialog, fill, void(entity)) - ATTRIB(XonoticMultiplayerDialog, title, string, "Multiplayer") + ATTRIB(XonoticMultiplayerDialog, title, string, _("Multiplayer")) ATTRIB(XonoticMultiplayerDialog, color, vector, SKINCOLOR_DIALOG_MULTIPLAYER) ATTRIB(XonoticMultiplayerDialog, intendedWidth, float, 0.96) ATTRIB(XonoticMultiplayerDialog, rows, float, 24) @@ -15,14 +15,10 @@ void XonoticMultiplayerDialog_fill(entity me) entity mc, e; mc = makeXonoticTabController(me.rows - 2); me.TR(me); - me.TD(me, 1, 1, e = mc.makeTabButton(mc, "Servers", makeXonoticServerListTab())); - setDependentStringNotEqual(e, "_cl_name", "Player"); - me.TD(me, 1, 1, e = mc.makeTabButton(mc, "Create", makeXonoticServerCreateTab())); - setDependentStringNotEqual(e, "_cl_name", "Player"); - me.TD(me, 1, 1, mc.makeTabButton(mc, "Demos", makeXonoticDemoBrowserTab())); - me.TD(me, 1, 1, e = mc.makeTabButton(mc, "Player Setup", makeXonoticPlayerSettingsTab())); - if(cvar_string("_cl_name") == "Player") - e.onClick(e, e.onClickEntity); // lol animation + me.TD(me, 1, 1, e = mc.makeTabButton(mc, _("Servers"), makeXonoticServerListTab())); + me.TD(me, 1, 1, e = mc.makeTabButton(mc, _("Create"), makeXonoticServerCreateTab())); + me.TD(me, 1, 1, mc.makeTabButton(mc, _("Demos"), makeXonoticDemoBrowserTab())); + me.TD(me, 1, 1, e = mc.makeTabButton(mc, _("Player Setup"), makeXonoticPlayerSettingsTab())); me.TR(me); me.TR(me); diff --git a/qcsrc/menu/xonotic/dialog_multiplayer_create.c b/qcsrc/menu/xonotic/dialog_multiplayer_create.c index bf3e58dd7b..2d9689f644 100644 --- a/qcsrc/menu/xonotic/dialog_multiplayer_create.c +++ b/qcsrc/menu/xonotic/dialog_multiplayer_create.c @@ -2,7 +2,7 @@ CLASS(XonoticServerCreateTab) EXTENDS(XonoticTab) METHOD(XonoticServerCreateTab, fill, void(entity)) METHOD(XonoticServerCreateTab, gameTypeChangeNotify, void(entity)) - ATTRIB(XonoticServerCreateTab, title, string, "Create") + ATTRIB(XonoticServerCreateTab, title, string, _("Create")) ATTRIB(XonoticServerCreateTab, intendedWidth, float, 0.9) ATTRIB(XonoticServerCreateTab, rows, float, 22) ATTRIB(XonoticServerCreateTab, columns, float, 6.5) @@ -32,7 +32,7 @@ void XonoticServerCreateTab_fill(entity me) float n; me.TR(me); - me.TD(me, 1, 3, e = makeXonoticTextLabel(0, "Game type:")); + me.TD(me, 1, 3, e = makeXonoticTextLabel(0, _("Game type:"))); me.TR(me); me.TD(me, 9, 3, e = makeXonoticGametypeList()); me.TR(me); @@ -44,49 +44,49 @@ void XonoticServerCreateTab_fill(entity me) me.TR(me); me.TR(me); me.TR(me); - me.TD(me, 1, 3, e = makeXonoticTextLabel(0, "Match settings:")); + me.TD(me, 1, 3, e = makeXonoticTextLabel(0, _("Match settings:"))); me.TR(me); me.sliderTimelimit = makeXonoticSlider(1.0, 60.0, 0.5, "timelimit_override"); - me.TD(me, 1, 1, e = makeXonoticSliderCheckBox(0, 1, me.sliderTimelimit, "Time limit:")); + me.TD(me, 1, 1, e = makeXonoticSliderCheckBox(0, 1, me.sliderTimelimit, _("Time limit:"))); me.TD(me, 1, 2, me.sliderTimelimit); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 2.8, e = makeXonoticSliderCheckBox(-1, 0, me.sliderTimelimit, "Use map specified default")); + me.TD(me, 1, 2.8, e = makeXonoticSliderCheckBox(-1, 0, me.sliderTimelimit, _("Use map specified default"))); me.TR(me); me.sliderFraglimit = makeXonoticSlider(1.0, 2000.0, 5, "fraglimit_override"); - me.TD(me, 1, 1, e = makeXonoticSliderCheckBox(0, 1, me.sliderFraglimit, "Point limit:")); + me.TD(me, 1, 1, e = makeXonoticSliderCheckBox(0, 1, me.sliderFraglimit, _("Point limit:"))); me.checkboxFraglimit = e; me.TD(me, 1, 2, me.sliderFraglimit); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 2.8, e = makeXonoticSliderCheckBox(-1, 0, me.sliderFraglimit, "Use map specified default")); + me.TD(me, 1, 2.8, e = makeXonoticSliderCheckBox(-1, 0, me.sliderFraglimit, _("Use map specified default"))); me.checkboxFraglimitMapinfo = e; me.TR(me); - me.TD(me, 1, 1, e = makeXonoticTextLabel(0, "Player slots:")); + me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Player slots:"))); me.TD(me, 1, 2, makeXonoticSlider(1, 32, 1, "menu_maxplayers")); me.TR(me); - me.TD(me, 1, 1, e = makeXonoticTextLabel(0, "Number of bots:")); + me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Number of bots:"))); me.TD(me, 1, 2, makeXonoticSlider(0, 9, 1, "bot_number")); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 0.8, e = makeXonoticTextLabel(0, "Bot skill:")); + me.TD(me, 1, 0.8, e = makeXonoticTextLabel(0, _("Bot skill:"))); setDependent(e, "bot_number", 0, -1); me.TD(me, 1, 2, e = makeXonoticTextSlider("skill")); - e.addValue(e, "Botlike", "0"); - e.addValue(e, "Beginner", "1"); - e.addValue(e, "You will win", "2"); - e.addValue(e, "You can win", "3"); - e.addValue(e, "You might win", "4"); - e.addValue(e, "Advanced", "5"); - e.addValue(e, "Expert", "6"); - e.addValue(e, "Pro", "7"); - e.addValue(e, "Assassin", "8"); - e.addValue(e, "Unhuman", "9"); - e.addValue(e, "Godlike", "10"); + e.addValue(e, _("Botlike"), "0"); + e.addValue(e, _("Beginner"), "1"); + e.addValue(e, _("You will win"), "2"); + e.addValue(e, _("You can win"), "3"); + e.addValue(e, _("You might win"), "4"); + e.addValue(e, _("Advanced"), "5"); + e.addValue(e, _("Expert"), "6"); + e.addValue(e, _("Pro"), "7"); + e.addValue(e, _("Assassin"), "8"); + e.addValue(e, _("Unhuman"), "9"); + e.addValue(e, _("Godlike"), "10"); e.configureXonoticTextSliderValues(e); setDependent(e, "bot_number", 0, -1); me.TR(me); - me.TD(me, 1, 1, e = makeXonoticButton("Mutators...", '0 0 0')); + me.TD(me, 1, 1, e = makeXonoticButton(_("Mutators..."), '0 0 0')); e.onClick = DialogOpenButton_Click; e.onClickEntity = main.mutatorsDialog; main.mutatorsDialog.refilterEntity = me.mapListBox; @@ -95,29 +95,29 @@ void XonoticServerCreateTab_fill(entity me) e0.allowCut = 1; me.TR(me); me.TDempty(me, 0.5); - me.TD(me, 1, 2, e = makeXonoticButton("Advanced settings...", '0 0 0')); + me.TD(me, 1, 2, e = makeXonoticButton(_("Advanced settings..."), '0 0 0')); e.onClick = DialogOpenButton_Click; e.onClickEntity = main.advancedDialog; main.advancedDialog.refilterEntity = me.mapListBox; me.gotoRC(me, 0, 3.5); me.setFirstColumn(me, me.currentColumn); me.mapListBox = makeXonoticMapList(); - me.TD(me, 1, 3, e = makeXonoticTextLabel(0, "Map list:")); + me.TD(me, 1, 3, e = makeXonoticTextLabel(0, _("Map list:"))); makeCallback(e, me.mapListBox, me.mapListBox.refilterCallback); me.TR(me); me.TD(me, me.rows - 4, 3, me.mapListBox); me.gotoRC(me, me.rows - 3, 3.5); me.TDempty(me, 0.25); - me.TD(me, 1, 1.125, e = makeXonoticButton("Select all", '0 0 0')); + me.TD(me, 1, 1.125, e = makeXonoticButton(_("Select all"), '0 0 0')); e.onClick = MapList_All; e.onClickEntity = me.mapListBox; - me.TD(me, 1, 1.125, e = makeXonoticButton("Select none", '0 0 0')); + me.TD(me, 1, 1.125, e = makeXonoticButton(_("Select none"), '0 0 0')); e.onClick = MapList_None; e.onClickEntity = me.mapListBox; me.TDempty(me, 0.25); me.gotoRC(me, me.rows - 1, 0); - me.TD(me, 1, me.columns, e = makeXonoticButton("Start Multiplayer!", '0 0 0')); + me.TD(me, 1, me.columns, e = makeXonoticButton(_("Start Multiplayer!"), '0 0 0')); e.onClick = MapList_LoadMap; e.onClickEntity = me.mapListBox; me.mapListBox.startButton = e; @@ -152,17 +152,17 @@ void XonoticServerCreateTab_gameTypeChangeNotify(entity me) l2 = me.checkboxFraglimitMapinfo; switch(gt) { - case MAPINFO_TYPE_CTF: GameType_ConfigureSliders(e, l, l2, "Capture limit:", 1, 20, 1, "capturelimit_override"); break; - case MAPINFO_TYPE_DOMINATION: GameType_ConfigureSliders(e, l, l2, "Point limit:", 50, 500, 10, "g_domination_point_limit"); break; - case MAPINFO_TYPE_KEYHUNT: GameType_ConfigureSliders(e, l, l2, "Point limit:", 200, 1500, 50, "g_keyhunt_point_limit"); break; - case MAPINFO_TYPE_RUNEMATCH: GameType_ConfigureSliders(e, l, l2, "Point limit:", 50, 500, 10, "g_runematch_point_limit"); break; - case MAPINFO_TYPE_LMS: GameType_ConfigureSliders(e, l, l2, "Lives:", 3, 50, 1, "g_lms_lives_override"); break; - case MAPINFO_TYPE_RACE: GameType_ConfigureSliders(e, l, l2, "Laps:", 1, 25, 1, "g_race_laps_limit"); break; - case MAPINFO_TYPE_NEXBALL: GameType_ConfigureSliders(e, l, l2, "Goals:", 1, 50, 1, "g_nexball_goallimit"); break; - case MAPINFO_TYPE_ASSAULT: GameType_ConfigureSliders(e, l, l2, "Point limit:", 50, 500, 10, ""); break; - case MAPINFO_TYPE_ONSLAUGHT: GameType_ConfigureSliders(e, l, l2, "Point limit:", 50, 500, 10, ""); break; - case MAPINFO_TYPE_CTS: GameType_ConfigureSliders(e, l, l2, "Point limit:", 50, 500, 10, ""); break; - default: GameType_ConfigureSliders(e, l, l2, "Frag limit:", 5, 100, 5, "fraglimit_override"); break; + case MAPINFO_TYPE_CTF: GameType_ConfigureSliders(e, l, l2, _("Capture limit:"), 1, 20, 1, "capturelimit_override"); break; + case MAPINFO_TYPE_DOMINATION: GameType_ConfigureSliders(e, l, l2, _("Point limit:"), 50, 500, 10, "g_domination_point_limit"); break; + case MAPINFO_TYPE_KEYHUNT: GameType_ConfigureSliders(e, l, l2, _("Point limit:"), 200, 1500, 50, "g_keyhunt_point_limit"); break; + case MAPINFO_TYPE_RUNEMATCH: GameType_ConfigureSliders(e, l, l2, _("Point limit:"), 50, 500, 10, "g_runematch_point_limit"); break; + case MAPINFO_TYPE_LMS: GameType_ConfigureSliders(e, l, l2, _("Lives:"), 3, 50, 1, "g_lms_lives_override"); break; + case MAPINFO_TYPE_RACE: GameType_ConfigureSliders(e, l, l2, _("Laps:"), 1, 25, 1, "g_race_laps_limit"); break; + case MAPINFO_TYPE_NEXBALL: GameType_ConfigureSliders(e, l, l2, _("Goals:"), 1, 50, 1, "g_nexball_goallimit"); break; + case MAPINFO_TYPE_ASSAULT: GameType_ConfigureSliders(e, l, l2, _("Point limit:"), 50, 500, 10, ""); break; + case MAPINFO_TYPE_ONSLAUGHT: GameType_ConfigureSliders(e, l, l2, _("Point limit:"), 50, 500, 10, ""); break; + case MAPINFO_TYPE_CTS: GameType_ConfigureSliders(e, l, l2, _("Point limit:"), 50, 500, 10, ""); break; + default: GameType_ConfigureSliders(e, l, l2, _("Frag limit:"), 5, 100, 5, "fraglimit_override"); break; } me.mapListBox.refilter(me.mapListBox); } diff --git a/qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c b/qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c index b2b68f18ec..226f346b64 100644 --- a/qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c +++ b/qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c @@ -3,7 +3,7 @@ CLASS(XonoticAdvancedDialog) EXTENDS(XonoticDialog) METHOD(XonoticAdvancedDialog, fill, void(entity)) METHOD(XonoticAdvancedDialog, showNotify, void(entity)) METHOD(XonoticAdvancedDialog, close, void(entity)) - ATTRIB(XonoticAdvancedDialog, title, string, "Advanced server settings") + ATTRIB(XonoticAdvancedDialog, title, string, _("Advanced server settings")) ATTRIB(XonoticAdvancedDialog, color, vector, SKINCOLOR_DIALOG_ADVANCED) ATTRIB(XonoticAdvancedDialog, intendedWidth, float, 0.5) ATTRIB(XonoticAdvancedDialog, rows, float, 17) @@ -22,39 +22,39 @@ void XonoticAdvancedDialog_fill(entity me) { entity e; me.TR(me); - me.TD(me, 1, 3, makeXonoticTextLabel(0, "Game settings:")); + me.TD(me, 1, 3, makeXonoticTextLabel(0, _("Game settings:"))); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 2.8, e = makeXonoticCheckBox(0, "sv_spectate", "Allow spectating")); + me.TD(me, 1, 2.8, e = makeXonoticCheckBox(0, "sv_spectate", _("Allow spectating"))); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Spawn shield:")); + me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, _("Spawn shield:"))); me.TD(me, 1, 1.6, e = makeXonoticSlider(0, 15, 0.5, "g_spawnshieldtime")); me.TR(me); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Game speed:")); + me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, _("Game speed:"))); me.TD(me, 1, 1.6, e = makeXonoticSlider(0.5, 2.0, 0.1, "slowmo")); me.TR(me); me.TR(me); - me.TD(me, 1, 3, makeXonoticTextLabel(0, "Teamplay settings:")); + me.TD(me, 1, 3, makeXonoticTextLabel(0, _("Teamplay settings:"))); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Friendly fire scale:")); + me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, _("Friendly fire scale:"))); me.TD(me, 1, 1.6, e = makeXonoticSlider(0, 1.0, 0.05, "g_friendlyfire")); me.TR(me); me.TDempty(me, 0.4); - me.TD(me, 1, 2.6, e = makeXonoticCheckBox(0, "g_friendlyfire_virtual", "Virtual friendly fire (effect only)")); + me.TD(me, 1, 2.6, e = makeXonoticCheckBox(0, "g_friendlyfire_virtual", _("Virtual friendly fire (effect only)"))); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Friendly fire penalty:")); + me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, _("Friendly fire penalty:"))); me.TD(me, 1, 1.6, e = makeXonoticSlider(0, 1.0, 0.05, "g_mirrordamage")); me.TR(me); me.TDempty(me, 0.4); - me.TD(me, 1, 2.6, e = makeXonoticCheckBox(0, "g_mirrordamage_virtual", "Virtual penalty (effect only)")); + me.TD(me, 1, 2.6, e = makeXonoticCheckBox(0, "g_mirrordamage_virtual", _("Virtual penalty (effect only)"))); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Teams:")); + me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, _("Teams:"))); me.TD(me, 1, 1.6, e = makeXonoticTextSlider("g_tdm_teams_override g_domination_teams_override g_keyhunt_teams_override")); e.addValue(e, "Default", "0"); e.addValue(e, "2 teams", "2"); @@ -63,23 +63,23 @@ void XonoticAdvancedDialog_fill(entity me) e.configureXonoticTextSliderValues(e); me.TR(me); me.TR(me); - me.TD(me, 1, 1, e = makeXonoticTextLabel(0, "Map voting:")); + me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Map voting:"))); me.TD(me, 1, 2, e = makeXonoticTextSlider("g_maplist_votable")); - e.addValue(e, "No voting", "0"); - e.addValue(e, "2 choices", "2"); - e.addValue(e, "3 choices", "3"); - e.addValue(e, "4 choices", "4"); - e.addValue(e, "5 choices", "5"); - e.addValue(e, "6 choices", "6"); - e.addValue(e, "7 choices", "7"); - e.addValue(e, "8 choices", "8"); - e.addValue(e, "9 choices", "9"); + e.addValue(e, _("No voting"), "0"); + e.addValue(e, _("2 choices"), "2"); + e.addValue(e, _("3 choices"), "3"); + e.addValue(e, _("4 choices"), "4"); + e.addValue(e, _("5 choices"), "5"); + e.addValue(e, _("6 choices"), "6"); + e.addValue(e, _("7 choices"), "7"); + e.addValue(e, _("8 choices"), "8"); + e.addValue(e, _("9 choices"), "9"); e.configureXonoticTextSliderValues(e); me.TR(me); - me.TD(me, 1, 3, e = makeXonoticCheckBoxEx(0.5, 0, "sv_vote_simple_majority_factor", "Simple majority wins vcall")); + me.TD(me, 1, 3, e = makeXonoticCheckBoxEx(0.5, 0, "sv_vote_simple_majority_factor", _("Simple majority wins vcall"))); me.gotoRC(me, me.rows - 1, 0); - me.TD(me, 1, me.columns, e = makeXonoticButton("OK", '0 0 0')); + me.TD(me, 1, me.columns, e = makeXonoticButton(_("OK"), '0 0 0')); e.onClick = Dialog_Close; e.onClickEntity = me; } diff --git a/qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c b/qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c index 2f2f5a2558..677161b637 100644 --- a/qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c +++ b/qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c @@ -2,7 +2,7 @@ CLASS(XonoticMapInfoDialog) EXTENDS(XonoticDialog) METHOD(XonoticMapInfoDialog, fill, void(entity)) METHOD(XonoticMapInfoDialog, loadMapInfo, void(entity, float, entity)) - ATTRIB(XonoticMapInfoDialog, title, string, "Map Information") + ATTRIB(XonoticMapInfoDialog, title, string, _("Map Information")) ATTRIB(XonoticMapInfoDialog, color, vector, SKINCOLOR_DIALOG_MAPINFO) ATTRIB(XonoticMapInfoDialog, intendedWidth, float, 1.0) ATTRIB(XonoticMapInfoDialog, rows, float, 12) @@ -46,7 +46,7 @@ void XonoticMapInfoDialog_loadMapInfo(entity me, float i, entity mlb) me.currentMapTitle = strzone(MapInfo_Map_title); me.currentMapAuthor = strzone(MapInfo_Map_author); me.currentMapDescription = strzone(MapInfo_Map_description); - me.currentMapFeaturesText = strzone((MapInfo_Map_supportedFeatures & MAPINFO_FEATURE_WEAPONS) ? "Full item placement" : "MinstaGib only"); + me.currentMapFeaturesText = strzone((MapInfo_Map_supportedFeatures & MAPINFO_FEATURE_WEAPONS) ? _("Full item placement") : _("MinstaGib only")); me.currentMapPreviewImage = strzone(strcat("/maps/", MapInfo_Map_bspname)); me.frame.setText(me.frame, me.currentMapBSPName); @@ -75,24 +75,24 @@ void XonoticMapInfoDialog_fill(entity me) me.previewImage = e; me.gotoRC(me, 0, 3.5); me.setFirstColumn(me, me.currentColumn); w = me.columns - me.currentColumn; - me.TD(me, 1, 1, e = makeXonoticTextLabel(0, "Title:")); + me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Title:"))); me.TD(me, 1, w-1, e = makeXonoticTextLabel(0, "")); e.colorL = SKINCOLOR_MAPLIST_TITLE; e.allowCut = 1; me.titleLabel = e; me.TR(me); - me.TD(me, 1, 1, e = makeXonoticTextLabel(0, "Author:")); + me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Author:"))); me.TD(me, 1, w-1, e = makeXonoticTextLabel(0, "")); e.colorL = SKINCOLOR_MAPLIST_AUTHOR; e.allowCut = 1; me.authorLabel = e; me.TR(me); - me.TD(me, 1, 1, e = makeXonoticTextLabel(0, "Features:")); + me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Features:"))); me.TD(me, 1, w-1, e = makeXonoticTextLabel(0, "")); e.allowCut = 1; me.featuresLabel = e; me.TR(me); - me.TD(me, 1, w, e = makeXonoticTextLabel(0, "Game types:")); + me.TD(me, 1, w, e = makeXonoticTextLabel(0, _("Game types:"))); n = ceil(GameType_GetCount() / (me.rows - 6)); @@ -116,10 +116,10 @@ void XonoticMapInfoDialog_fill(entity me) me.gotoRC(me, me.rows - 1, 0); me.TDempty(me, 0.5); - me.TD(me, 1, me.columns - 5.5, e = makeXonoticButton("Close", '0 0 0')); + me.TD(me, 1, me.columns - 5.5, e = makeXonoticButton(_("Close"), '0 0 0')); e.onClick = Dialog_Close; e.onClickEntity = me; - me.TD(me, 1, me.columns - 5.5, me.startButton = e = makeXonoticButton("Play", '0 0 0')); + me.TD(me, 1, me.columns - 5.5, me.startButton = e = makeXonoticButton(_("Play"), '0 0 0')); me.startButton.onClick = MapList_LoadMap; me.startButton.onClickEntity = NULL; // filled later } diff --git a/qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c b/qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c index 4390fb910e..640c28a348 100644 --- a/qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c +++ b/qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c @@ -4,7 +4,7 @@ CLASS(XonoticMutatorsDialog) EXTENDS(XonoticDialog) METHOD(XonoticMutatorsDialog, fill, void(entity)) METHOD(XonoticMutatorsDialog, showNotify, void(entity)) METHOD(XonoticMutatorsDialog, close, void(entity)) - ATTRIB(XonoticMutatorsDialog, title, string, "Mutators") + ATTRIB(XonoticMutatorsDialog, title, string, _("Mutators")) ATTRIB(XonoticMutatorsDialog, color, vector, SKINCOLOR_DIALOG_MUTATORS) ATTRIB(XonoticMutatorsDialog, intendedWidth, float, 0.9) ATTRIB(XonoticMutatorsDialog, rows, float, 17) @@ -30,9 +30,9 @@ string WeaponArenaString() if(s == "0") return ""; if(s == "all") - return "All Weapons Arena"; + return _("All Weapons Arena"); if(s == "most") - return "Most Weapons Arena"; + return _("Most Weapons Arena"); if(s == weaponarenastring_cvar) return weaponarenastring; if(weaponarenastring) @@ -53,7 +53,7 @@ string WeaponArenaString() s = strcat(s, " & ", e.message); } } - s = strcat(substring(s, 3, strlen(s) - 3), " Arena"); + s = sprintf(_("%s Arena"), substring(s, 3, strlen(s) - 3)); weaponarenastring = strzone(s); @@ -65,37 +65,37 @@ string XonoticMutatorsDialog_toString(entity me) string s; s = ""; if(cvar("g_dodging")) - s = strcat(s, ", Dodging"); + s = strcat(s, ", ", _("Dodging")); if(cvar("g_minstagib")) - s = strcat(s, ", MinstaGib"); + s = strcat(s, ", ", _("MinstaGib")); if(cvar("g_nix")) - s = strcat(s, ", NIX"); + s = strcat(s, ", ", _("NIX")); if(cvar("g_rocket_flying")) - s = strcat(s, ", Rocket Flying"); + s = strcat(s, ", ", _("Rocket Flying")); if(cvar_string("g_weaponarena") != "0") s = strcat(s, ", ", WeaponArenaString()); if(cvar("g_start_weapon_laser") == 0) - s = strcat(s, ", No start weapons"); + s = strcat(s, ", ", _("No start weapons")); if(cvar("sv_gravity") < 800) - s = strcat(s, ", Low gravity"); + s = strcat(s, ", ", _("Low gravity")); if(cvar("g_cloaked")) - s = strcat(s, ", Cloaked"); + s = strcat(s, ", ", _("Cloaked")); if(cvar("g_grappling_hook")) - s = strcat(s, ", Hook"); + s = strcat(s, ", ", _("Hook")); if(cvar("g_midair")) - s = strcat(s, ", Midair"); + s = strcat(s, ", ", _("Midair")); if(cvar("g_vampire")) - s = strcat(s, ", Vampire"); + s = strcat(s, ", ", _("Vampire")); if(cvar("g_pinata")) - s = strcat(s, ", Pinata"); + s = strcat(s, ", ", _("Piñata")); if(cvar("g_weapon_stay")) - s = strcat(s, ", Weapons stay"); + s = strcat(s, ", ", _("Weapons stay")); if(cvar("g_bloodloss") > 0) - s = strcat(s, ", Bloodloss"); + s = strcat(s, ", ", _("Blood loss")); if(cvar("g_jetpack")) - s = strcat(s, ", Jet pack"); + s = strcat(s, ", ", _("Jet pack")); if(s == "") - return "None"; + return ZCTX(_("MUT^None")); else return substring(s, 2, strlen(s) - 2); } @@ -161,23 +161,23 @@ void XonoticMutatorsDialog_fill(entity me) float i, j; string str, hstr; me.TR(me); - me.TD(me, 1, 2, makeXonoticTextLabel(0, "Gameplay mutators:")); + me.TD(me, 1, 2, makeXonoticTextLabel(0, _("Gameplay mutators:"))); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 2, e = makeXonoticCheckBox(0, "g_dodging", "Dodging")); + me.TD(me, 1, 2, e = makeXonoticCheckBox(0, "g_dodging", _("Dodging"))); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 2, e = makeXonoticCheckBox(0, "g_cloaked", "Cloaked")); + me.TD(me, 1, 2, e = makeXonoticCheckBox(0, "g_cloaked", _("Cloaked"))); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 2, e = makeXonoticCheckBox(0, "g_midair", "Midair")); + me.TD(me, 1, 2, e = makeXonoticCheckBox(0, "g_midair", _("Midair"))); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 2, e = makeXonoticCheckBox(0, "g_vampire", "Vampire")); + me.TD(me, 1, 2, e = makeXonoticCheckBox(0, "g_vampire", _("Vampire"))); me.TR(me); me.TDempty(me, 0.2); s = makeXonoticSlider(10, 50, 1, "g_bloodloss"); - me.TD(me, 1, 2, e = makeXonoticSliderCheckBox(0, 1, s, "Blood loss")); + me.TD(me, 1, 2, e = makeXonoticSliderCheckBox(0, 1, s, _("Blood loss"))); me.TR(me); me.TDempty(me, 0.4); me.TD(me, 1, 1.8, s); @@ -186,36 +186,36 @@ void XonoticMutatorsDialog_fill(entity me) s = makeXonoticSlider(80, 400, 8, "sv_gravity"); s.valueDigits = 0; s.valueDisplayMultiplier = 0.125; // show gravity in percent - me.TD(me, 1, 2, e = makeXonoticSliderCheckBox(800, 1, s, "Low gravity")); + me.TD(me, 1, 2, e = makeXonoticSliderCheckBox(800, 1, s, _("Low gravity"))); e.savedValue = 200; // good on silvercity me.TR(me); me.TDempty(me, 0.4); me.TD(me, 1, 1.8, s); me.TR(me); me.TR(me); - me.TD(me, 1, 2, makeXonoticTextLabel(0, "Weapon & item mutators:")); + me.TD(me, 1, 2, makeXonoticTextLabel(0, _("Weapon & item mutators:"))); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 2, e = makeXonoticCheckBox(0, "g_grappling_hook", "Grappling hook")); + me.TD(me, 1, 2, e = makeXonoticCheckBox(0, "g_grappling_hook", _("Grappling hook"))); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 2, e = makeXonoticCheckBox(0, "g_jetpack", "Jet pack")); + me.TD(me, 1, 2, e = makeXonoticCheckBox(0, "g_jetpack", _("Jet pack"))); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 2, e = makeXonoticCheckBox(0, "g_rocket_flying", "Rocket Flying")); + me.TD(me, 1, 2, e = makeXonoticCheckBox(0, "g_rocket_flying", _("Rocket Flying"))); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 2, e = makeXonoticCheckBox(0, "g_pinata", "Pinata")); + me.TD(me, 1, 2, e = makeXonoticCheckBox(0, "g_pinata", _("Piñata"))); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 2, e = makeXonoticCheckBoxEx(2, 0, "g_weapon_stay", "Weapons stay")); + me.TD(me, 1, 2, e = makeXonoticCheckBoxEx(2, 0, "g_weapon_stay", _("Weapons stay"))); me.TR(me); me.gotoRC(me, 0, 2); me.setFirstColumn(me, me.currentColumn); - me.TD(me, 1, 4, makeXonoticTextLabel(0, "Weapon arenas:")); + me.TD(me, 1, 4, makeXonoticTextLabel(0, _("Weapon arenas:"))); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 2, e = makeXonoticRadioButton(1, string_null, string_null, "Regular (no arena)")); + me.TD(me, 1, 2, e = makeXonoticRadioButton(1, string_null, string_null, _("Regular (no arena)"))); for(i = WEP_FIRST, j = 0; i <= WEP_LAST; ++i) { w = get_weaponinfo(i); @@ -236,7 +236,7 @@ void XonoticMutatorsDialog_fill(entity me) } me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 1, e = makeXonoticCheckBox(0, "menu_weaponarena_with_laser", "with laser")); + me.TD(me, 1, 1, e = makeXonoticCheckBox(0, "menu_weaponarena_with_laser", _("with laser"))); // hook the draw function to gray it out e.draw_weaponarena = e.draw; e.draw = preDrawLaserWeaponArenaLaserButton; @@ -244,29 +244,29 @@ void XonoticMutatorsDialog_fill(entity me) e.saveCvars_weaponarena = e.saveCvars; e.saveCvars = saveCvarsLaserWeaponArenaLaserButton; me.TR(me); - me.TD(me, 1, 4, makeXonoticTextLabel(0, "Special arenas:")); + me.TD(me, 1, 4, makeXonoticTextLabel(0, _("Special arenas:"))); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 2, e = makeXonoticRadioButton(1, "g_minstagib", string_null, "MinstaGib")); + me.TD(me, 1, 2, e = makeXonoticRadioButton(1, "g_minstagib", string_null, _("MinstaGib"))); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 2, e = makeXonoticRadioButton(1, "g_nix", string_null, "NIX")); + me.TD(me, 1, 2, e = makeXonoticRadioButton(1, "g_nix", string_null, _("NIX"))); me.TR(me); me.TDempty(me, 0.4); - me.TD(me, 1, 1, e = makeXonoticCheckBox(0, "g_nix_with_laser", "with laser")); + me.TD(me, 1, 1, e = makeXonoticCheckBox(0, "g_nix_with_laser", _("with laser"))); setDependent(e, "g_nix", 1, 1); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 2, e = makeXonoticRadioButton(1, "g_weaponarena", "most", "Most weapons")); + me.TD(me, 1, 2, e = makeXonoticRadioButton(1, "g_weaponarena", "most", _("Most weapons"))); e.cvarOffValue = "0"; me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 2, e = makeXonoticRadioButton(1, "g_start_weapon_laser", "0", "No start weapons")); + me.TD(me, 1, 2, e = makeXonoticRadioButton(1, "g_start_weapon_laser", "0", _("No start weapons"))); e.cvarOffValue = "-1"; makeMulti(e, "g_start_weapon_shotgun g_start_weapon_uzi g_start_weapon_grenadelauncher g_start_weapon_minelayer g_start_weapon_electro g_start_weapon_crylink g_start_weapon_nex g_start_weapon_hagar g_start_weapon_rocketlauncher g_start_weapon_sniperrifle g_start_weapon_hlac g_start_weapon_seeker g_start_weapon_minstanex g_start_weapon_hook g_start_weapon_porto g_start_weapon_tuba g_start_weapon_minelayer"); me.gotoRC(me, me.rows - 1, 0); - me.TD(me, 1, me.columns, e = makeXonoticButton("OK", '0 0 0')); + me.TD(me, 1, me.columns, e = makeXonoticButton(_("OK"), '0 0 0')); e.onClick = Dialog_Close; e.onClickEntity = me; } diff --git a/qcsrc/menu/xonotic/dialog_multiplayer_demo.c b/qcsrc/menu/xonotic/dialog_multiplayer_demo.c index ec57b7fca8..85171e0940 100644 --- a/qcsrc/menu/xonotic/dialog_multiplayer_demo.c +++ b/qcsrc/menu/xonotic/dialog_multiplayer_demo.c @@ -1,7 +1,7 @@ #ifdef INTERFACE CLASS(XonoticDemoBrowserTab) EXTENDS(XonoticTab) METHOD(XonoticDemoBrowserTab, fill, void(entity)) - ATTRIB(XonoticDemoBrowserTab, title, string, "Demo") + ATTRIB(XonoticDemoBrowserTab, title, string, _("Demo")) ATTRIB(XonoticDemoBrowserTab, intendedWidth, float, 0.9) ATTRIB(XonoticDemoBrowserTab, rows, float, 22) ATTRIB(XonoticDemoBrowserTab, columns, float, 6.5) @@ -25,12 +25,12 @@ void XonoticDemoBrowserTab_fill(entity me) entity dlist; me.TR(me); - me.TD(me, 1, me.columns, e = makeXonoticCheckBox(0, "cl_autodemo", "Record demos while playing")); + me.TD(me, 1, me.columns, e = makeXonoticCheckBox(0, "cl_autodemo", _("Record demos while playing"))); me.TR(me); dlist = makeXonoticDemoList(); me.TR(me); - me.TD(me, 1, 0.5, e = makeXonoticTextLabel(0, "Filter:")); - me.TD(me, 1, 0.5, btn = makeXonoticButton("Clear", '0 0 0')); + me.TD(me, 1, 0.5, e = makeXonoticTextLabel(0, _("Filter:"))); + me.TD(me, 1, 0.5, btn = makeXonoticButton(_("Clear"), '0 0 0')); btn.onClick = InputBox_Clear_Click; me.TD(me, 1, me.columns - 1, e = makeXonoticInputBox(0, string_null)); e.onChange = DemoList_Filter_Change; @@ -40,10 +40,10 @@ void XonoticDemoBrowserTab_fill(entity me) me.TR(me); me.TD(me, me.rows - 4, me.columns, dlist); me.gotoRC(me, me.rows - 1, 0); - me.TD(me, 1, me.columns / 2, e = makeXonoticButton("Timedemo", '0 0 0')); + me.TD(me, 1, me.columns / 2, e = makeXonoticButton(_("Timedemo"), '0 0 0')); e.onClick = TimeDemo_Click; e.onClickEntity = dlist; - me.TD(me, 1, me.columns / 2, e = makeXonoticButton("Play", '0 0 0')); + me.TD(me, 1, me.columns / 2, e = makeXonoticButton(_("Play"), '0 0 0')); e.onClick = StartDemo_Click; e.onClickEntity = dlist; } diff --git a/qcsrc/menu/xonotic/dialog_multiplayer_join.c b/qcsrc/menu/xonotic/dialog_multiplayer_join.c index 799d33455f..fe9f860c31 100644 --- a/qcsrc/menu/xonotic/dialog_multiplayer_join.c +++ b/qcsrc/menu/xonotic/dialog_multiplayer_join.c @@ -1,7 +1,7 @@ #ifdef INTERFACE CLASS(XonoticServerListTab) EXTENDS(XonoticTab) METHOD(XonoticServerListTab, fill, void(entity)) - ATTRIB(XonoticServerListTab, title, string, "Join") + ATTRIB(XonoticServerListTab, title, string, _("Join")) ATTRIB(XonoticServerListTab, intendedWidth, float, 0.9) ATTRIB(XonoticServerListTab, rows, float, 22) ATTRIB(XonoticServerListTab, columns, float, 6.5) @@ -25,23 +25,23 @@ void XonoticServerListTab_fill(entity me) slist = makeXonoticServerList(); me.TR(me); - me.TD(me, 1, 0.4, e = makeXonoticTextLabel(0, "Filter:")); - me.TD(me, 1, 0.6, btn = makeXonoticButton("Clear", '0 0 0')); + me.TD(me, 1, 0.4, e = makeXonoticTextLabel(0, _("Filter:"))); + me.TD(me, 1, 0.6, btn = makeXonoticButton(_("Clear"), '0 0 0')); btn.onClick = InputBox_Clear_Click; me.TD(me, 1, me.columns - 0.6 * 4 - 0.4, e = makeXonoticInputBox(0, string_null)); e.onChange = ServerList_Filter_Change; e.onChangeEntity = slist; btn.onClickEntity = e; slist.controlledTextbox = e; - me.TD(me, 1, 0.6, e = makeXonoticCheckBox(0, "menu_slist_showempty", "Empty")); + me.TD(me, 1, 0.6, e = makeXonoticCheckBox(0, "menu_slist_showempty", ZCTX(_("SRVS^Empty")))); slist.filterShowEmpty = e.checked; e.onClickEntity = slist; e.onClick = ServerList_ShowEmpty_Click; - me.TD(me, 1, 0.6, e = makeXonoticCheckBox(0, "menu_slist_showfull", "Full")); + me.TD(me, 1, 0.6, e = makeXonoticCheckBox(0, "menu_slist_showfull", ZCTX(_("SRVS^Full")))); slist.filterShowFull = e.checked; e.onClickEntity = slist; e.onClick = ServerList_ShowFull_Click; - me.TD(me, 1, 0.6, e = makeXonoticCheckBox(0, "net_slist_pause", "Pause")); + me.TD(me, 1, 0.6, e = makeXonoticCheckBox(0, "net_slist_pause", _("Pause"))); me.TR(me); me.TD(me, 1, 1, slist.sortButton1 = makeXonoticButton(string_null, '0 0 0')); @@ -53,7 +53,7 @@ void XonoticServerListTab_fill(entity me) me.TD(me, me.rows - 4, me.columns, slist); me.gotoRC(me, me.rows - 2, 0); - me.TD(me, 1, 0.6, e = makeXonoticTextLabel(0, "Address:")); + me.TD(me, 1, 0.6, e = makeXonoticTextLabel(0, _("Address:"))); me.TD(me, 1, 2.9, e = makeXonoticInputBox(0, string_null)); e.onEnter = ServerList_Connect_Click; e.onEnterEntity = slist; @@ -62,12 +62,12 @@ void XonoticServerListTab_fill(entity me) e.onClick = ServerList_Favorite_Click; e.onClickEntity = slist; slist.favoriteButton = e; - me.TD(me, 1, 1.5, e = makeXonoticButton("Info", '0 0 0')); + me.TD(me, 1, 1.5, e = makeXonoticButton(_("Info..."), '0 0 0')); e.onClick = ServerList_Info_Click; e.onClickEntity = slist; slist.infoButton = e; me.TR(me); - me.TD(me, 1, me.columns, e = makeXonoticButton("Join!", '0 0 0')); + me.TD(me, 1, me.columns, e = makeXonoticButton(_("Join!"), '0 0 0')); e.onClick = ServerList_Connect_Click; e.onClickEntity = slist; slist.connectButton = e; diff --git a/qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c b/qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c index 5f6262cf45..3ae9f08381 100644 --- a/qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c +++ b/qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c @@ -2,9 +2,9 @@ CLASS(XonoticServerInfoDialog) EXTENDS(XonoticDialog) METHOD(XonoticServerInfoDialog, fill, void(entity)) METHOD(XonoticServerInfoDialog, loadServerInfo, void(entity, float)) - ATTRIB(XonoticServerInfoDialog, title, string, "Server Information") + ATTRIB(XonoticServerInfoDialog, title, string, _("Server Information")) ATTRIB(XonoticServerInfoDialog, color, vector, SKINCOLOR_DIALOG_SERVERINFO) - ATTRIB(XonoticServerInfoDialog, intendedWidth, float, 0.68) + ATTRIB(XonoticServerInfoDialog, intendedWidth, float, 0.8) ATTRIB(XonoticServerInfoDialog, rows, float, 15) ATTRIB(XonoticServerInfoDialog, columns, float, 12) @@ -56,8 +56,8 @@ void Join_Click(entity btn, entity me); #ifdef IMPLEMENTATION void XonoticServerInfoDialog_loadServerInfo(entity me, float i) { - float m, pure, j; - string s, typestr, versionstr, numh, maxp, k, v; + float m, pure, j, numh, maxp; + string s, typestr, versionstr, k, v; if(me.currentServerName) strunzone(me.currentServerName); @@ -112,8 +112,8 @@ void XonoticServerInfoDialog_loadServerInfo(entity me, float i) me.cnameLabel.setText(me.cnameLabel, me.currentServerCName); pure = -1; - typestr = "N/A"; - versionstr = "N/A"; + typestr = _("N/A"); + versionstr = _("N/A"); SLIST_FIELD_QCSTATUS = gethostcacheindexforkey("qcstatus"); s = gethostcachestring(SLIST_FIELD_QCSTATUS, i); @@ -145,10 +145,10 @@ void XonoticServerInfoDialog_loadServerInfo(entity me, float i) me.rawPlayerList.setPlayerList(me.rawPlayerList, me.currentServerPlayers); SLIST_FIELD_NUMHUMANS = gethostcacheindexforkey("numhumans"); - numh = ftos(gethostcachenumber(SLIST_FIELD_NUMHUMANS, i)); + numh = gethostcachenumber(SLIST_FIELD_NUMHUMANS, i); SLIST_FIELD_MAXPLAYERS = gethostcacheindexforkey("maxplayers"); - maxp = ftos(gethostcachenumber(SLIST_FIELD_MAXPLAYERS, i)); - me.currentServerNumPlayers = strzone(strcat(numh,"/",maxp)); + maxp = gethostcachenumber(SLIST_FIELD_MAXPLAYERS, i); + me.currentServerNumPlayers = strzone(sprintf(_("%d/%d"), numh, maxp)); me.numPlayersLabel.setText(me.numPlayersLabel, me.currentServerNumPlayers); SLIST_FIELD_NUMBOTS = gethostcacheindexforkey("numbots"); @@ -163,7 +163,7 @@ void XonoticServerInfoDialog_loadServerInfo(entity me, float i) me.currentServerVersion = strzone(versionstr); me.versionLabel.setText(me.versionLabel, me.currentServerVersion); - me.currentServerPure = ((pure < 0) ? "N/A" : (pure == 0) ? "Official settings" : sprintf("%d modified settings", pure)); + me.currentServerPure = ((pure < 0) ? "N/A" : (pure == 0) ? _("Official settings") : sprintf(_("%d modified settings"), pure)); me.currentServerPure = strzone(me.currentServerPure); me.pureLabel.setText(me.pureLabel, me.currentServerPure); @@ -174,13 +174,13 @@ void XonoticServerInfoDialog_loadServerInfo(entity me, float i) s = crypto_getidfp(me.currentServerCName); if not(s) - s = "N/A"; + s = _("N/A"); me.currentServerID = strzone(s); me.idLabel.setText(me.idLabel, me.currentServerID); s = crypto_getkeyfp(me.currentServerCName); if not(s) - s = "N/A"; + s = _("N/A"); me.currentServerKey = strzone(s); me.keyLabel.setText(me.keyLabel, me.currentServerKey); @@ -188,35 +188,35 @@ void XonoticServerInfoDialog_loadServerInfo(entity me, float i) if(s == "") { if(cvar("crypto_aeslevel") >= 3) - me.currentServerEncrypt = "N/A (can't connect)"; + me.currentServerEncrypt = _("N/A (can't connect)"); else - me.currentServerEncrypt = "N/A"; + me.currentServerEncrypt = _("N/A"); } else switch(stof(substring(s, 0, 1))) { case 0: if(cvar("crypto_aeslevel") >= 3) - me.currentServerEncrypt = "not supported (can't connect)"; + me.currentServerEncrypt = _("not supported (can't connect)"); else - me.currentServerEncrypt = "not supported (won't encrypt)"; + me.currentServerEncrypt = _("not supported (won't encrypt)"); break; case 1: if(cvar("crypto_aeslevel") >= 2) - me.currentServerEncrypt = "supported (will encrypt)"; + me.currentServerEncrypt = _("supported (will encrypt)"); else - me.currentServerEncrypt = "supported (won't encrypt)"; + me.currentServerEncrypt = _("supported (won't encrypt)"); break; case 2: if(cvar("crypto_aeslevel") >= 1) - me.currentServerEncrypt = "requested (will encrypt)"; + me.currentServerEncrypt = _("requested (will encrypt)"); else - me.currentServerEncrypt = "requested (won't encrypt)"; + me.currentServerEncrypt = _("requested (won't encrypt)"); break; case 3: if(cvar("crypto_aeslevel") <= 0) - me.currentServerEncrypt = "required (can't connect)"; + me.currentServerEncrypt = _("required (can't connect)"); else - me.currentServerEncrypt = "required (will encrypt)"; + me.currentServerEncrypt = _("required (will encrypt)"); break; } me.encryptLabel.setText(me.encryptLabel, me.currentServerEncrypt); @@ -237,7 +237,7 @@ void XonoticServerInfoDialog_fill(entity me) me.cnameLabel = e; me.TR(me); - me.TD(me, 1, 5.5, e = makeXonoticTextLabel(0, "Players:")); + me.TD(me, 1, 5.5, e = makeXonoticTextLabel(0, _("Players:"))); me.TR(me); me.TD(me, me.rows - 4, 6, e = makeXonoticPlayerList()); me.rawPlayerList = e; @@ -245,70 +245,70 @@ void XonoticServerInfoDialog_fill(entity me) me.gotoRC(me, 1, 6.25); me.setFirstColumn(me, me.currentColumn); me.TR(me); - me.TD(me, 1, 1.75, e = makeXonoticTextLabel(0, "Type:")); + me.TD(me, 1, 1.75, e = makeXonoticTextLabel(0, _("Type:"))); me.TD(me, 1, 4.0, e = makeXonoticTextLabel(0, "")); e.allowCut = 1; me.typeLabel = e; me.TR(me); - me.TD(me, 1, 1.75, e = makeXonoticTextLabel(0, "Map:")); + me.TD(me, 1, 1.75, e = makeXonoticTextLabel(0, _("Map:"))); me.TD(me, 1, 4.0, e = makeXonoticTextLabel(0, "")); e.allowCut = 1; me.mapLabel = e; me.TR(me); - me.TD(me, 1, 1.75, e = makeXonoticTextLabel(0, "Gameplay:")); + me.TD(me, 1, 1.75, e = makeXonoticTextLabel(0, _("Gameplay:"))); me.TD(me, 1, 4.0, e = makeXonoticTextLabel(0, "")); e.allowCut = 1; me.pureLabel = e; me.TR(me); - me.TD(me, 1, 1.75, e = makeXonoticTextLabel(0, "Players:")); + me.TD(me, 1, 1.75, e = makeXonoticTextLabel(0, _("Players:"))); me.TD(me, 1, 4.0, e = makeXonoticTextLabel(0, "")); e.allowCut = 1; me.numPlayersLabel = e; me.TR(me); - me.TD(me, 1, 1.75, e = makeXonoticTextLabel(0, "Bots:")); + me.TD(me, 1, 1.75, e = makeXonoticTextLabel(0, _("Bots:"))); me.TD(me, 1, 4.0, e = makeXonoticTextLabel(0, "")); e.allowCut = 1; me.numBotsLabel = e; me.TR(me); - me.TD(me, 1, 1.75, e = makeXonoticTextLabel(0, "Mod:")); + me.TD(me, 1, 1.75, e = makeXonoticTextLabel(0, _("Mod:"))); me.TD(me, 1, 4.0, e = makeXonoticTextLabel(0, "")); e.allowCut = 1; me.modLabel = e; me.TR(me); - me.TD(me, 1, 1.75, e = makeXonoticTextLabel(0, "Version:")); + me.TD(me, 1, 1.75, e = makeXonoticTextLabel(0, _("Version:"))); me.TD(me, 1, 4.0, e = makeXonoticTextLabel(0, "")); e.allowCut = 1; me.versionLabel = e; me.TR(me); - me.TD(me, 1, 1.75, e = makeXonoticTextLabel(0, "Ping:")); + me.TD(me, 1, 1.75, e = makeXonoticTextLabel(0, _("Ping:"))); me.TD(me, 1, 4.0, e = makeXonoticTextLabel(0, "")); e.allowCut = 1; me.pingLabel = e; me.TR(me); - me.TD(me, 1, 1.75, e = makeXonoticTextLabel(0, "CA:")); + me.TD(me, 1, 1.75, e = makeXonoticTextLabel(0, _("CA:"))); me.TD(me, 1, 4.0, e = makeXonoticTextLabel(0, "")); e.allowCut = 1; me.keyLabel = e; me.TR(me); - me.TD(me, 1, 1.75, e = makeXonoticTextLabel(0, "Key:")); + me.TD(me, 1, 1.75, e = makeXonoticTextLabel(0, _("Key:"))); me.TD(me, 1, 4.0, e = makeXonoticTextLabel(0, "")); e.allowCut = 1; me.idLabel = e; me.TR(me); - me.TD(me, 1, 1.75, e = makeXonoticTextLabel(0, "Encryption:")); + me.TD(me, 1, 1.75, e = makeXonoticTextLabel(0, _("Encryption:"))); me.TD(me, 1, 4.0, e = makeXonoticTextLabel(0, "")); e.allowCut = 1; me.encryptLabel = e; me.gotoRC(me, me.rows - 1, 0); - me.TD(me, 1, me.columns - 6, e = makeXonoticButton("Close", '0 0 0')); + me.TD(me, 1, me.columns - 6, e = makeXonoticButton(_("Close"), '0 0 0')); e.onClick = Dialog_Close; e.onClickEntity = me; - me.TD(me, 1, me.columns - 6, e = makeXonoticButton("Join!", '0 0 0')); + me.TD(me, 1, me.columns - 6, e = makeXonoticButton(_("Join!"), '0 0 0')); e.onClick = Join_Click; e.onClickEntity = me; } diff --git a/qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c b/qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c index 9365544e96..fe0e757496 100644 --- a/qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c +++ b/qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c @@ -2,7 +2,7 @@ CLASS(XonoticPlayerSettingsTab) EXTENDS(XonoticTab) METHOD(XonoticPlayerSettingsTab, fill, void(entity)) METHOD(XonoticPlayerSettingsTab, draw, void(entity)) - ATTRIB(XonoticPlayerSettingsTab, title, string, "Player Setup") + ATTRIB(XonoticPlayerSettingsTab, title, string, _("Player Setup")) ATTRIB(XonoticPlayerSettingsTab, intendedWidth, float, 0.9) ATTRIB(XonoticPlayerSettingsTab, rows, float, 22) ATTRIB(XonoticPlayerSettingsTab, columns, float, 6.5) @@ -37,7 +37,7 @@ void XonoticPlayerSettingsTab_fill(entity me) float i, r, m, n; me.TR(me); - me.TD(me, 1, 0.5, me.playerNameLabel = makeXonoticTextLabel(0, "Name:")); + me.TD(me, 1, 0.5, me.playerNameLabel = makeXonoticTextLabel(0, _("Name:"))); me.playerNameLabelAlpha = me.playerNameLabel.alpha; me.TD(me, 1, 2.5, label = makeXonoticTextLabel(0, string_null)); label.allowCut = 1; @@ -47,6 +47,7 @@ void XonoticPlayerSettingsTab_fill(entity me) me.TD(me, 1, 3.0, box = makeXonoticInputBox(1, "_cl_name")); box.forbiddenCharacters = "\r\n\\\"$"; // don't care, isn't getting saved box.maxLength = -127; // negative means encoded length in bytes + box.saveImmediately = 1; label.textEntity = box; me.TR(me); me.TD(me, 5, 1, e = makeXonoticColorpicker(box)); @@ -59,7 +60,7 @@ void XonoticPlayerSettingsTab_fill(entity me) me.TR(me); me.gotoRC(me, 8, 0.0); pms = makeXonoticPlayerModelSelector(); - me.TD(me, 1, 0.6, e = makeXonoticTextLabel(1, "Model:")); + me.TD(me, 1, 0.6, e = makeXonoticTextLabel(1, _("Model:"))); me.TD(me, 1, 0.3, e = makeXonoticButton("<<", '0 0 0')); e.onClick = PlayerModelSelector_Prev_Click; e.onClickEntity = pms; @@ -84,30 +85,30 @@ void XonoticPlayerSettingsTab_fill(entity me) } me.gotoRC(me, 0, 3.5); me.setFirstColumn(me, me.currentColumn); - me.TD(me, 1, 1, e = makeXonoticTextLabel(0, "Field of view:")); + me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Field of view:"))); me.TD(me, 1, 2, e = makeXonoticSlider(60, 130, 1, "fov")); me.TR(me); sl = makeXonoticSlider(0.45, 0.75, 0.01, "cl_bobcycle"); - me.TD(me, 1, 1, e = makeXonoticSliderCheckBox(0, 1, sl, "View bobbing:")); + me.TD(me, 1, 1, e = makeXonoticSliderCheckBox(0, 1, sl, _("View bobbing:"))); makeMulti(sl, "cl_bob2cycle"); me.TD(me, 1, 2, sl); me.TR(me); - me.TD(me, 1, 1, e = makeXonoticTextLabel(0, "Zoom factor:")); + me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Zoom factor:"))); me.TD(me, 1, 2, e = makeXonoticSlider(2, 16, 0.5, "cl_zoomfactor")); me.TR(me); sl = makeXonoticSlider(1, 8, 0.5, "cl_zoomspeed"); - me.TD(me, 1, 1, e = makeXonoticSliderCheckBox(-1, 1, sl, "Zoom speed:")); + me.TD(me, 1, 1, e = makeXonoticSliderCheckBox(-1, 1, sl, _("Zoom speed:"))); me.TD(me, 1, 2, sl); me.TR(me); - me.TD(me, 1, 1.5, e = makeXonoticButton("Weapon settings...", '0 0 0')); + me.TD(me, 1, 1.5, e = makeXonoticButton(_("Weapon settings..."), '0 0 0')); e.onClick = DialogOpenButton_Click; e.onClickEntity = main.weaponsDialog; me.TD(me, 1, 1.5, e0 = makeXonoticTextLabel(0, string_null)); e0.textEntity = main.weaponsDialog; e0.allowCut = 1; me.TR(me); - me.TD(me, 1, 1, e = makeXonoticTextLabel(0, "Crosshair:")); - me.TD(me, 1, 2, e = makeXonoticCheckBox(0, "crosshair_per_weapon", "Per weapon")); + me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Crosshair:"))); + me.TD(me, 1, 2, e = makeXonoticCheckBox(0, "crosshair_per_weapon", _("Per weapon"))); me.TR(me); me.TDempty(me, 0.2); for(i = 1; i <= 10; ++i) { @@ -126,71 +127,71 @@ void XonoticPlayerSettingsTab_fill(entity me) } me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 1, e = makeXonoticTextLabel(0, "Crosshair size:")); + me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Crosshair size:"))); me.TD(me, 1, 1.8, e = makeXonoticSlider(0.10, 1.5, 0.05, "crosshair_size")); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 1, e = makeXonoticTextLabel(0, "Crosshair alpha:")); + me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Crosshair alpha:"))); me.TD(me, 1, 1.8, e = makeXonoticSlider(0, 1, 0.1, "crosshair_alpha")); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 1, e = makeXonoticTextLabel(0, "Crosshair color:")); + me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Crosshair color:"))); me.TD(me, 2, 1.8, e = makeXonoticColorpickerString("crosshair_color", "crosshair_color")); setDependent(e, "crosshair_color_per_weapon", 0, 0); me.TR(me); me.TDempty(me, 0.3); - me.TD(me, 1, 0.7, e = makeXonoticCheckBox(0, "crosshair_color_per_weapon", "Per weapon")); + me.TD(me, 1, 0.7, e = makeXonoticCheckBox(0, "crosshair_color_per_weapon", _("Per weapon"))); me.TR(me); - me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "crosshair_dot", "Enable center dot")); + me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "crosshair_dot", _("Enable center dot"))); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 0.5, e = makeXonoticTextLabel(0, "Size:")); + me.TD(me, 1, 0.5, e = makeXonoticTextLabel(0, _("Size:"))); me.TD(me, 1, 0.9, e = makeXonoticSlider(0.2, 2, 0.1, "crosshair_dot_size")); setDependent(e, "crosshair_dot", 1, 1); - me.TD(me, 1, 0.5, e = makeXonoticTextLabel(0, "Alpha:")); + me.TD(me, 1, 0.5, e = makeXonoticTextLabel(0, _("Alpha:"))); me.TD(me, 1, 0.9, e = makeXonoticSlider(0.10, 1, 0.1, "crosshair_dot_alpha")); setDependent(e, "crosshair_dot", 1, 1); me.TR(me); - me.TD(me, 1, 1, e = makeXonoticTextLabel(0, "Hit test:")); - me.TD(me, 1, 2/3, e = makeXonoticRadioButton(5, "crosshair_hittest", "0", "None")); - me.TD(me, 1, 2/3, e = makeXonoticRadioButton(5, "crosshair_hittest", "1", "TrueAim")); - me.TD(me, 1, 2/3, e = makeXonoticRadioButton(5, "crosshair_hittest", "1.25", "Enemies")); + me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Hit test:"))); + me.TD(me, 1, 2/3, e = makeXonoticRadioButton(5, "crosshair_hittest", "0", ZCTX(_("HTST^None")))); + me.TD(me, 1, 2/3, e = makeXonoticRadioButton(5, "crosshair_hittest", "1", _("TrueAim"))); + me.TD(me, 1, 2/3, e = makeXonoticRadioButton(5, "crosshair_hittest", "1.25", _("Enemies"))); me.TR(me); me.TDempty(me, 0.4); - me.TD(me, 1, 2.2, e = makeXonoticButton("Waypoints setup...", '0 0 0')); + me.TD(me, 1, 2.2, e = makeXonoticButton(_("Waypoints setup..."), '0 0 0')); e.onClick = DialogOpenButton_Click; e.onClickEntity = main.waypointDialog; me.TDempty(me, 0.5); me.TR(me); me.TDempty(me, 0.4); - me.TD(me, 1, 2.2, e = makeXonoticButton("Enter HUD editor", '0 0 0')); + me.TD(me, 1, 2.2, e = makeXonoticButton(_("Enter HUD editor"), '0 0 0')); e.onClick = HUDSetup_Join_Click; e.onClickEntity = me; me.TDempty(me, 0.5); me.TR(me); me.TR(me); #ifdef ALLOW_FORCEMODELS - me.TD(me, 1, 1, e = makeXonoticTextLabel(0, "Force models:")); - me.TD(me, 1, 2/3, e = makeXonoticRadioButton(6, string_null, string_null, "None")); - me.TD(me, 1, 2/3, e = makeXonoticRadioButton(6, "cl_forceplayermodelsfromxonotic", string_null, "Custom")); - me.TD(me, 1, 2/3, e = makeXonoticRadioButton(6, "cl_forceplayermodels", string_null, "All")); + me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Force models:"))); + me.TD(me, 1, 2/3, e = makeXonoticRadioButton(6, string_null, string_null, ZCTX(_("MDL^None"))); + me.TD(me, 1, 2/3, e = makeXonoticRadioButton(6, "cl_forceplayermodelsfromxonotic", string_null, ZCTX(_("MDL^Custom")))); + me.TD(me, 1, 2/3, e = makeXonoticRadioButton(6, "cl_forceplayermodels", string_null, ZCTX(_("MDL^All")))); #endif - me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "cl_gentle", "Disable gore effects")); + me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "cl_gentle", _("Disable gore effects"))); me.TR(me); - me.TD(me, 1, 1, e = makeXonoticTextLabel(0, "Gibs:")); + me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Gibs:"))); me.TD(me, 1, 2, e = makeXonoticTextSlider("cl_nogibs")); - e.addValue(e, "None", "1"); - e.addValue(e, "Few", "0.75"); - e.addValue(e, "Many", "0.5"); - e.addValue(e, "Lots", "0"); + e.addValue(e, ZCTX(_("GIBS^None")), "1"); + e.addValue(e, ZCTX(_("GIBS^Few")), "0.75"); + e.addValue(e, ZCTX(_("GIBS^Many")), "0.5"); + e.addValue(e, ZCTX(_("GIBS^Lots")), "0"); e.configureXonoticTextSliderValues(e); setDependent(e, "cl_gentle", 0, 0); me.TR(me); - me.TD(me, 1, 1, e = makeXonoticTextLabel(0, "Damage splash:")); + me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Damage splash:"))); me.TD(me, 1, 2, e = makeXonoticSlider(0, 1, 0.05, "hud_damage")); me.gotoRC(me, me.rows - 1, 0); - me.TD(me, 1, me.columns, makeXonoticCommandButton("Apply immediately", '0 0 0', "color -1 -1;name \"$_cl_name\";cl_cmd sendcvar cl_weaponpriority;sendcvar cl_zoomfactor;sendcvar cl_zoomspeed;sendcvar cl_autoswitch;sendcvar cl_shownames;sendcvar cl_forceplayermodelsfromxonotic;sendcvar cl_forceplayermodels;playermodel $_cl_playermodel;playerskin $_cl_playerskin", COMMANDBUTTON_APPLY)); + me.TD(me, 1, me.columns, makeXonoticCommandButton(_("Apply immediately"), '0 0 0', "color -1 -1;name \"$_cl_name\";cl_cmd sendcvar cl_weaponpriority;sendcvar cl_zoomfactor;sendcvar cl_zoomspeed;sendcvar cl_autoswitch;sendcvar cl_shownames;sendcvar cl_forceplayermodelsfromxonotic;sendcvar cl_forceplayermodels;playermodel $_cl_playermodel;playerskin $_cl_playerskin", COMMANDBUTTON_APPLY)); } void HUDSetup_Join_Click(entity me, entity btn) { diff --git a/qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c b/qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c index dcc6a64f36..470fc67852 100644 --- a/qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c +++ b/qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c @@ -1,9 +1,8 @@ #ifdef INTERFACE CLASS(XonoticWaypointDialog) EXTENDS(XonoticDialog) - METHOD(XonoticWaypointDialog, toString, string(entity)) METHOD(XonoticWaypointDialog, fill, void(entity)) METHOD(XonoticWaypointDialog, showNotify, void(entity)) - ATTRIB(XonoticWaypointDialog, title, string, "Waypoints") + ATTRIB(XonoticWaypointDialog, title, string, _("Waypoints")) ATTRIB(XonoticWaypointDialog, color, vector, SKINCOLOR_DIALOG_RADAR) ATTRIB(XonoticWaypointDialog, intendedWidth, float, 0.7) ATTRIB(XonoticWaypointDialog, rows, float, 6) @@ -16,39 +15,35 @@ void XonoticWaypointDialog_showNotify(entity me) { loadAllCvars(me); } -string XonoticWaypointDialog_toString(entity me) -{ - return "XXX"; -} void XonoticWaypointDialog_fill(entity me) { entity e; me.TR(me); - me.TD(me, 1, 4, makeXonoticTextLabel(0, "Waypoint settings:")); + me.TD(me, 1, 4, makeXonoticTextLabel(0, _("Waypoint settings:"))); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 3.8, e = makeXonoticCheckBox(1, "cl_hidewaypoints", "Show base waypoints")); + me.TD(me, 1, 3.8, e = makeXonoticCheckBox(1, "cl_hidewaypoints", _("Show base waypoints"))); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 0.8, e = makeXonoticTextLabel(0, "Waypoint scale:")); + me.TD(me, 1, 0.8, e = makeXonoticTextLabel(0, _("Waypoint scale:"))); me.TD(me, 1, 3, e = makeXonoticSlider(0.5, 1.5, 0.01, "g_waypointsprite_scale")); setDependent(e, "cl_hidewaypoints", 0, 0); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 0.8, e = makeXonoticTextLabel(0, "Waypoint alpha:")); + me.TD(me, 1, 0.8, e = makeXonoticTextLabel(0, _("Waypoint alpha:"))); me.TD(me, 1, 3, e = makeXonoticSlider(0.1, 1, 0.01, "g_waypointsprite_alpha")); setDependent(e, "cl_hidewaypoints", 0, 0); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 0.8, e = makeXonoticTextLabel(0, "Show names:")); + me.TD(me, 1, 0.8, e = makeXonoticTextLabel(0, _("Show names:"))); me.TD(me, 1, 3, e = makeXonoticTextSlider("cl_shownames")); - e.addValue(e, "Never", "0"); - e.addValue(e, "Teammates", "1"); - e.addValue(e, "All players", "2"); + e.addValue(e, _("Never"), "0"); + e.addValue(e, _("Teammates"), "1"); + e.addValue(e, _("All players"), "2"); e.configureXonoticTextSliderValues(e); me.gotoRC(me, me.rows - 1, 0); - me.TD(me, 1, me.columns, e = makeXonoticButton("OK", '0 0 0')); + me.TD(me, 1, me.columns, e = makeXonoticButton(_("OK"), '0 0 0')); e.onClick = Dialog_Close; e.onClickEntity = me; } diff --git a/qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c b/qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c index ca6d705c6f..ed5802a972 100644 --- a/qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c +++ b/qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c @@ -3,7 +3,7 @@ CLASS(XonoticWeaponsDialog) EXTENDS(XonoticDialog) METHOD(XonoticWeaponsDialog, toString, string(entity)) METHOD(XonoticWeaponsDialog, fill, void(entity)) METHOD(XonoticWeaponsDialog, showNotify, void(entity)) - ATTRIB(XonoticWeaponsDialog, title, string, "Weapon settings") + ATTRIB(XonoticWeaponsDialog, title, string, _("Weapon settings")) ATTRIB(XonoticWeaponsDialog, color, vector, SKINCOLOR_DIALOG_WEAPONS) ATTRIB(XonoticWeaponsDialog, intendedWidth, float, 0.5) ATTRIB(XonoticWeaponsDialog, rows, float, 17) @@ -26,33 +26,33 @@ void XonoticWeaponsDialog_fill(entity me) entity e; me.TR(me); - me.TD(me, 1, 4, makeXonoticTextLabel(0, "Weapon priority list:")); + me.TD(me, 1, 4, makeXonoticTextLabel(0, _("Weapon priority list:"))); me.TR(me); me.TD(me, 9, 4, e = me.weaponsList = makeXonoticWeaponsList()); me.gotoRC(me, 10, 0); me.TDempty(me, 1); - me.TD(me, 1, 1, e = makeXonoticButton("Up", '0 0 0')); + me.TD(me, 1, 1, e = makeXonoticButton(_("Up"), '0 0 0')); e.onClick = WeaponsList_MoveUp_Click; e.onClickEntity = me.weaponsList; - me.TD(me, 1, 1, e = makeXonoticButton("Down", '0 0 0')); + me.TD(me, 1, 1, e = makeXonoticButton(_("Down"), '0 0 0')); e.onClick = WeaponsList_MoveDown_Click; e.onClickEntity = me.weaponsList; me.gotoRC(me, 11, 0); - me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "cl_weaponpriority_useforcycling", "Use priority list for weapon cycling")); + me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "cl_weaponpriority_useforcycling", _("Use priority list for weapon cycling"))); me.TR(me); - me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "cl_autoswitch", "Auto switch weapons on pickup")); + me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "cl_autoswitch", _("Auto switch weapons on pickup"))); me.TR(me); - me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "r_drawviewmodel", "Draw 1st person weapon model")); + me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "r_drawviewmodel", _("Draw 1st person weapon model"))); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 1, e = makeXonoticRadioButton(1, "cl_gunalign", "4", "Left align")); + me.TD(me, 1, 1, e = makeXonoticRadioButton(1, "cl_gunalign", "4", _("Left align"))); setDependent(e, "r_drawviewmodel", 1, 1); - me.TD(me, 1, 1, e = makeXonoticRadioButton(1, "cl_gunalign", "3", "Right align")); + me.TD(me, 1, 1, e = makeXonoticRadioButton(1, "cl_gunalign", "3", _("Right align"))); setDependent(e, "r_drawviewmodel", 1, 1); me.TR(me); - me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "v_flipped", "Flip view horizontally")); + me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "v_flipped", _("Flip view horizontally"))); me.TR(me); - me.TD(me, 1, me.columns, e = makeXonoticButton("OK", '0 0 0')); + me.TD(me, 1, me.columns, e = makeXonoticButton(_("OK"), '0 0 0')); e.onClick = Dialog_Close; e.onClickEntity = me; } diff --git a/qcsrc/menu/xonotic/dialog_news.c b/qcsrc/menu/xonotic/dialog_news.c index cfe91afcee..f638c770d1 100644 --- a/qcsrc/menu/xonotic/dialog_news.c +++ b/qcsrc/menu/xonotic/dialog_news.c @@ -1,7 +1,7 @@ #ifdef INTERFACE CLASS(XonoticNewsDialog) EXTENDS(XonoticDialog) METHOD(XonoticNewsDialog, fill, void(entity)) - ATTRIB(XonoticNewsDialog, title, string, "News") + ATTRIB(XonoticNewsDialog, title, string, _("News")) ATTRIB(XonoticNewsDialog, color, vector, SKINCOLOR_DIALOG_SETTINGS) ATTRIB(XonoticNewsDialog, intendedWidth, float, 0.96) ATTRIB(XonoticNewsDialog, rows, float, 24) @@ -15,6 +15,6 @@ void XonoticNewsDialog_fill(entity me) entity e; me.TR(me); me.TD(me, 24, 1, e = spawnGecko()); - e.configureBrowser( e, "http://alientrap.org/xonotic/index.php?module=news" ); + e.configureBrowser( e, _("http://www.xonotic.org/team/blog/") ); } #endif diff --git a/qcsrc/menu/xonotic/dialog_quit.c b/qcsrc/menu/xonotic/dialog_quit.c index 0229e02676..6d9dde47b3 100644 --- a/qcsrc/menu/xonotic/dialog_quit.c +++ b/qcsrc/menu/xonotic/dialog_quit.c @@ -1,7 +1,7 @@ #ifdef INTERFACE CLASS(XonoticQuitDialog) EXTENDS(XonoticDialog) METHOD(XonoticQuitDialog, fill, void(entity)) - ATTRIB(XonoticQuitDialog, title, string, "Quit") + ATTRIB(XonoticQuitDialog, title, string, _("Quit")) ATTRIB(XonoticQuitDialog, color, vector, SKINCOLOR_DIALOG_QUIT) ATTRIB(XonoticQuitDialog, intendedWidth, float, 0.5) ATTRIB(XonoticQuitDialog, rows, float, 3) @@ -14,11 +14,11 @@ void XonoticQuitDialog_fill(entity me) { entity e; me.TR(me); - me.TD(me, 1, 2, makeXonoticTextLabel(0.5, "Are you sure you want to quit?")); + me.TD(me, 1, 2, makeXonoticTextLabel(0.5, _("Are you sure you want to quit?"))); me.TR(me); me.TR(me); - me.TD(me, 1, 1, e = makeXonoticCommandButton("Yes", '1 0 0', "quit", 0)); - me.TD(me, 1, 1, e = makeXonoticButton("No", '0 1 0')); + me.TD(me, 1, 1, e = makeXonoticCommandButton(_("Yes"), '1 0 0', "quit", 0)); + me.TD(me, 1, 1, e = makeXonoticButton(_("No"), '0 1 0')); e.onClick = Dialog_Close; e.onClickEntity = me; } diff --git a/qcsrc/menu/xonotic/dialog_settings.c b/qcsrc/menu/xonotic/dialog_settings.c index 1f19bf6565..1f084a16cc 100644 --- a/qcsrc/menu/xonotic/dialog_settings.c +++ b/qcsrc/menu/xonotic/dialog_settings.c @@ -1,7 +1,7 @@ #ifdef INTERFACE CLASS(XonoticSettingsDialog) EXTENDS(XonoticDialog) METHOD(XonoticSettingsDialog, fill, void(entity)) - ATTRIB(XonoticSettingsDialog, title, string, "Settings") + ATTRIB(XonoticSettingsDialog, title, string, _("Settings")) ATTRIB(XonoticSettingsDialog, color, vector, SKINCOLOR_DIALOG_SETTINGS) ATTRIB(XonoticSettingsDialog, intendedWidth, float, 0.96) ATTRIB(XonoticSettingsDialog, rows, float, 19) @@ -15,12 +15,12 @@ void XonoticSettingsDialog_fill(entity me) entity mc; mc = makeXonoticTabController(me.rows - 2); me.TR(me); - me.TD(me, 1, 1, mc.makeTabButton(mc, "Input", makeXonoticInputSettingsTab())); - me.TD(me, 1, 1, mc.makeTabButton(mc, "Video", makeXonoticVideoSettingsTab())); - me.TD(me, 1, 1, mc.makeTabButton(mc, "Effects", makeXonoticEffectsSettingsTab())); - me.TD(me, 1, 1, mc.makeTabButton(mc, "Audio", makeXonoticAudioSettingsTab())); - me.TD(me, 1, 1, mc.makeTabButton(mc, "Network", makeXonoticNetworkSettingsTab())); - me.TD(me, 1, 1, mc.makeTabButton(mc, "Misc", makeXonoticMiscSettingsTab())); + me.TD(me, 1, 1, mc.makeTabButton(mc, _("Input"), makeXonoticInputSettingsTab())); + me.TD(me, 1, 1, mc.makeTabButton(mc, _("Video"), makeXonoticVideoSettingsTab())); + me.TD(me, 1, 1, mc.makeTabButton(mc, _("Effects"), makeXonoticEffectsSettingsTab())); + me.TD(me, 1, 1, mc.makeTabButton(mc, _("Audio"), makeXonoticAudioSettingsTab())); + me.TD(me, 1, 1, mc.makeTabButton(mc, _("Network"), makeXonoticNetworkSettingsTab())); + me.TD(me, 1, 1, mc.makeTabButton(mc, _("Misc"), makeXonoticMiscSettingsTab())); me.TR(me); me.TR(me); me.TD(me, me.rows - 2, me.columns, mc); diff --git a/qcsrc/menu/xonotic/dialog_settings_audio.c b/qcsrc/menu/xonotic/dialog_settings_audio.c index 60ac871c9e..e38a87be66 100644 --- a/qcsrc/menu/xonotic/dialog_settings_audio.c +++ b/qcsrc/menu/xonotic/dialog_settings_audio.c @@ -1,7 +1,7 @@ #ifdef INTERFACE CLASS(XonoticAudioSettingsTab) EXTENDS(XonoticTab) METHOD(XonoticAudioSettingsTab, fill, void(entity)) - ATTRIB(XonoticAudioSettingsTab, title, string, "Audio") + ATTRIB(XonoticAudioSettingsTab, title, string, _("Audio")) ATTRIB(XonoticAudioSettingsTab, intendedWidth, float, 0.9) ATTRIB(XonoticAudioSettingsTab, rows, float, 17) ATTRIB(XonoticAudioSettingsTab, columns, float, 6.5) @@ -24,155 +24,157 @@ void XonoticAudioSettingsTab_fill(entity me) me.TR(me); s = makeXonoticDecibelsSlider(-20, 0, 0.5, "mastervolume"); - me.TD(me, 1, 1, e = makeXonoticSliderCheckBox(-1000000, 1, s, "Master:")); + me.TD(me, 1, 1, e = makeXonoticSliderCheckBox(-1000000, 1, s, _("Master:"))); me.TD(me, 1, 2, s); me.TR(me); me.TDempty(me, 0.2); s = makeXonoticDecibelsSlider(-20, 0, 0.5, "bgmvolume"); makeMulti(s, "snd_csqcchannel2volume"); - me.TD(me, 1, 0.8, e = makeXonoticSliderCheckBox(-1000000, 1, s, "Music:")); + me.TD(me, 1, 0.8, e = makeXonoticSliderCheckBox(-1000000, 1, s, _("Music:"))); me.TD(me, 1, 2, s); + setDependentStringNotEqual(e, "mastervolume", "0"); + setDependentStringNotEqual(s, "mastervolume", "0"); me.TR(me); me.TDempty(me, 0.2); s = makeXonoticDecibelsSlider(-20, 0, 0.5, "snd_staticvolume"); - me.TD(me, 1, 0.8, e = makeXonoticSliderCheckBox(-1000000, 1, s, "Ambient:")); + me.TD(me, 1, 0.8, e = makeXonoticSliderCheckBox(-1000000, 1, s, ZCTX(_("VOL^Ambient:")))); makeMulti(s, "snd_entchannel2volume"); me.TD(me, 1, 2, s); - setDependentStringNotEqual(e, "volume", "0"); - setDependentStringNotEqual(s, "volume", "0"); + setDependentStringNotEqual(e, "mastervolume", "0"); + setDependentStringNotEqual(s, "mastervolume", "0"); me.TR(me); me.TDempty(me, 0.2); s = makeXonoticDecibelsSlider(-20, 0, 0.5, "snd_worldchannel0volume"); - me.TD(me, 1, 0.8, e = makeXonoticSliderCheckBox(-1000000, 1, s, "Info:")); + me.TD(me, 1, 0.8, e = makeXonoticSliderCheckBox(-1000000, 1, s, _("Info:"))); makeMulti(s, "snd_csqcchannel0volume"); me.TD(me, 1, 2, s); - setDependentStringNotEqual(e, "volume", "0"); - setDependentStringNotEqual(s, "volume", "0"); + setDependentStringNotEqual(e, "mastervolume", "0"); + setDependentStringNotEqual(s, "mastervolume", "0"); me.TR(me); me.TDempty(me, 0.2); s = makeXonoticDecibelsSlider(-20, 0, 0.5, "snd_entchannel3volume"); makeMulti(s, "snd_playerchannel0volume snd_playerchannel3volume snd_csqcchannel3volume"); - me.TD(me, 1, 0.8, e = makeXonoticSliderCheckBox(-1000000, 1, s, "Items:")); + me.TD(me, 1, 0.8, e = makeXonoticSliderCheckBox(-1000000, 1, s, _("Items:"))); me.TD(me, 1, 2, s); - setDependentStringNotEqual(e, "volume", "0"); - setDependentStringNotEqual(s, "volume", "0"); + setDependentStringNotEqual(e, "mastervolume", "0"); + setDependentStringNotEqual(s, "mastervolume", "0"); me.TR(me); me.TDempty(me, 0.2); s = makeXonoticDecibelsSlider(-20, 0, 0.5, "snd_playerchannel6volume"); makeMulti(s, "snd_csqcchannel6volume"); - me.TD(me, 1, 0.8, e = makeXonoticSliderCheckBox(-1000000, 1, s, "Pain:")); + me.TD(me, 1, 0.8, e = makeXonoticSliderCheckBox(-1000000, 1, s, _("Pain:"))); me.TD(me, 1, 2, s); - setDependentStringNotEqual(e, "volume", "0"); - setDependentStringNotEqual(s, "volume", "0"); + setDependentStringNotEqual(e, "mastervolume", "0"); + setDependentStringNotEqual(s, "mastervolume", "0"); me.TR(me); me.TDempty(me, 0.2); s = makeXonoticDecibelsSlider(-20, 0, 0.5, "snd_playerchannel7volume"); makeMulti(s, "snd_entchannel7volume"); - me.TD(me, 1, 0.8, e = makeXonoticSliderCheckBox(-1000000, 1, s, "Player:")); + me.TD(me, 1, 0.8, e = makeXonoticSliderCheckBox(-1000000, 1, s, _("Player:"))); me.TD(me, 1, 2, s); - setDependentStringNotEqual(e, "volume", "0"); - setDependentStringNotEqual(s, "volume", "0"); + setDependentStringNotEqual(e, "mastervolume", "0"); + setDependentStringNotEqual(s, "mastervolume", "0"); me.TR(me); me.TDempty(me, 0.2); s = makeXonoticDecibelsSlider(-20, 0, 0.5, "snd_entchannel4volume"); makeMulti(s, "snd_playerchannel4volume snd_entchannel6volume snd_csqcchannel4volume"); - me.TD(me, 1, 0.8, e = makeXonoticSliderCheckBox(-1000000, 1, s, "Shots:")); + me.TD(me, 1, 0.8, e = makeXonoticSliderCheckBox(-1000000, 1, s, _("Shots:"))); me.TD(me, 1, 2, s); - setDependentStringNotEqual(e, "volume", "0"); - setDependentStringNotEqual(s, "volume", "0"); + setDependentStringNotEqual(e, "mastervolume", "0"); + setDependentStringNotEqual(s, "mastervolume", "0"); me.TR(me); me.TDempty(me, 0.2); s = makeXonoticDecibelsSlider(-20, 0, 0.5, "snd_playerchannel2volume"); - me.TD(me, 1, 0.8, e = makeXonoticSliderCheckBox(-1000000, 1, s, "Voice:")); + me.TD(me, 1, 0.8, e = makeXonoticSliderCheckBox(-1000000, 1, s, _("Voice:"))); me.TD(me, 1, 2, s); - setDependentStringNotEqual(e, "volume", "0"); - setDependentStringNotEqual(s, "volume", "0"); + setDependentStringNotEqual(e, "mastervolume", "0"); + setDependentStringNotEqual(s, "mastervolume", "0"); me.TR(me); me.TDempty(me, 0.2); s = makeXonoticDecibelsSlider(-20, 0, 0.5, "snd_playerchannel1volume"); makeMulti(s, "snd_playerchannel5volume snd_entchannel1volume snd_entchannel5volume"); - me.TD(me, 1, 0.8, e = makeXonoticSliderCheckBox(-1000000, 1, s, "Weapons:")); + me.TD(me, 1, 0.8, e = makeXonoticSliderCheckBox(-1000000, 1, s, _("Weapons:"))); me.TD(me, 1, 2, s); - setDependentStringNotEqual(e, "volume", "0"); - setDependentStringNotEqual(s, "volume", "0"); + setDependentStringNotEqual(e, "mastervolume", "0"); + setDependentStringNotEqual(s, "mastervolume", "0"); me.TR(me); me.gotoRC(me, 0, 3.5); me.setFirstColumn(me, me.currentColumn); - me.TD(me, 1, 1, e = makeXonoticTextLabel(0, "Frequency:")); + me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Frequency:"))); me.TD(me, 1, 2, e = makeXonoticTextSlider("snd_speed")); - e.addValue(e, "8 kHz", "8000"); - e.addValue(e, "11.025 kHz", "11025"); - e.addValue(e, "16 kHz", "16000"); - e.addValue(e, "22.05 kHz", "22050"); - e.addValue(e, "24 kHz", "24000"); - e.addValue(e, "32 kHz", "32000"); - e.addValue(e, "44.1 kHz", "44100"); - e.addValue(e, "48 kHz", "48000"); + e.addValue(e, _("8 kHz"), "8000"); + e.addValue(e, _("11.025 kHz"), "11025"); + e.addValue(e, _("16 kHz"), "16000"); + e.addValue(e, _("22.05 kHz"), "22050"); + e.addValue(e, _("24 kHz"), "24000"); + e.addValue(e, _("32 kHz"), "32000"); + e.addValue(e, _("44.1 kHz"), "44100"); + e.addValue(e, _("48 kHz"), "48000"); e.configureXonoticTextSliderValues(e); me.TR(me); - me.TD(me, 1, 1, e = makeXonoticTextLabel(0, "Channels:")); + me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Channels:"))); me.TD(me, 1, 2, e = makeXonoticTextSlider("snd_channels")); - e.addValue(e, "Mono", "1"); - e.addValue(e, "Stereo", "2"); - e.addValue(e, "2.1", "3"); - e.addValue(e, "3.1", "4"); - e.addValue(e, "4.1", "5"); - e.addValue(e, "5.1", "6"); - e.addValue(e, "6.1", "7"); - e.addValue(e, "7.1", "8"); + e.addValue(e, _("Mono"), "1"); + e.addValue(e, _("Stereo"), "2"); + e.addValue(e, _("2.1"), "3"); + e.addValue(e, _("4"), "4"); + e.addValue(e, _("5"), "5"); + e.addValue(e, _("5.1"), "6"); + e.addValue(e, _("6.1"), "7"); + e.addValue(e, _("7.1"), "8"); e.configureXonoticTextSliderValues(e); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 2.8, e = makeXonoticCheckBox(0, "snd_swapstereo", "Swap Stereo")); + me.TD(me, 1, 2.8, e = makeXonoticCheckBox(0, "snd_swapstereo", _("Swap Stereo"))); setDependent(e, "snd_channels", 1.5, 0.5); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 2.8, e = makeXonoticCheckBox(0, "snd_spatialization_control", "Headphone friendly mode")); + me.TD(me, 1, 2.8, e = makeXonoticCheckBox(0, "snd_spatialization_control", _("Headphone friendly mode"))); setDependent(e, "snd_channels", 1.5, 0.5); me.TR(me); me.TR(me); - me.TD(me, 1, 1, e = makeXonoticTextLabel(0, "Spatial voices:")); - me.TD(me, 1, 2/3, e = makeXonoticRadioButton(1, "cl_voice_directional", "0", "None")); - me.TD(me, 1, 2/3, e = makeXonoticRadioButton(1, "cl_voice_directional", "2", "Taunts")); - me.TD(me, 1, 2/3, e = makeXonoticRadioButton(1, "cl_voice_directional", "1", "All")); + me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Spatial voices:"))); + me.TD(me, 1, 2/3, e = makeXonoticRadioButton(1, "cl_voice_directional", "0", ZCTX(_("VOCS^None")))); + me.TD(me, 1, 2/3, e = makeXonoticRadioButton(1, "cl_voice_directional", "2", ZCTX(_("VOCS^Taunts")))); + me.TD(me, 1, 2/3, e = makeXonoticRadioButton(1, "cl_voice_directional", "1", ZCTX(_("VOCS^All")))); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 0.8, e = makeXonoticTextLabel(0, "Taunt range:")); + me.TD(me, 1, 0.8, e = makeXonoticTextLabel(0, _("Taunt range:"))); setDependent(e, "cl_voice_directional", 0.5, -0.5); me.TD(me, 1, 2, e = makeXonoticTextSlider("cl_voice_directional_taunt_attenuation")); - e.addValue(e, "Very short", "3"); - e.addValue(e, "Short", "2"); - e.addValue(e, "Normal", "0.5"); - e.addValue(e, "Long", "0.25"); - e.addValue(e, "Full", "0.015625"); + e.addValue(e, ZCTX(_("RNG^Very short")), "3"); + e.addValue(e, ZCTX(_("RNG^Short")), "2"); + e.addValue(e, ZCTX(_("RNG^Normal")), "0.5"); + e.addValue(e, ZCTX(_("RNG^Long")), "0.25"); + e.addValue(e, ZCTX(_("RNG^Full")), "0.015625"); e.configureXonoticTextSliderValues(e); setDependent(e, "cl_voice_directional", 0.5, -0.5); me.TR(me); sl = makeXonoticSlider(0.15, 1, 0.05, "cl_autotaunt"); sl.valueDisplayMultiplier = 100; sl.valueDigits = 0; - me.TD(me, 1, 3, e = makeXonoticSliderCheckBox(0, 1, sl, "Automatic taunts")); + me.TD(me, 1, 3, e = makeXonoticSliderCheckBox(0, 1, sl, _("Automatic taunts"))); if(sl.value != e.savedValue) e.savedValue = 0.65; // default me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 0.8, e = makeXonoticTextLabel(0, "Frequency:")); + me.TD(me, 1, 0.8, e = makeXonoticTextLabel(0, _("Frequency:"))); me.TD(me, 1, 2, sl); me.TR(me); me.TR(me); - me.TD(me, 1, 1, e = makeXonoticTextLabel(0, "Time warning:")); + me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Time warning:"))); me.TD(me, 1, 2, e = makeXonoticTextSlider("cl_sound_maptime_warning")); - e.addValue(e, "None", "0"); - e.addValue(e, "1 minute", "1"); - e.addValue(e, "5 minutes", "2"); - e.addValue(e, "Both", "3"); + e.addValue(e, ZCTX(_("WRN^None")), "0"); + e.addValue(e, _("1 minute"), "1"); + e.addValue(e, _("5 minutes"), "2"); + e.addValue(e, ZCTX(_("WRN^Both")), "3"); e.configureXonoticTextSliderValues(e); me.TR(me); - me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "cl_hitsound", "Hit indicator")); + me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "cl_hitsound", _("Hit indicator"))); me.TR(me); - me.TD(me, 1, 3, e = makeXonoticCheckBoxEx(2, 0, "menu_sounds", "Menu sounds")); + me.TD(me, 1, 3, e = makeXonoticCheckBoxEx(2, 0, "menu_sounds", _("Menu sounds"))); me.gotoRC(me, me.rows - 1, 0); - me.TD(me, 1, me.columns, makeXonoticCommandButton("Apply immediately", '0 0 0', "snd_restart; sendcvar cl_hitsound; sendcvar cl_autotaunt; sendcvar cl_voice_directional; sendcvar cl_voice_directional_taunt_attenuation", COMMANDBUTTON_APPLY)); + me.TD(me, 1, me.columns, makeXonoticCommandButton(_("Apply immediately"), '0 0 0', "snd_restart; sendcvar cl_hitsound; sendcvar cl_autotaunt; sendcvar cl_voice_directional; sendcvar cl_voice_directional_taunt_attenuation", COMMANDBUTTON_APPLY)); } #endif diff --git a/qcsrc/menu/xonotic/dialog_settings_effects.c b/qcsrc/menu/xonotic/dialog_settings_effects.c index 2e445ffa78..ec8329b5d8 100644 --- a/qcsrc/menu/xonotic/dialog_settings_effects.c +++ b/qcsrc/menu/xonotic/dialog_settings_effects.c @@ -1,7 +1,7 @@ #ifdef INTERFACE CLASS(XonoticEffectsSettingsTab) EXTENDS(XonoticTab) METHOD(XonoticEffectsSettingsTab, fill, void(entity)) - ATTRIB(XonoticEffectsSettingsTab, title, string, "Effects") + ATTRIB(XonoticEffectsSettingsTab, title, string, _("Effects")) ATTRIB(XonoticEffectsSettingsTab, intendedWidth, float, 0.9) ATTRIB(XonoticEffectsSettingsTab, rows, float, 17) ATTRIB(XonoticEffectsSettingsTab, columns, float, 6.5) @@ -35,47 +35,47 @@ void XonoticEffectsSettingsTab_fill(entity me) entity e, s; float n; me.TR(me); - me.TD(me, 1, 1, e = makeXonoticTextLabel(0, "Quality preset:")); + me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Quality preset:"))); n = 5 + 2 * !!cvar("developer"); if(cvar("developer")) - me.TD(me, 1, 5.5 / n, e = makeXonoticCommandButton("OMG!", '1 0 1', "exec effects-omg.cfg", 0)); - me.TD(me, 1, 5.5 / n, e = makeXonoticCommandButton("Low", '0 0 0', "exec effects-low.cfg", 0)); - me.TD(me, 1, 5.5 / n, e = makeXonoticCommandButton("Medium", '0 0 0', "exec effects-med.cfg", 0)); - me.TD(me, 1, 5.5 / n, e = makeXonoticCommandButton("Normal", '0 0 0', "exec effects-normal.cfg", 0)); - me.TD(me, 1, 5.5 / n, e = makeXonoticCommandButton("High", '0 0 0', "exec effects-high.cfg", 0)); - me.TD(me, 1, 5.5 / n, e = makeXonoticCommandButton("Ultra", '0 0 0', "exec effects-ultra.cfg", 0)); + me.TD(me, 1, 5.5 / n, e = makeXonoticCommandButton(ZCTX(_("PRE^OMG!")), '1 0 1', "exec effects-omg.cfg", 0)); + me.TD(me, 1, 5.5 / n, e = makeXonoticCommandButton(ZCTX(_("PRE^Low")), '0 0 0', "exec effects-low.cfg", 0)); + me.TD(me, 1, 5.5 / n, e = makeXonoticCommandButton(ZCTX(_("PRE^Medium")), '0 0 0', "exec effects-med.cfg", 0)); + me.TD(me, 1, 5.5 / n, e = makeXonoticCommandButton(ZCTX(_("PRE^Normal")), '0 0 0', "exec effects-normal.cfg", 0)); + me.TD(me, 1, 5.5 / n, e = makeXonoticCommandButton(ZCTX(_("PRE^High")), '0 0 0', "exec effects-high.cfg", 0)); + me.TD(me, 1, 5.5 / n, e = makeXonoticCommandButton(ZCTX(_("PRE^Ultra")), '0 0 0', "exec effects-ultra.cfg", 0)); if(cvar("developer")) - me.TD(me, 1, 5.5 / n, e = makeXonoticCommandButton("Ultimate", '0 0 0', "exec effects-ultimate.cfg", 0)); + me.TD(me, 1, 5.5 / n, e = makeXonoticCommandButton(ZCTX(_("PRE^Ultimate")), '0 0 0', "exec effects-ultimate.cfg", 0)); me.TR(me); me.TR(me); - me.TD(me, 1, 1.1, e = makeXonoticTextLabel(0, "Geometry detail:")); + me.TD(me, 1, 1.1, e = makeXonoticTextLabel(0, _("Geometry detail:"))); me.TD(me, 1, 2, e = makeXonoticTextSlider("r_subdivisions_tolerance")); - e.addValue(e, "Lowest", "16"); - e.addValue(e, "Low", "8"); - e.addValue(e, "Normal", "4"); - e.addValue(e, "Good", "3"); - e.addValue(e, "Best", "2"); - e.addValue(e, "Insane", "1"); + e.addValue(e, ZCTX(_("DET^Lowest")), "16"); + e.addValue(e, ZCTX(_("DET^Low")), "8"); + e.addValue(e, ZCTX(_("DET^Normal")), "4"); + e.addValue(e, ZCTX(_("DET^Good")), "3"); + e.addValue(e, ZCTX(_("DET^Best")), "2"); + e.addValue(e, ZCTX(_("DET^Insane")), "1"); e.configureXonoticTextSliderValues(e); me.TR(me); - me.TD(me, 1, 1.1, e = makeXonoticTextLabel(0, "Antialiasing:")); + me.TD(me, 1, 1.1, e = makeXonoticTextLabel(0, _("Antialiasing:"))); me.TD(me, 1, 2, e = makeXonoticTextSlider("vid_samples")); - e.addValue(e, "Disabled", "1"); - e.addValue(e, "2x", "2"); - e.addValue(e, "4x", "4"); + e.addValue(e, ZCTX(_("AA^Disabled")), "1"); + e.addValue(e, _("2x"), "2"); + e.addValue(e, _("4x"), "4"); e.configureXonoticTextSliderValues(e); me.TR(me); me.TR(me); - me.TD(me, 1, 1.1, e = makeXonoticTextLabel(0, "Texture resolution:")); + me.TD(me, 1, 1.1, e = makeXonoticTextLabel(0, _("Texture resolution:"))); me.TD(me, 1, 2, e = makeXonoticPicmipSlider()); if(cvar("developer")) - e.addValue(e, "Leet", "1337"); - e.addValue(e, "Lowest", "2"); - e.addValue(e, "Low", "1"); - e.addValue(e, "Normal", "0"); - e.addValue(e, "Good", "-1"); - e.addValue(e, "Best", "-2"); + e.addValue(e, ZCTX(_("RES^Leet")), "1337"); + e.addValue(e, ZCTX(_("RES^Lowest")), "2"); + e.addValue(e, ZCTX(_("RES^Low")), "1"); + e.addValue(e, ZCTX(_("RES^Normal")), "0"); + e.addValue(e, ZCTX(_("RES^Good")), "-1"); + e.addValue(e, ZCTX(_("RES^Best")), "-2"); e.configureXonoticTextSliderValues(e); me.TR(me); me.TDempty(me, 0.2); @@ -88,108 +88,108 @@ void XonoticEffectsSettingsTab_fill(entity me) case 0: break; case 1: - me.TD(me, 1, 2.8, e = makeXonoticCheckBox(1, "r_texture_dds_load", "Avoid lossy texture compression")); + me.TD(me, 1, 2.8, e = makeXonoticCheckBox(1, "r_texture_dds_load", _("Avoid lossy texture compression"))); break; case 2: - me.TD(me, 1, 2.8, e = makeXonoticCheckBox(1, "r_texture_dds_load", "Avoid lossy texture compression")); + me.TD(me, 1, 2.8, e = makeXonoticCheckBox(1, "r_texture_dds_load", _("Avoid lossy texture compression"))); makeMulti(e, "gl_texturecompression"); break; } } me.TR(me); - me.TD(me, 1, 1.1, e = makeXonoticTextLabel(0, "Anisotropy:")); + me.TD(me, 1, 1.1, e = makeXonoticTextLabel(0, _("Anisotropy:"))); me.TD(me, 1, 2, e = makeXonoticTextSlider("gl_texture_anisotropy")); - e.addValue(e, "Disabled", "1"); - e.addValue(e, "2x", "2"); - e.addValue(e, "4x", "4"); - e.addValue(e, "8x", "8"); - e.addValue(e, "16x", "16"); + e.addValue(e, ZCTX(_("ANISO^Disabled")), "1"); + e.addValue(e, _("2x"), "2"); + e.addValue(e, _("4x"), "4"); + e.addValue(e, _("8x"), "8"); + e.addValue(e, _("16x"), "16"); e.configureXonoticTextSliderValues(e); me.TR(me); me.TR(me); - me.TD(me, 1, 1.1, e = makeXonoticTextLabel(0, "Particle quality:")); - me.TD(me, 1, 2, e = makeXonoticSlider(0.2, 1.0, 0.1, "cl_particles_quality")); + me.TD(me, 1, 1.1, e = makeXonoticTextLabel(0, _("Particle quality:"))); + me.TD(me, 1, 1.9, e = makeXonoticSlider(0.2, 1.0, 0.1, "cl_particles_quality")); me.TR(me); - me.TD(me, 1, 1.1, e = makeXonoticTextLabel(0, "Particle distance:")); - me.TD(me, 1, 2, e = makeXonoticSlider(500, 2000, 100, "r_drawparticles_drawdistance")); + me.TD(me, 1, 1.1, e = makeXonoticTextLabel(0, _("Particle distance:"))); + me.TD(me, 1, 1.9, e = makeXonoticSlider(500, 2000, 100, "r_drawparticles_drawdistance")); me.TR(me); me.TR(me); - me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "cl_decals", "Decals")); + me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "cl_decals", _("Decals"))); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 0.9, e = makeXonoticTextLabel(0, "Distance:")); + me.TD(me, 1, 0.9, e = makeXonoticTextLabel(0, _("Distance:"))); setDependent(e, "cl_decals", 1, 1); - me.TD(me, 1, 2, e = makeXonoticSlider(200, 500, 20, "r_drawdecals_drawdistance")); + me.TD(me, 1, 1.9, e = makeXonoticSlider(200, 500, 20, "r_drawdecals_drawdistance")); setDependent(e, "cl_decals", 1, 1); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 0.9, e = makeXonoticTextLabel(0, "Time:")); + me.TD(me, 1, 0.9, e = makeXonoticTextLabel(0, _("Time:"))); setDependent(e, "cl_decals", 1, 1); - me.TD(me, 1, 2, e = makeXonoticSlider(1, 20, 1, "cl_decals_time")); + me.TD(me, 1, 1.9, e = makeXonoticSlider(1, 20, 1, "cl_decals_time")); setDependent(e, "cl_decals", 1, 1); me.gotoRC(me, 2, 3.5); me.setFirstColumn(me, me.currentColumn); - me.TD(me, 1, 2, e = makeXonoticCheckBox(1, "mod_q3bsp_nolightmaps", "Use lightmaps")); - me.TD(me, 1, 1.9, e = makeXonoticCheckBox(0, "r_glsl_deluxemapping", "Deluxe mapping")); + me.TD(me, 1, 1.3, e = makeXonoticCheckBox(1, "mod_q3bsp_nolightmaps", _("Use lightmaps"))); + me.TD(me, 1, 0.9, e = makeXonoticCheckBox(0, "r_glsl_deluxemapping", _("Deluxe mapping"))); setDependentAND(e, "vid_gl20", 1, 1, "mod_q3bsp_nolightmaps", 0, 0); - me.TD(me, 1, 0.7, e = makeXonoticCheckBox(0, "r_shadow_gloss", "Gloss")); + me.TD(me, 1, 0.8, e = makeXonoticCheckBox(0, "r_shadow_gloss", _("Gloss"))); setDependentAND3(e, "vid_gl20", 1, 1, "r_glsl_deluxemapping", 1, 2, "mod_q3bsp_nolightmaps", 0, 0); me.TR(me); - me.TD(me, 1, 1.5, e = makeXonoticCheckBox(0, "r_glsl_offsetmapping", "Offset mapping")); + me.TD(me, 1, 1.3, e = makeXonoticCheckBox(0, "r_glsl_offsetmapping", _("Offset mapping"))); setDependent(e, "vid_gl20", 1, 1); - me.TD(me, 1, 1.9, e = makeXonoticCheckBox(0, "r_glsl_offsetmapping_reliefmapping", "Relief mapping")); + me.TD(me, 1, 1.7, e = makeXonoticCheckBox(0, "r_glsl_offsetmapping_reliefmapping", _("Relief mapping"))); setDependentAND(e, "vid_gl20", 1, 1, "r_glsl_offsetmapping", 1, 1); me.TR(me); - me.TD(me, 1, 1, e = makeXonoticCheckBox(0, "r_water", "Reflections:")); + me.TD(me, 1, 1, e = makeXonoticCheckBox(0, "r_water", _("Reflections:"))); setDependent(e, "vid_gl20", 1, 1); me.TD(me, 1, 2, e = makeXonoticTextSlider("r_water_resolutionmultiplier")); - e.addValue(e, "Blurred", "0.25"); - e.addValue(e, "Good", "0.5"); - e.addValue(e, "Sharp", "1"); + e.addValue(e, _("Blurred"), "0.25"); + e.addValue(e, ZCTX(_("REFL^Good")), "0.5"); + e.addValue(e, _("Sharp"), "1"); e.configureXonoticTextSliderValues(e); setDependentAND(e, "vid_gl20", 1, 1, "r_water", 1, 1); me.TR(me); if(cvar("developer")) - me.TD(me, 1, 3, e = makeXonoticCheckBoxEx(3, 0, "r_showsurfaces", "Show surfaces")); + me.TD(me, 1, 3, e = makeXonoticCheckBoxEx(3, 0, "r_showsurfaces", _("Show surfaces"))); me.TR(me); - me.TD(me, 1, 3, e = makeXonoticRadioButton(1, string_null, string_null, "No dynamic lighting")); + me.TD(me, 1, 3, e = makeXonoticRadioButton(1, string_null, string_null, _("No dynamic lighting"))); me.TR(me); - me.TD(me, 1, 3, e = makeXonoticRadioButton(1, "gl_flashblend", string_null, "Flash blend approximation")); + me.TD(me, 1, 3, e = makeXonoticRadioButton(1, "gl_flashblend", string_null, _("Flash blend approximation"))); me.TR(me); - me.TD(me, 1, 2, e = makeXonoticRadioButton(1, "r_shadow_realtime_dlight", string_null, "Realtime dynamic lighting")); - me.TD(me, 1, 1, e = makeXonoticCheckBox(0, "r_shadow_realtime_dlight_shadows", "Shadows")); + me.TD(me, 1, 2, e = makeXonoticRadioButton(1, "r_shadow_realtime_dlight", string_null, _("Realtime dynamic lighting"))); + me.TD(me, 1, 1, e = makeXonoticCheckBox(0, "r_shadow_realtime_dlight_shadows", _("Shadows"))); setDependent(e, "r_shadow_realtime_dlight", 1, 1); me.TR(me); - me.TD(me, 1, 2, e = makeXonoticCheckBox(0, "r_shadow_realtime_world", "Realtime world lighting")); - me.TD(me, 1, 1, e = makeXonoticCheckBox(0, "r_shadow_realtime_world_shadows", "Shadows")); + me.TD(me, 1, 2, e = makeXonoticCheckBox(0, "r_shadow_realtime_world", _("Realtime world lighting"))); + me.TD(me, 1, 1, e = makeXonoticCheckBox(0, "r_shadow_realtime_world_shadows", _("Shadows"))); setDependent(e, "r_shadow_realtime_world", 1, 1); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 1.8, e = makeXonoticCheckBox(0, "r_shadow_usenormalmap", "Use normal maps")); + me.TD(me, 1, 1.8, e = makeXonoticCheckBox(0, "r_shadow_usenormalmap", _("Use normal maps"))); setDependentOR(e, "r_shadow_realtime_dlight", 1, 1, "r_shadow_realtime_world", 1, 1); - me.TD(me, 1, 1, e = makeXonoticCheckBox(0, "r_shadow_shadowmapping", "Soft shadows")); + me.TD(me, 1, 1, e = makeXonoticCheckBox(0, "r_shadow_shadowmapping", _("Soft shadows"))); setDependentWeird(e, someShadowCvarIsEnabled); me.TR(me); - me.TD(me, 1, 1, e = makeXonoticCheckBox(0, "r_coronas", "Coronas")); + me.TD(me, 1, 1, e = makeXonoticCheckBox(0, "r_coronas", _("Coronas"))); me.TR(me); - me.TD(me, 1, 1, e = makeXonoticCheckBox(0, "r_bloom", "Bloom")); + me.TD(me, 1, 1.2, e = makeXonoticCheckBox(0, "r_bloom", _("Bloom"))); setDependent(e, "r_hdr", 0, 0); - me.TD(me, 1, 2, e = makeXonoticCheckBoxEx(2, 0, "r_hdr", "High Dynamic Range (HDR)")); + me.TD(me, 1, 1.8, e = makeXonoticCheckBoxEx(2, 0, "r_hdr", _("High Dynamic Range (HDR)"))); me.TR(me); s = makeXonoticSlider(0.1, 1, 0.1, "r_motionblur"); - me.TD(me, 1, 1, e = makeXonoticSliderCheckBox(0, 1, s, "Motion blur:")); + me.TD(me, 1, 1, e = makeXonoticSliderCheckBox(0, 1, s, _("Motion blur:"))); if(s.value != e.savedValue) e.savedValue = 0.5; // default me.TD(me, 1, 2, s); me.TR(me); s = makeXonoticSlider(0.1, 1, 0.1, "r_damageblur"); - me.TD(me, 1, 1, e = makeXonoticSliderCheckBox(0, 1, s, "Damage blur:")); + me.TD(me, 1, 1, e = makeXonoticSliderCheckBox(0, 1, s, _("Damage blur:"))); if(s.value != e.savedValue) e.savedValue = 0.4; // default me.TD(me, 1, 2, s); me.gotoRC(me, me.rows - 1, 0); - me.TD(me, 1, me.columns, makeXonoticCommandButton("Apply immediately", '0 0 0', "vid_restart", COMMANDBUTTON_APPLY)); + me.TD(me, 1, me.columns, makeXonoticCommandButton(_("Apply immediately"), '0 0 0', "vid_restart", COMMANDBUTTON_APPLY)); } #endif diff --git a/qcsrc/menu/xonotic/dialog_settings_input.c b/qcsrc/menu/xonotic/dialog_settings_input.c index df3bd084a5..ee244931d6 100644 --- a/qcsrc/menu/xonotic/dialog_settings_input.c +++ b/qcsrc/menu/xonotic/dialog_settings_input.c @@ -1,7 +1,7 @@ #ifdef INTERFACE CLASS(XonoticInputSettingsTab) EXTENDS(XonoticTab) METHOD(XonoticInputSettingsTab, fill, void(entity)) - ATTRIB(XonoticInputSettingsTab, title, string, "Input") + ATTRIB(XonoticInputSettingsTab, title, string, _("Input")) ATTRIB(XonoticInputSettingsTab, intendedWidth, float, 0.9) ATTRIB(XonoticInputSettingsTab, rows, float, 17) ATTRIB(XonoticInputSettingsTab, columns, float, 6.5) @@ -23,55 +23,46 @@ void XonoticInputSettingsTab_fill(entity me) entity kb; me.TR(me); - me.TD(me, 1, 3, e = makeXonoticTextLabel(0, "Key bindings:")); + me.TD(me, 1, 3, e = makeXonoticTextLabel(0, _("Key bindings:"))); me.TR(me); me.TD(me, me.rows - 2, 3.3, kb = makeXonoticKeyBinder()); me.gotoRC(me, me.rows - 1, 0); me.TR(me); - me.TD(me, 1, 1.1, e = makeXonoticButton("Change key...", '0 0 0')); + me.TD(me, 1, 1.1, e = makeXonoticButton(_("Change key..."), '0 0 0')); e.onClick = KeyBinder_Bind_Change; e.onClickEntity = kb; kb.keyGrabButton = e; - me.TD(me, 1, 1.1, e = makeXonoticButton("Edit...", '0 0 0')); + me.TD(me, 1, 1.1, e = makeXonoticButton(_("Edit..."), '0 0 0')); e.onClick = KeyBinder_Bind_Edit; e.onClickEntity = kb; kb.userbindEditButton = e; kb.userbindEditDialog = main.userbindEditDialog; main.userbindEditDialog.keybindBox = kb; - me.TD(me, 1, 1.1, e = makeXonoticButton("Clear", '0 0 0')); + me.TD(me, 1, 1.1, e = makeXonoticButton(_("Clear"), '0 0 0')); e.onClick = KeyBinder_Bind_Clear; e.onClickEntity = kb; me.gotoRC(me, 0, 3.5); me.setFirstColumn(me, me.currentColumn); - me.TD(me, 1, 1, e = makeXonoticTextLabel(0, "Sensitivity:")); + me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Sensitivity:"))); me.TD(me, 1, 2, e = makeXonoticSlider(1, 32, 0.2, "sensitivity")); me.TR(me); - me.TD(me, 1, 1, e = makeXonoticTextLabel(0, "UI mouse speed:")); + me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("UI mouse speed:"))); me.TD(me, 1, 2, e = makeXonoticSlider(0.2, 4.0, 0.1, "menu_mouse_speed")); me.TR(me); - me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "m_filter", "Mouse filter")); + me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "m_filter", _("Mouse filter"))); me.TR(me); - me.TD(me, 1, 3, e = makeXonoticCheckBox(1.022, "m_pitch", "Invert mouse")); + me.TD(me, 1, 3, e = makeXonoticCheckBox(1.022, "m_pitch", _("Invert mouse"))); me.TR(me); if(cvar_type("joy_enable") & CVAR_TYPEFLAG_ENGINE) - me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "joy_enable", "Use joystick input")); + me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "joy_enable", _("Use joystick input"))); else if(cvar_type("joystick") & CVAR_TYPEFLAG_ENGINE) - me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "joystick", "Use joystick input")); + me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "joystick", _("Use joystick input"))); me.TR(me); if(cvar_type("vid_dgamouse") & CVAR_TYPEFLAG_ENGINE) - me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "vid_dgamouse", "Turn off OS mouse acceleration")); + me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "vid_dgamouse", _("Turn off OS mouse acceleration"))); else if(cvar_type("apple_mouse_noaccel") & CVAR_TYPEFLAG_ENGINE) - me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "apple_mouse_noaccel", "Turn off OS mouse acceleration")); + me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "apple_mouse_noaccel", _("Turn off OS mouse acceleration"))); me.TR(me); - me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "con_closeontoggleconsole", "\"enter console\" also closes")); - me.TR(me); - me.TD(me, 1, 1, e = makeXonoticTextLabel(0, "Show binds:")); - me.TD(me, 1, 2, e = makeXonoticTextSlider("sbar_showbinds")); - e.addValue(e, "Actions", "0"); - e.addValue(e, "Bound keys", "1"); - e.addValue(e, "Both", "2"); - e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TD(me, 1, 3, e = makeXonoticCheckBoxEx(2, 0, "cl_showpressedkeys", "Show pressed keys")); + me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "con_closeontoggleconsole", _("\"enter console\" also closes"))); } #endif diff --git a/qcsrc/menu/xonotic/dialog_settings_input_userbind.c b/qcsrc/menu/xonotic/dialog_settings_input_userbind.c index 3cdfa95b73..aaf182fcd8 100644 --- a/qcsrc/menu/xonotic/dialog_settings_input_userbind.c +++ b/qcsrc/menu/xonotic/dialog_settings_input_userbind.c @@ -2,7 +2,7 @@ CLASS(XonoticUserbindEditDialog) EXTENDS(XonoticDialog) METHOD(XonoticUserbindEditDialog, loadUserBind, void(entity, string, string, string)) METHOD(XonoticUserbindEditDialog, fill, void(entity)) - ATTRIB(XonoticUserbindEditDialog, title, string, "User defined key bind") + ATTRIB(XonoticUserbindEditDialog, title, string, _("User defined key bind")) ATTRIB(XonoticUserbindEditDialog, color, vector, SKINCOLOR_DIALOG_USERBIND) ATTRIB(XonoticUserbindEditDialog, intendedWidth, float, 0.7) ATTRIB(XonoticUserbindEditDialog, rows, float, 4) @@ -36,19 +36,19 @@ void XonoticUserbindEditDialog_fill(entity me) { entity e; me.TR(me); - me.TD(me, 1, 1, e = makeXonoticTextLabel(0, "Name:")); + me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Name:"))); me.TD(me, 1, me.columns - 1, me.nameBox = makeXonoticInputBox(0, string_null)); me.TR(me); - me.TD(me, 1, 1, e = makeXonoticTextLabel(0, "Command when pressed:")); + me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Command when pressed:"))); me.TD(me, 1, me.columns - 1, me.commandPressBox = makeXonoticInputBox(0, string_null)); me.TR(me); - me.TD(me, 1, 1, e = makeXonoticTextLabel(0, "Command when released:")); + me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Command when released:"))); me.TD(me, 1, me.columns - 1, me.commandReleaseBox = makeXonoticInputBox(0, string_null)); me.TR(me); - me.TD(me, 1, me.columns / 2, e = makeXonoticButton("Save", '0 0 0')); + me.TD(me, 1, me.columns / 2, e = makeXonoticButton(_("Save"), '0 0 0')); e.onClick = XonoticUserbindEditDialog_Save; e.onClickEntity = me; - me.TD(me, 1, me.columns / 2, e = makeXonoticButton("Cancel", '0 0 0')); + me.TD(me, 1, me.columns / 2, e = makeXonoticButton(_("Cancel"), '0 0 0')); e.onClick = Dialog_Close; e.onClickEntity = me; } diff --git a/qcsrc/menu/xonotic/dialog_settings_misc.c b/qcsrc/menu/xonotic/dialog_settings_misc.c index 14293d7f2c..7fa3dc66b3 100644 --- a/qcsrc/menu/xonotic/dialog_settings_misc.c +++ b/qcsrc/menu/xonotic/dialog_settings_misc.c @@ -1,7 +1,7 @@ #ifdef INTERFACE CLASS(XonoticMiscSettingsTab) EXTENDS(XonoticTab) METHOD(XonoticMiscSettingsTab, fill, void(entity)) - ATTRIB(XonoticMiscSettingsTab, title, string, "Misc") + ATTRIB(XonoticMiscSettingsTab, title, string, _("Misc")) ATTRIB(XonoticMiscSettingsTab, intendedWidth, float, 0.9) ATTRIB(XonoticMiscSettingsTab, rows, float, 17) ATTRIB(XonoticMiscSettingsTab, columns, float, 6.5) @@ -23,54 +23,65 @@ void XonoticMiscSettingsTab_fill(entity me) entity sk; me.TR(me); - me.TD(me, 1, 3, e = makeXonoticTextLabel(0, "Menu skins:")); + me.TD(me, 1, 3, e = makeXonoticTextLabel(0, _("Menu skins:"))); me.TR(me); me.TD(me, me.rows - 2, 3, sk = makeXonoticSkinList()); me.gotoRC(me, me.rows - 1, 0); - me.TD(me, 1, 3, e = makeXonoticButton("Apply immediately", '0 0 0')); + me.TD(me, 1, 3, e = makeXonoticButton(_("Apply immediately"), '0 0 0')); e.onClick = SetSkin_Click; e.onClickEntity = sk; me.gotoRC(me, 0, 3.5); me.setFirstColumn(me, me.currentColumn); - me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "showtime", "Show current time")); + me.TD(me, 1, 3, e = makeXonoticTextLabel(0, _("Text language:"))); me.TR(me); - me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "showdate", "Show current date")); + me.TD(me, 3, 3, sk = makeXonoticLanguageList()); me.TR(me); - me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "showfps", "Show frames per second")); me.TR(me); - me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "cl_showspeed", "Speedometer")); + me.TR(me); + me.TD(me, 1, 3, e = makeXonoticButton(_("Apply immediately"), '0 0 0')); + e.onClick = SetLanguage_Click; + e.onClickEntity = sk; + + me.TR(me); + me.TR(me); + me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "showtime", _("Show current time"))); + me.TR(me); + me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "showdate", _("Show current date"))); + me.TR(me); + me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "showfps", _("Show frames per second"))); + me.TR(me); + me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "cl_showspeed", _("Speedometer"))); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 2.8/3, e = makeXonoticRadioButton(1, "cl_showspeed_unit", "0", "qu/s (hidden)")); + me.TD(me, 1, 2.8/3, e = makeXonoticRadioButton(1, "cl_showspeed_unit", "0", _("qu/s (hidden)"))); setDependent(e, "cl_showspeed", 1, 1); - me.TD(me, 1, 2.8/3, e = makeXonoticRadioButton(1, "cl_showspeed_unit", "1", "qu/s")); + me.TD(me, 1, 2.8/3, e = makeXonoticRadioButton(1, "cl_showspeed_unit", "1", _("qu/s"))); setDependent(e, "cl_showspeed", 1, 1); - me.TD(me, 1, 2.8/3, e = makeXonoticRadioButton(1, "cl_showspeed_unit", "2", "m/s")); + me.TD(me, 1, 2.8/3, e = makeXonoticRadioButton(1, "cl_showspeed_unit", "2", _("m/s"))); setDependent(e, "cl_showspeed", 1, 1); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 2.8/3, e = makeXonoticRadioButton(1, "cl_showspeed_unit", "3", "km/h")); + me.TD(me, 1, 2.8/3, e = makeXonoticRadioButton(1, "cl_showspeed_unit", "3", _("km/h"))); setDependent(e, "cl_showspeed", 1, 1); - me.TD(me, 1, 2.8/3, e = makeXonoticRadioButton(1, "cl_showspeed_unit", "4", "mph")); + me.TD(me, 1, 2.8/3, e = makeXonoticRadioButton(1, "cl_showspeed_unit", "4", _("mph"))); setDependent(e, "cl_showspeed", 1, 1); - me.TD(me, 1, 2.8/3, e = makeXonoticRadioButton(1, "cl_showspeed_unit", "5", "knots")); + me.TD(me, 1, 2.8/3, e = makeXonoticRadioButton(1, "cl_showspeed_unit", "5", _("knots"))); setDependent(e, "cl_showspeed", 1, 1); me.TR(me); - me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "cl_showacceleration", "Show accelerometer")); + me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "cl_showacceleration", _("Show accelerometer"))); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 2.8/2, e = makeXonoticTextLabel(0, "Accelerometer scale:")); + me.TD(me, 1, 2.8/2, e = makeXonoticTextLabel(0, _("Accelerometer scale:"))); setDependent(e, "cl_showacceleration", 1, 1); me.TD(me, 1, 2.8/2, e = makeXonoticSlider(0.2, 2, 0.2, "cl_showacceleration_scale")); setDependent(e, "cl_showacceleration", 1, 1); me.TR(me); me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 2.8, e = makeXonoticCheckBox(0, "cl_maxfps_alwayssleep", "Minimize input latency")); + me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "cl_maxfps_alwayssleep", _("Minimize input latency"))); me.TR(me); me.TR(me); me.TDempty(me, 0.5); - me.TD(me, 1, 2, e = makeXonoticButton("Advanced settings...", '0 0 0')); + me.TD(me, 1, 2, e = makeXonoticButton(_("Advanced settings..."), '0 0 0')); e.onClick = DialogOpenButton_Click; e.onClickEntity = main.cvarsDialog; } diff --git a/qcsrc/menu/xonotic/dialog_settings_misc_cvars.c b/qcsrc/menu/xonotic/dialog_settings_misc_cvars.c index 0d846caf2a..7f26a40026 100644 --- a/qcsrc/menu/xonotic/dialog_settings_misc_cvars.c +++ b/qcsrc/menu/xonotic/dialog_settings_misc_cvars.c @@ -1,9 +1,8 @@ #ifdef INTERFACE CLASS(XonoticCvarsDialog) EXTENDS(XonoticDialog) - METHOD(XonoticCvarsDialog, toString, string(entity)) METHOD(XonoticCvarsDialog, fill, void(entity)) METHOD(XonoticCvarsDialog, showNotify, void(entity)) - ATTRIB(XonoticCvarsDialog, title, string, "Advanced settings") + ATTRIB(XonoticCvarsDialog, title, string, _("Advanced settings")) ATTRIB(XonoticCvarsDialog, color, vector, SKINCOLOR_DIALOG_CVARS) ATTRIB(XonoticCvarsDialog, intendedWidth, float, 0.8) ATTRIB(XonoticCvarsDialog, rows, float, 25) @@ -16,17 +15,13 @@ void XonoticCvarsDialog_showNotify(entity me) { loadAllCvars(me); } -string XonoticCvarsDialog_toString(entity me) -{ - return "XXX"; -} void XonoticCvarsDialog_fill(entity me) { entity e, cvarlist, btn; cvarlist = makeXonoticCvarList(); me.TR(me); - me.TD(me, 1, 1, e = makeXonoticTextLabel(0, "Cvar filter:")); - me.TD(me, 1, 0.5, btn = makeXonoticButton("Clear", '0 0 0')); + me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Cvar filter:"))); + me.TD(me, 1, 0.5, btn = makeXonoticButton(_("Clear"), '0 0 0')); me.TD(me, 1, me.columns - 1.5, e = makeXonoticInputBox(0, string_null)); e.onChange = CvarList_Filter_Change; e.onChangeEntity = cvarlist; @@ -36,15 +31,15 @@ void XonoticCvarsDialog_fill(entity me) me.TR(me); me.TD(me, me.rows - me.currentRow - 7, me.columns, cvarlist); me.gotoRC(me, me.rows - 7, 0); - me.TD(me, 1, 1, e = makeXonoticTextLabel(0, "Setting:")); + me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Setting:"))); me.TD(me, 1, me.columns - 1, e = makeXonoticTextLabel(0, string_null)); cvarlist.cvarNameBox = e; me.TR(me); - me.TD(me, 1, 1, e = makeXonoticTextLabel(0, "Type:")); + me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Type:"))); me.TD(me, 1, me.columns - 1, e = makeXonoticTextLabel(0, string_null)); cvarlist.cvarTypeBox = e; me.TR(me); - me.TD(me, 1, 1, e = makeXonoticTextLabel(0, "Value:")); + me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Value:"))); me.TD(me, 1, me.columns - 2, e = makeXonoticInputBox(0, string_null)); cvarlist.cvarValueBox = e; e.onChange = CvarList_Value_Change; @@ -56,12 +51,12 @@ void XonoticCvarsDialog_fill(entity me) e.allowCut = 1; e.marginLeft = e.marginRight = 0.5; me.TR(me); - me.TD(me, 1, 1, e = makeXonoticTextLabel(0, "Description:")); + me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Description:"))); me.TD(me, 1, me.columns - 1, e = makeXonoticTextLabel(0, string_null)); cvarlist.cvarDescriptionBox = e; e.allowWrap = 1; me.gotoRC(me, me.rows - 1, 0); - me.TD(me, 1, me.columns, e = makeXonoticButton("OK", '0 0 0')); + me.TD(me, 1, me.columns, e = makeXonoticButton(_("OK"), '0 0 0')); e.onClick = Dialog_Close; e.onClickEntity = me; } diff --git a/qcsrc/menu/xonotic/dialog_settings_network.c b/qcsrc/menu/xonotic/dialog_settings_network.c index 6e0c472afb..9b6b7c3303 100644 --- a/qcsrc/menu/xonotic/dialog_settings_network.c +++ b/qcsrc/menu/xonotic/dialog_settings_network.c @@ -1,7 +1,7 @@ #ifdef INTERFACE CLASS(XonoticNetworkSettingsTab) EXTENDS(XonoticTab) METHOD(XonoticNetworkSettingsTab, fill, void(entity)) - ATTRIB(XonoticNetworkSettingsTab, title, string, "Network") + ATTRIB(XonoticNetworkSettingsTab, title, string, _("Network")) ATTRIB(XonoticNetworkSettingsTab, intendedWidth, float, 0.9) ATTRIB(XonoticNetworkSettingsTab, rows, float, 17) ATTRIB(XonoticNetworkSettingsTab, columns, float, 6.5) @@ -23,38 +23,38 @@ void XonoticNetworkSettingsTab_fill(entity me) entity e; me.TR(me); - me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "cl_movement", "Client-side movement prediction")); + me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "cl_movement", _("Client-side movement prediction"))); me.TR(me); - //me.TD(me, 1, 3, e = makeXonoticCheckBox(1, "cl_nolerp", "Network update smoothing")); + //me.TD(me, 1, 3, e = makeXonoticCheckBox(1, "cl_nolerp", _("Network update smoothing"))); me.TR(me); - me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "shownetgraph", "Show netgraph")); + me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "shownetgraph", _("Show netgraph"))); me.TR(me); me.TR(me); - me.TD(me, 1, 1, e = makeXonoticTextLabel(0, "Network speed:")); + me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Network speed:"))); me.TD(me, 1, 2, e = makeXonoticTextSlider("_cl_rate")); - e.addValue(e, "56k", "4000"); - e.addValue(e, "ISDN", "7000"); - e.addValue(e, "Slow ADSL", "15000"); - e.addValue(e, "Fast ADSL", "20000"); - e.addValue(e, "Broadband", "66666"); + e.addValue(e, _("56k"), "4000"); + e.addValue(e, _("ISDN"), "7000"); + e.addValue(e, _("Slow ADSL"), "15000"); + e.addValue(e, _("Fast ADSL"), "20000"); + e.addValue(e, _("Broadband"), "66666"); e.configureXonoticTextSliderValues(e); me.TR(me); - me.TD(me, 1, 1, e = makeXonoticTextLabel(0, "Input packets/s:")); + me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Input packets/s:"))); me.TD(me, 1, 2, e = makeXonoticSlider(20, 100, 1, "cl_netfps")); me.TR(me); me.TR(me); - me.TD(me, 1, 3, e = makeXonoticTextLabel(0, "HTTP downloads:")); + me.TD(me, 1, 3, e = makeXonoticTextLabel(0, _("HTTP downloads:"))); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 0.8, e = makeXonoticTextLabel(0, "Downloads:")); + me.TD(me, 1, 0.8, e = makeXonoticTextLabel(0, _("Downloads:"))); me.TD(me, 1, 2, e = makeXonoticSlider(1, 5, 1, "cl_curl_maxdownloads")); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 0.8, e = makeXonoticTextLabel(0, "Speed (kB/s):")); + me.TD(me, 1, 0.8, e = makeXonoticTextLabel(0, _("Speed (kB/s):"))); me.TD(me, 1, 2, e = makeXonoticSlider(10, 1500, 10, "cl_curl_maxspeed")); me.TR(me); me.TR(me); - me.TD(me, 1, 1, e = makeXonoticTextLabel(0, "Client UDP port:")); + me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Client UDP port:"))); me.TD(me, 1, 0.64, e = makeXonoticInputBox(0, "cl_port")); } #endif diff --git a/qcsrc/menu/xonotic/dialog_settings_video.c b/qcsrc/menu/xonotic/dialog_settings_video.c index 0aa5e68cc3..951e816086 100644 --- a/qcsrc/menu/xonotic/dialog_settings_video.c +++ b/qcsrc/menu/xonotic/dialog_settings_video.c @@ -1,7 +1,7 @@ #ifdef INTERFACE CLASS(XonoticVideoSettingsTab) EXTENDS(XonoticTab) METHOD(XonoticVideoSettingsTab, fill, void(entity)) - ATTRIB(XonoticVideoSettingsTab, title, string, "Video") + ATTRIB(XonoticVideoSettingsTab, title, string, _("Video")) ATTRIB(XonoticVideoSettingsTab, intendedWidth, float, 0.9) ATTRIB(XonoticVideoSettingsTab, rows, float, 17) ATTRIB(XonoticVideoSettingsTab, columns, float, 6.5) @@ -23,86 +23,86 @@ void XonoticVideoSettingsTab_fill(entity me) entity e; me.TR(me); - me.TD(me, 1, 1, e = makeXonoticTextLabel(0, "Resolution:")); + me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Resolution:"))); me.TD(me, 1, 2, e = makeXonoticResolutionSlider()); me.TR(me); - me.TD(me, 1, 1, e = makeXonoticTextLabel(0, "Font/UI size:")); + me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Font/UI size:"))); me.TD(me, 1, 2, e = makeXonoticTextSlider("menu_vid_scale")); - e.addValue(e, "Unreadable", "-1"); - e.addValue(e, "Tiny", "-0.75"); - e.addValue(e, "Little", "-0.5"); - e.addValue(e, "Small", "-0.25"); - e.addValue(e, "Medium", "0"); - e.addValue(e, "Large", "0.25"); - e.addValue(e, "Huge", "0.5"); - e.addValue(e, "Gigantic", "0.75"); - e.addValue(e, "Colossal", "1"); + e.addValue(e, ZCTX(_("SZ^Unreadable")), "-1"); + e.addValue(e, ZCTX(_("SZ^Tiny")), "-0.75"); + e.addValue(e, ZCTX(_("SZ^Little")), "-0.5"); + e.addValue(e, ZCTX(_("SZ^Small")), "-0.25"); + e.addValue(e, ZCTX(_("SZ^Medium")), "0"); + e.addValue(e, ZCTX(_("SZ^Large")), "0.25"); + e.addValue(e, ZCTX(_("SZ^Huge")), "0.5"); + e.addValue(e, ZCTX(_("SZ^Gigantic")), "0.75"); + e.addValue(e, ZCTX(_("SZ^Colossal")), "1"); e.configureXonoticTextSliderValues(e); me.TR(me); - me.TD(me, 1, 1, e = makeXonoticTextLabel(0, "Color depth:")); + me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Color depth:"))); me.TD(me, 1, 2, e = makeXonoticSlider(16, 32, 16, "vid_bitsperpixel")); me.TR(me); - me.TD(me, 1, 1, e = makeXonoticCheckBox(0, "vid_fullscreen", "Full screen")); - me.TD(me, 1, 2, e = makeXonoticCheckBox(0, "vid_vsync", "Vertical Synchronization")); + me.TD(me, 1, 1, e = makeXonoticCheckBox(0, "vid_fullscreen", _("Full screen"))); + me.TD(me, 1, 2, e = makeXonoticCheckBox(0, "vid_vsync", _("Vertical Synchronization"))); me.TR(me); me.TR(me); - me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "vid_gl20", "Use OpenGL 2.0 shaders (GLSL)")); + me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "vid_gl20", _("Use OpenGL 2.0 shaders (GLSL)"))); me.TR(me); me.TR(me); - me.TD(me, 1, 2, e = makeXonoticCheckBox(0, "r_coronas_occlusionquery", "Use Occlusion Queries")); + me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "r_coronas_occlusionquery", _("Use Occlusion Queries"))); me.TR(me); me.TR(me); - me.TD(me, 1, 3, e = makeXonoticTextLabel(0, "Vertex Buffer Objects (VBOs)")); + me.TD(me, 1, 3, e = makeXonoticTextLabel(0, _("Vertex Buffer Objects (VBOs)"))); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 0.9, e = makeXonoticRadioButton(1, "gl_vbo", "0", "Off")); - me.TD(me, 1, 2.1, e = makeXonoticRadioButton(1, "gl_vbo", "3", "Vertices, some Tris (compatible)")); + me.TD(me, 1, 0.9, e = makeXonoticRadioButton(1, "gl_vbo", "0", ZCTX(_("VBO^Off")))); + me.TD(me, 1, 1.9, e = makeXonoticRadioButton(1, "gl_vbo", "3", _("Vertices, some Tris (compatible)"))); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 0.9, e = makeXonoticRadioButton(1, "gl_vbo", "2", "Vertices")); - me.TD(me, 1, 2.1, e = makeXonoticRadioButton(1, "gl_vbo", "1", "Vertices and Triangles")); + me.TD(me, 1, 0.9, e = makeXonoticRadioButton(1, "gl_vbo", "2", _("Vertices"))); + me.TD(me, 1, 1.9, e = makeXonoticRadioButton(1, "gl_vbo", "1", _("Vertices and Triangles"))); me.TR(me); - me.TD(me, 1, 1, e = makeXonoticTextLabel(0, "Depth first:")); + me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Depth first:"))); me.TD(me, 1, 2, e = makeXonoticTextSlider("r_depthfirst")); - e.addValue(e, "Disabled", "0"); - e.addValue(e, "World", "1"); - e.addValue(e, "All", "2"); + e.addValue(e, ZCTX(_("DF^Disabled")), "0"); + e.addValue(e, ZCTX(_("DF^World")), "1"); + e.addValue(e, ZCTX(_("DF^All")), "2"); e.configureXonoticTextSliderValues(e); me.TR(me); if(cvar_type("apple_multithreadedgl") & CVAR_TYPEFLAG_ENGINE) - me.TD(me, 1, 3, e = makeXonoticCheckBox(1, "apple_multithreadedgl", "Disable multithreaded OpenGL")); + me.TD(me, 1, 3, e = makeXonoticCheckBox(1, "apple_multithreadedgl", _("Disable multithreaded OpenGL"))); me.TR(me); - me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "gl_finish", "Wait for GPU to finish each frame")); + me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "gl_finish", _("Wait for GPU to finish each frame"))); me.gotoRC(me, 0, 3.5); me.setFirstColumn(me, me.currentColumn); - me.TD(me, 1, 1, e = makeXonoticTextLabel(0, "Brightness:")); + me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Brightness:"))); me.TD(me, 1, 2, e = makeXonoticSlider(0.0, 0.5, 0.02, "v_brightness")); me.TR(me); - me.TD(me, 1, 1, e = makeXonoticTextLabel(0, "Contrast:")); + me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Contrast:"))); me.TD(me, 1, 2, e = makeXonoticSlider(1.0, 3.0, 0.05, "v_contrast")); me.TR(me); - me.TD(me, 1, 1, e = makeXonoticTextLabel(0, "Gamma:")); + me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Gamma:"))); me.TD(me, 1, 2, e = makeXonoticSlider(0.5, 2.0, 0.05, "v_gamma")); me.TR(me); - me.TD(me, 1, 1, e = makeXonoticTextLabel(0, "Contrast boost:")); + me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Contrast boost:"))); me.TD(me, 1, 2, e = makeXonoticSlider(1.0, 5.0, 0.1, "v_contrastboost")); me.TR(me); - me.TD(me, 1, 1, e = makeXonoticTextLabel(0, "Saturation:")); + me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Saturation:"))); setDependent(e, "vid_gl20", 1, 1); me.TD(me, 1, 2, e = makeXonoticSlider(0.5, 2.0, 0.05, "r_glsl_saturation")); setDependent(e, "vid_gl20", 1, 1); me.TR(me); - me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "v_glslgamma", "Use GLSL to handle color control")); + me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "v_glslgamma", _("Use GLSL to handle color control"))); setDependent(e, "vid_gl20", 1, 1); me.TR(me); me.TR(me); - me.TD(me, 1, 1, e = makeXonoticTextLabel(0, "Ambient:")); + me.TD(me, 1, 1, e = makeXonoticTextLabel(0, ZCTX(_("LIT^Ambient:")))); me.TD(me, 1, 2, e = makeXonoticSlider(0, 20.0, 1.0, "r_ambient")); me.TR(me); - me.TD(me, 1, 1, e = makeXonoticTextLabel(0, "Intensity:")); + me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Intensity:"))); me.TD(me, 1, 2, e = makeXonoticSlider(0.5, 2.0, 0.05, "r_hdr_scenebrightness")); me.gotoRC(me, me.rows - 1, 0); - me.TD(me, 1, me.columns, makeXonoticCommandButton("Apply immediately", '0 0 0', "menu_cmd setresolution; vid_restart; menu_restart; togglemenu; defer 0.1 \"menu_cmd videosettings\"", COMMANDBUTTON_APPLY)); + me.TD(me, 1, me.columns, makeXonoticCommandButton(_("Apply immediately"), '0 0 0', "menu_cmd setresolution; vid_restart; menu_restart; togglemenu; defer 0.1 \"menu_cmd videosettings\"", COMMANDBUTTON_APPLY)); } #endif diff --git a/qcsrc/menu/xonotic/dialog_singleplayer.c b/qcsrc/menu/xonotic/dialog_singleplayer.c index 560192ff1d..81eb68e392 100644 --- a/qcsrc/menu/xonotic/dialog_singleplayer.c +++ b/qcsrc/menu/xonotic/dialog_singleplayer.c @@ -1,7 +1,7 @@ #ifdef INTERFACE CLASS(XonoticSingleplayerDialog) EXTENDS(XonoticDialog) METHOD(XonoticSingleplayerDialog, fill, void(entity)) - ATTRIB(XonoticSingleplayerDialog, title, string, "Singleplayer") + ATTRIB(XonoticSingleplayerDialog, title, string, _("Singleplayer")) ATTRIB(XonoticSingleplayerDialog, color, vector, SKINCOLOR_DIALOG_SINGLEPLAYER) ATTRIB(XonoticSingleplayerDialog, intendedWidth, float, 0.80) ATTRIB(XonoticSingleplayerDialog, rows, float, 24) @@ -56,14 +56,14 @@ void XonoticSingleplayerDialog_fill(entity me) me.TR(me); me.TDempty(me, (me.columns - 3) / 2); - me.TD(me, 2, 3, e = makeXonoticBigButton("Instant action! (random map with bots)", '0 0 0')); + me.TD(me, 2, 3, e = makeXonoticBigButton(_("Instant action! (random map with bots)"), '0 0 0')); e.onClick = InstantAction_LoadMap; e.onClickEntity = NULL; me.TR(me); me.TR(me); me.TR(me); me.TD(me, 1, 1, btnPrev = makeXonoticButton("<<", '0 0 0')); - me.TD(me, 1, me.columns - 2, lblTitle = makeXonoticTextLabel(0.5, "???")); + me.TD(me, 1, me.columns - 2, lblTitle = makeXonoticTextLabel(0.5, _("???"))); me.TD(me, 1, 1, btnNext = makeXonoticButton(">>", '0 0 0')); me.TR(me); me.TD(me, me.rows - 5, me.columns, me.campaignBox = makeXonoticCampaignList()); @@ -77,7 +77,7 @@ void XonoticSingleplayerDialog_fill(entity me) me.campaignBox.campaignGo(me.campaignBox, 0); me.gotoRC(me, me.rows - 1, 0); - me.TD(me, 1, me.columns, e = makeXonoticButton("Start Singleplayer!", '0 0 0')); + me.TD(me, 1, me.columns, e = makeXonoticButton(_("Start Singleplayer!"), '0 0 0')); e.onClick = CampaignList_LoadMap; e.onClickEntity = me.campaignBox; } diff --git a/qcsrc/menu/xonotic/dialog_singleplayer_winner.c b/qcsrc/menu/xonotic/dialog_singleplayer_winner.c index 5d377e6d0a..8e584b8a8a 100644 --- a/qcsrc/menu/xonotic/dialog_singleplayer_winner.c +++ b/qcsrc/menu/xonotic/dialog_singleplayer_winner.c @@ -1,7 +1,7 @@ #ifdef INTERFACE CLASS(XonoticWinnerDialog) EXTENDS(XonoticDialog) METHOD(XonoticWinnerDialog, fill, void(entity)) - ATTRIB(XonoticWinnerDialog, title, string, "Winner") + ATTRIB(XonoticWinnerDialog, title, string, _("Winner")) ATTRIB(XonoticWinnerDialog, color, vector, SKINCOLOR_DIALOG_SINGLEPLAYER) ATTRIB(XonoticWinnerDialog, intendedWidth, float, 0.32) ATTRIB(XonoticWinnerDialog, rows, float, 12) @@ -18,7 +18,7 @@ void XonoticWinnerDialog_fill(entity me) me.TD(me, me.rows - 2, me.columns, e = makeXonoticImage("/gfx/winner", -1)); me.gotoRC(me, me.rows - 1, 0); - me.TD(me, 1, me.columns, e = makeXonoticButton("OK", '0 0 0')); + me.TD(me, 1, me.columns, e = makeXonoticButton(_("OK"), '0 0 0')); e.onClick = Dialog_Close; e.onClickEntity = me; } diff --git a/qcsrc/menu/xonotic/dialog_teamselect.c b/qcsrc/menu/xonotic/dialog_teamselect.c index e0908ee364..7fb154c8a2 100644 --- a/qcsrc/menu/xonotic/dialog_teamselect.c +++ b/qcsrc/menu/xonotic/dialog_teamselect.c @@ -2,7 +2,7 @@ CLASS(XonoticTeamSelectDialog) EXTENDS(XonoticRootDialog) METHOD(XonoticTeamSelectDialog, fill, void(entity)) // to be overridden by user to fill the dialog with controls METHOD(XonoticTeamSelectDialog, showNotify, void(entity)) - ATTRIB(XonoticTeamSelectDialog, title, string, "Team Selection") // ;) + ATTRIB(XonoticTeamSelectDialog, title, string, _("Team Selection")) // ;) ATTRIB(XonoticTeamSelectDialog, color, vector, SKINCOLOR_DIALOG_TEAMSELECT) ATTRIB(XonoticTeamSelectDialog, intendedWidth, float, 0.4) ATTRIB(XonoticTeamSelectDialog, rows, float, 5) @@ -38,17 +38,17 @@ void XonoticTeamSelectDialog_fill(entity me) { entity e; me.TR(me); - me.TD(me, 2, 4, e = makeTeamButton("join 'best' team (auto-select)", '0 0 0', "cmd selectteam auto; cmd join")); + me.TD(me, 2, 4, e = makeTeamButton(_("join 'best' team (auto-select)"), '0 0 0', "cmd selectteam auto; cmd join")); e.preferredFocusPriority = 1; me.TR(me); me.TR(me); - me.TD(me, 2, 1, me.team1 = makeTeamButton("red", '1 0.5 0.5', "cmd selectteam red; cmd join")); - me.TD(me, 2, 1, me.team2 = makeTeamButton("blue", '0.5 0.5 1', "cmd selectteam blue; cmd join")); - me.TD(me, 2, 1, me.team3 = makeTeamButton("yellow", '1 1 0.5', "cmd selectteam yellow; cmd join")); - me.TD(me, 2, 1, me.team4 = makeTeamButton("pink", '1 0.5 1', "cmd selectteam pink; cmd join")); + me.TD(me, 2, 1, me.team1 = makeTeamButton(_("red"), '1 0.5 0.5', "cmd selectteam red; cmd join")); + me.TD(me, 2, 1, me.team2 = makeTeamButton(_("blue"), '0.5 0.5 1', "cmd selectteam blue; cmd join")); + me.TD(me, 2, 1, me.team3 = makeTeamButton(_("yellow"), '1 1 0.5', "cmd selectteam yellow; cmd join")); + me.TD(me, 2, 1, me.team4 = makeTeamButton(_("pink"), '1 0.5 1', "cmd selectteam pink; cmd join")); me.TR(me); me.TR(me); - me.TD(me, 1, 4, makeXonoticCommandButton("spectate", '0 0 0', "cmd spectate", 1)); + me.TD(me, 1, 4, makeXonoticCommandButton(_("spectate"), '0 0 0', "cmd spectate", 1)); } #endif diff --git a/qcsrc/menu/xonotic/inputbox.c b/qcsrc/menu/xonotic/inputbox.c index e457414b4a..2a9c094b8e 100644 --- a/qcsrc/menu/xonotic/inputbox.c +++ b/qcsrc/menu/xonotic/inputbox.c @@ -20,6 +20,8 @@ CLASS(XonoticInputBox) EXTENDS(InputBox) METHOD(XonoticInputBox, loadCvars, void(entity)) METHOD(XonoticInputBox, saveCvars, void(entity)) METHOD(XonoticInputBox, keyDown, float(entity, float, float, float)) + + ATTRIB(XonoticInputBox, saveImmediately, float, 0) ENDCLASS(XonoticInputBox) entity makeXonoticInputBox(float, string); #endif @@ -54,6 +56,8 @@ void XonoticInputBox_setText(entity me, string new) { SUPER(XonoticInputBox).setText(me, new); me.onChange(me, me.onChangeEntity); + if(me.saveImmediately) + me.saveCvars(me); } else SUPER(XonoticInputBox).setText(me, new); diff --git a/qcsrc/menu/xonotic/keybinder.c b/qcsrc/menu/xonotic/keybinder.c index 87273b24c6..f4a6c5a3e3 100644 --- a/qcsrc/menu/xonotic/keybinder.c +++ b/qcsrc/menu/xonotic/keybinder.c @@ -47,7 +47,7 @@ void Xonotic_KeyBinds_Read() string s; Xonotic_KeyBinds_Count = 0; - fh = fopen("keybinds.txt", FILE_READ); + fh = fopen(language_filename("keybinds.txt"), FILE_READ); if(fh < 0) return; while((s = fgets(fh))) diff --git a/qcsrc/menu/xonotic/languagelist.c b/qcsrc/menu/xonotic/languagelist.c new file mode 100644 index 0000000000..0ea54dbcaf --- /dev/null +++ b/qcsrc/menu/xonotic/languagelist.c @@ -0,0 +1,184 @@ +#ifdef INTERFACE +CLASS(XonoticLanguageList) EXTENDS(XonoticListBox) + METHOD(XonoticLanguageList, configureXonoticLanguageList, void(entity)) + ATTRIB(XonoticLanguageList, rowsPerItem, float, 1) + METHOD(XonoticLanguageList, drawListBoxItem, void(entity, float, vector, float)) + METHOD(XonoticLanguageList, resizeNotify, void(entity, vector, vector, vector, vector)) + METHOD(XonoticLanguageList, setSelected, void(entity, float)) + METHOD(XonoticLanguageList, loadCvars, void(entity)) + METHOD(XonoticLanguageList, saveCvars, void(entity)) + + ATTRIB(XonoticLanguageList, realFontSize, vector, '0 0 0') + ATTRIB(XonoticLanguageList, realUpperMargin, float, 0) + ATTRIB(XonoticLanguageList, columnNameOrigin, float, 0) + ATTRIB(XonoticLanguageList, columnNameSize, float, 0) + + METHOD(XonoticLanguageList, clickListBoxItem, void(entity, float, vector)) // double click handling + METHOD(XonoticLanguageList, keyDown, float(entity, float, float, float)) // enter handling + ATTRIB(XonoticLanguageList, lastClickedLanguage, float, -1) + ATTRIB(XonoticLanguageList, lastClickedTime, float, 0) + + METHOD(XonoticLanguageList, destroy, void(entity)) + + ATTRIB(XonoticLanguageList, languagelist, float, -1) + METHOD(XonoticLanguageList, getLanguages, void(entity)) + METHOD(XonoticLanguageList, setLanguage, void(entity)) + METHOD(XonoticLanguageList, languageParameter, string(entity, float, float)) + + ATTRIB(XonoticLanguageList, name, string, "languageselector") // change this to make it noninteractive (for first run dialog) + + ATTRIB(XonoticLanguageList, doubleClickCommand, string, "menu_restart\ntogglemenu\ndefer 0.1 \"menu_cmd languageselect\"") +ENDCLASS(XonoticLanguageList) + +entity makeXonoticLanguageList(); +void SetLanguage_Click(entity btn, entity me); +#endif + +#ifdef IMPLEMENTATION + +#define LANGPARM_ID 0 +#define LANGPARM_NAME 1 +#define LANGPARM_NAME_LOCALIZED 2 +#define LANGPARM_COUNT 3 + +entity makeXonoticLanguageList() +{ + entity me; + me = spawnXonoticLanguageList(); + me.configureXonoticLanguageList(me); + return me; +} + +void XonoticLanguageList_configureXonoticLanguageList(entity me) +{ + me.configureXonoticListBox(me); + me.getLanguages(me); + me.loadCvars(me); +} + +void XonoticLanguageList_drawListBoxItem(entity me, float i, vector absSize, float isSelected) +{ + string s; + if(isSelected) + draw_Fill('0 0 0', '1 1 0', SKINCOLOR_LISTBOX_SELECTED, SKINALPHA_LISTBOX_SELECTED); + s = me.languageParameter(me, i, LANGPARM_NAME_LOCALIZED); + draw_Text(me.realUpperMargin * eY + (me.columnNameOrigin + (me.columnNameSize - draw_TextWidth(s, 0, me.realFontSize)) * 0.5) * eX, s, me.realFontSize, '1 1 1', SKINALPHA_TEXT, 0); +} + +void XonoticLanguageList_resizeNotify(entity me, vector relOrigin, vector relSize, vector absOrigin, vector absSize) +{ + SUPER(XonoticLanguageList).resizeNotify(me, relOrigin, relSize, absOrigin, absSize); + me.realFontSize_y = me.fontSize / (absSize_y * me.itemHeight); + me.realFontSize_x = me.fontSize / (absSize_x * (1 - me.controlWidth)); + me.realUpperMargin = 0.5 * (1 - me.realFontSize_y); + me.columnNameOrigin = 0; + me.columnNameSize = 1; +} + +void XonoticLanguageList_setSelected(entity me, float i) +{ + SUPER(XonoticLanguageList).setSelected(me, i); + me.saveCvars(me); +} + +void XonoticLanguageList_loadCvars(entity me) +{ + string s; + float i, n; + s = cvar_string("prvm_language"); + n = me.nItems; + + // default to English + for(i = 0; i < n; ++i) + { + if(me.languageParameter(me, i, LANGPARM_ID) == "en") + { + me.selectedItem = i; + break; + } + } + + // otherwise, find the language + for(i = 0; i < n; ++i) + { + if(me.languageParameter(me, i, LANGPARM_ID) == s) + { + me.selectedItem = i; + break; + } + } +} + +void XonoticLanguageList_saveCvars(entity me) +{ + cvar_set("prvm_language", me.languageParameter(me, me.selectedItem, LANGPARM_ID)); +} + +void XonoticLanguageList_clickListBoxItem(entity me, float i, vector where) +{ + if(i == me.lastClickedLanguage) + if(time < me.lastClickedTime + 0.3) + { + // DOUBLE CLICK! + me.setSelected(me, i); + me.setLanguage(me); + } + me.lastClickedLanguage = i; + me.lastClickedTime = time; +} + +float XonoticLanguageList_keyDown(entity me, float scan, float ascii, float shift) +{ + if(scan == K_ENTER || scan == K_KP_ENTER) { + me.setLanguage(me); + return 1; + } + else + return SUPER(XonoticLanguageList).keyDown(me, scan, ascii, shift); +} + +void XonoticLanguageList_destroy(entity me) +{ + buf_del(me.languagelist); +} + +void XonoticLanguageList_getLanguages(entity me) +{ + float buf, i, n, fh; + string s; + + buf = buf_create(); + + fh = fopen("languages.txt", FILE_READ); + while((s = fgets(fh))) + { + n = tokenize_console(s); + if(n < 3) + continue; + bufstr_set(buf, i * LANGPARM_COUNT + LANGPARM_ID, argv(0)); + bufstr_set(buf, i * LANGPARM_COUNT + LANGPARM_NAME, argv(1)); + bufstr_set(buf, i * LANGPARM_COUNT + LANGPARM_NAME_LOCALIZED, argv(2)); + ++i; + } + fclose(fh); + + me.languagelist = buf; + me.nItems = i; +} + +void XonoticLanguageList_setLanguage(entity me) +{ + localcmd(sprintf("\n%s\n", me.doubleClickCommand)); +} + +string XonoticLanguageList_languageParameter(entity me, float i, float key) +{ + return bufstr_get(me.languagelist, i * LANGPARM_COUNT + key); +} + +void SetLanguage_Click(entity btn, entity me) +{ + me.setLanguage(me); +} + +#endif diff --git a/qcsrc/menu/xonotic/mainwindow.c b/qcsrc/menu/xonotic/mainwindow.c index 72e5faac36..bd15150a8c 100644 --- a/qcsrc/menu/xonotic/mainwindow.c +++ b/qcsrc/menu/xonotic/mainwindow.c @@ -1,6 +1,8 @@ #ifdef INTERFACE CLASS(MainWindow) EXTENDS(ModalController) METHOD(MainWindow, configureMainWindow, void(entity)) + METHOD(MainWindow, draw, void(entity)) + ATTRIB(MainWindow, firstRunDialog, entity, NULL) ATTRIB(MainWindow, advancedDialog, entity, NULL) ATTRIB(MainWindow, mutatorsDialog, entity, NULL) ATTRIB(MainWindow, weaponsDialog, entity, NULL) @@ -12,23 +14,38 @@ CLASS(MainWindow) EXTENDS(ModalController) ATTRIB(MainWindow, cvarsDialog, entity, NULL) ATTRIB(MainWindow, mainNexposee, entity, NULL) ATTRIB(MainWindow, fadedAlpha, float, SKINALPHA_BEHIND) + ATTRIB(MainWindow, dialogToShow, entity, NULL) ENDCLASS(MainWindow) #endif #ifdef IMPLEMENTATION +void MainWindow_draw(entity me) +{ + SUPER(MainWindow).draw(me); + + if(me.dialogToShow) + { + DialogOpenButton_Click_withCoords(world, me.dialogToShow, '0 0 0', eX * conwidth + eY * conheight); + me.dialogToShow = NULL; + } +} void DemoButton_Click(entity me, entity other) { - if(me.text == "Do not press this button again!") + if(me.text == _("Do not press this button again!")) DialogOpenButton_Click(me, other); else - me.setText(me, "Do not press this button again!"); + me.setText(me, _("Do not press this button again!")); } void MainWindow_configureMainWindow(entity me) { entity n, i; + me.firstRunDialog = i = spawnXonoticFirstRunDialog(); + i.configureDialog(i); + me.addItemCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z); + i = spawnXonoticTeamSelectDialog(); i.configureDialog(i); me.addItemCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z); @@ -173,6 +190,9 @@ void MainWindow_configureMainWindow(entity me) me.moveItemAfter(me, n, NULL); me.initializeDialog(me, n); + + if(cvar_string("_cl_name") == "Player") + me.dialogToShow = me.firstRunDialog; } #endif diff --git a/qcsrc/menu/xonotic/maplist.c b/qcsrc/menu/xonotic/maplist.c index 8b5ce6d6a7..1390ff3b1a 100644 --- a/qcsrc/menu/xonotic/maplist.c +++ b/qcsrc/menu/xonotic/maplist.c @@ -275,20 +275,22 @@ void MapList_LoadMap(entity btn, entity me) m = MapInfo_BSPName_ByID(i); if not(m) { - print("Huh? Can't play this (m is NULL). Refiltering so this won't happen again.\n"); + print(_("Huh? Can't play this (m is NULL). Refiltering so this won't happen again.\n")); + me.refilter(me); return; } if(MapInfo_CheckMap(m)) { localcmd("\nmenu_loadmap_prepare\n"); if(cvar("menu_use_default_hostname")) - localcmd("hostname \"", strdecolorize(cvar_string("_cl_name")), "'s Xonotic server\"\n"); + localcmd("hostname \"", sprintf(_("%s's Xonotic Server"), strdecolorize(cvar_string("_cl_name"))), "\"\n"); MapInfo_LoadMap(m); } else { - print("Huh? Can't play this (invalid game type). Refiltering so this won't happen again.\n"); + print(_("Huh? Can't play this (invalid game type). Refiltering so this won't happen again.\n")); me.refilter(me); + return; } } diff --git a/qcsrc/menu/xonotic/playermodel.c b/qcsrc/menu/xonotic/playermodel.c index bbef3a6b1c..ef02224dfa 100644 --- a/qcsrc/menu/xonotic/playermodel.c +++ b/qcsrc/menu/xonotic/playermodel.c @@ -47,7 +47,7 @@ void XonoticPlayerModelSelector_configureXonoticPlayerModelSelector(entity me) float sortbuf, glob, i; string fn; - glob = search_begin(get_model_datafilename(string_null, -1, "txt"), TRUE, TRUE); + glob = search_begin(language_filename(get_model_datafilename(string_null, -1, "txt")), TRUE, TRUE); if (glob < 0) return; @@ -77,11 +77,11 @@ void XonoticPlayerModelSelector_configureXonoticPlayerModelSelector(entity me) bufstr_set(me.bufModels, BUFMODELS_COUNT*i+BUFMODELS_SKIN, ftos(get_model_parameters_modelskin)); get_model_parameters_desc = strcat(get_model_parameters_desc, "\n"); if(get_model_parameters_sex) - get_model_parameters_desc = strcat(get_model_parameters_desc, "\nSex: ", get_model_parameters_sex); + get_model_parameters_desc = strcat(get_model_parameters_desc, sprintf("\nSex: %s", get_model_parameters_sex)); if(get_model_parameters_weight) - get_model_parameters_desc = strcat(get_model_parameters_desc, "\nWeight: ", ftos(get_model_parameters_weight), " kg"); + get_model_parameters_desc = strcat(get_model_parameters_desc, sprintf("\nWeight: %g kg", get_model_parameters_weight)); if(get_model_parameters_age) - get_model_parameters_desc = strcat(get_model_parameters_desc, "\nAge: ", ftos(get_model_parameters_age)); + get_model_parameters_desc = strcat(get_model_parameters_desc, sprintf("\nAge: %g", get_model_parameters_age)); while(substring(get_model_parameters_desc, -1, 1) == "\n") get_model_parameters_desc = substring(get_model_parameters_desc, 0, -2); bufstr_set(me.bufModels, BUFMODELS_COUNT*i+BUFMODELS_DESC, get_model_parameters_desc); @@ -171,7 +171,7 @@ void XonoticPlayerModelSelector_draw(entity me) if (me.numModels <= 0) { - draw_CenterText('0.5 0.5 0', "<no model found>", me.realFontSize, '1 1 1', 0.6, FALSE); + draw_CenterText('0.5 0.5 0', _("<no model found>"), me.realFontSize, '1 1 1', 0.6, FALSE); return; } diff --git a/qcsrc/menu/xonotic/rootdialog.c b/qcsrc/menu/xonotic/rootdialog.c index efc00822d8..e8c9db364e 100644 --- a/qcsrc/menu/xonotic/rootdialog.c +++ b/qcsrc/menu/xonotic/rootdialog.c @@ -3,7 +3,7 @@ CLASS(XonoticRootDialog) EXTENDS(XonoticDialog) // still to be customized by user /* ATTRIB(XonoticDialog, closable, float, 1) - ATTRIB(XonoticDialog, title, string, "Form1") // ;) + ATTRIB(XonoticDialog, title, string, _("Form1")) // ;) ATTRIB(XonoticDialog, color, vector, '1 0.5 1') ATTRIB(XonoticDialog, intendedWidth, float, 0) ATTRIB(XonoticDialog, rows, float, 3) diff --git a/qcsrc/menu/xonotic/serverlist.c b/qcsrc/menu/xonotic/serverlist.c index 4128935795..3cd3338bc7 100644 --- a/qcsrc/menu/xonotic/serverlist.c +++ b/qcsrc/menu/xonotic/serverlist.c @@ -354,9 +354,9 @@ void XonoticServerList_draw(entity me) if(me.ipAddressBox.focused || me.ipAddressBoxFocused < 0) { if(IsFavorite(me.ipAddressBox.text)) - me.favoriteButton.setText(me.favoriteButton, "Remove"); + me.favoriteButton.setText(me.favoriteButton, _("Remove")); else - me.favoriteButton.setText(me.favoriteButton, "Bookmark"); + me.favoriteButton.setText(me.favoriteButton, _("Bookmark")); } me.ipAddressBoxFocused = me.ipAddressBox.focused; } @@ -512,11 +512,11 @@ void XonoticServerList_resizeNotify(entity me, vector relOrigin, vector relSize, me.columnTypeOrigin = me.columnMapOrigin + me.columnMapSize + me.realFontSize_x; me.columnPlayersOrigin = me.columnTypeOrigin + me.columnTypeSize + me.realFontSize_x; - me.positionSortButton(me, me.sortButton1, me.columnPingOrigin, me.columnPingSize, "Ping", ServerList_PingSort_Click); - me.positionSortButton(me, me.sortButton2, me.columnNameOrigin, me.columnNameSize, "Host name", ServerList_NameSort_Click); - me.positionSortButton(me, me.sortButton3, me.columnMapOrigin, me.columnMapSize, "Map", ServerList_MapSort_Click); - me.positionSortButton(me, me.sortButton4, me.columnTypeOrigin, me.columnTypeSize, "Type", ServerList_TypeSort_Click); - me.positionSortButton(me, me.sortButton5, me.columnPlayersOrigin, me.columnPlayersSize, "Players", ServerList_PlayerSort_Click); + me.positionSortButton(me, me.sortButton1, me.columnPingOrigin, me.columnPingSize, _("Ping"), ServerList_PingSort_Click); + me.positionSortButton(me, me.sortButton2, me.columnNameOrigin, me.columnNameSize, _("Host name"), ServerList_NameSort_Click); + me.positionSortButton(me, me.sortButton3, me.columnMapOrigin, me.columnMapSize, _("Map"), ServerList_MapSort_Click); + me.positionSortButton(me, me.sortButton4, me.columnTypeOrigin, me.columnTypeSize, _("Type"), ServerList_TypeSort_Click); + me.positionSortButton(me, me.sortButton5, me.columnPlayersOrigin, me.columnPlayersSize, _("Players"), ServerList_PlayerSort_Click); float f; f = me.currentSortField; diff --git a/qcsrc/menu/xonotic/skinlist.c b/qcsrc/menu/xonotic/skinlist.c index 864b3054a5..bb01f974cb 100644 --- a/qcsrc/menu/xonotic/skinlist.c +++ b/qcsrc/menu/xonotic/skinlist.c @@ -102,10 +102,10 @@ void XonoticSkinList_getSkins(entity me) { s = search_getfilename(glob, i); bufstr_set(buf, i * SKINPARM_COUNT + SKINPARM_NAME, substring(s, 9, strlen(s) - 24)); // the * part - bufstr_set(buf, i * SKINPARM_COUNT + SKINPARM_TITLE, "<TITLE>"); - bufstr_set(buf, i * SKINPARM_COUNT + SKINPARM_AUTHOR, "<AUTHOR>"); + bufstr_set(buf, i * SKINPARM_COUNT + SKINPARM_TITLE, _("<TITLE>")); + bufstr_set(buf, i * SKINPARM_COUNT + SKINPARM_AUTHOR, _("<AUTHOR>")); bufstr_set(buf, i * SKINPARM_COUNT + SKINPARM_PREVIEW, strcat("/gfx/menu/", substring(s, 9, strlen(s) - 24), "/skinpreview")); - fh = fopen(s, FILE_READ); + fh = fopen(language_filename(s), FILE_READ); if(fh < 0) { print("Warning: can't open skinvalues.txt file\n"); @@ -160,7 +160,7 @@ void XonoticSkinList_drawListBoxItem(entity me, float i, vector absSize, float i draw_Picture(me.columnPreviewOrigin * eX, s, me.columnPreviewSize * eX + eY, '1 1 1', 1); s = me.skinParameter(me, i, SKINPARM_NAME); - s = strcat(s, ": ", me.skinParameter(me, i, SKINPARM_TITLE)); + s = sprintf(_("%s: %s"), s, me.skinParameter(me, i, SKINPARM_TITLE)); s = draw_TextShortenToWidth(s, me.columnNameSize, 0, me.realFontSize); draw_Text(me.realUpperMargin1 * eY + (me.columnNameOrigin + 0.00 * (me.columnNameSize - draw_TextWidth(s, 0, me.realFontSize))) * eX, s, me.realFontSize, SKINCOLOR_SKINLIST_TITLE, SKINALPHA_TEXT, 0); diff --git a/qcsrc/menu/xonotic/slider_decibels.c b/qcsrc/menu/xonotic/slider_decibels.c index 0e4b4e3720..24edb4cb91 100644 --- a/qcsrc/menu/xonotic/slider_decibels.c +++ b/qcsrc/menu/xonotic/slider_decibels.c @@ -47,10 +47,10 @@ void XonoticDecibelsSlider_saveCvars(entity me) string XonoticDecibelsSlider_valueToText(entity me, float v) { if(v < -33) - return "OFF"; + return CTX(_("VOL^OFF")); else if(v >= -0.1) - return "MAX"; - return strcat(SUPER(XonoticDecibelsSlider).valueToText(me, v), " dB"); + return CTX(_("VOL^MAX")); + return sprintf(_("%s dB"), SUPER(XonoticDecibelsSlider).valueToText(me, v)); } #endif diff --git a/qcsrc/menu/xonotic/slider_resolution.c b/qcsrc/menu/xonotic/slider_resolution.c index 0cfa6ad2a6..d5d013048e 100644 --- a/qcsrc/menu/xonotic/slider_resolution.c +++ b/qcsrc/menu/xonotic/slider_resolution.c @@ -62,7 +62,7 @@ entity makeXonoticResolutionSlider() } void XonoticResolutionSlider_addResolution(entity me, float w, float h, float pixelheight) { - me.addValue(me, strzone(strcat(ftos(w), "x", ftos(h))), strzone(strcat(ftos(w), " ", ftos(h), " ", ftos(pixelheight)))); + me.addValue(me, strzone(sprintf(_("%dx%d"), w, h)), strzone(strcat(ftos(w), " ", ftos(h), " ", ftos(pixelheight)))); // FIXME (in case you ever want to dynamically instantiate this): THIS IS NEVER FREED } void XonoticResolutionSlider_configureXonoticResolutionSlider(entity me) @@ -85,9 +85,22 @@ void XonoticResolutionSlider_configureXonoticResolutionSlider(entity me) r0 = r; if(r_x < 640 || r_y < 480) continue; + if(r_x > 2 * r_y) // likely dualscreen resolution, skip this one + continue; me.addResolution(me, r_x, r_y, r_z); } + if(me.nValues == 0) + { + me.addResolution(me, 640, 480, 1); + me.addResolution(me, 800, 600, 1); + me.addResolution(me, 1024, 768, 1); + me.addResolution(me, 1280, 960, 1); + me.addResolution(me, 1280, 1024, 1); + me.addResolution(me, 1650, 1080, 1); + me.addResolution(me, 1920, 1080, 1); + } + me.configureXonoticTextSliderValues(me); } void XonoticResolutionSlider_loadCvars(entity me) diff --git a/qcsrc/menu/xonotic/util.qc b/qcsrc/menu/xonotic/util.qc index 91572fdf9d..b9d6a08d5f 100644 --- a/qcsrc/menu/xonotic/util.qc +++ b/qcsrc/menu/xonotic/util.qc @@ -11,11 +11,12 @@ float GL_Have_TextureCompression() float tooltipdb; void loadTooltips() { - tooltipdb = db_load("tooltips.db"); + tooltipdb = db_load(language_filename("tooltips.db")); } void unloadTooltips() { - db_close(tooltipdb); + if(tooltipdb >= 0) + db_close(tooltipdb); tooltipdb = -1; } string getZonedTooltipForIdentifier(string s) @@ -23,14 +24,20 @@ string getZonedTooltipForIdentifier(string s) string t; if(s == "") return string_null; - t = db_get(tooltipdb, s); - if(t == "-") - return string_null; - if(t != "") - return strzone(t); - t = cvar_description(s); - if(t != "" && t != "custom cvar") - return strzone(t); + if(tooltipdb >= 0) + { + t = db_get(tooltipdb, s); + if(t == "-") + return string_null; + if(t != "") + return strzone(t); + } + if(prvm_language == "en" || prvm_language == "") + { + t = cvar_description(s); + if(t != "" && t != "custom cvar") + return strzone(t); + } dprint("WARNING: no tooltip set for ", s, "\n"); return string_null; } @@ -260,7 +267,7 @@ void URI_Get_Callback(float id, float status, string data) } else { - print("Received HTTP request data for an invalid id ", ftos(id), ".\n"); + print(sprintf(_("Received HTTP request data for an invalid id %d.\n"), id)); } } @@ -270,22 +277,22 @@ void UpdateNotification_URI_Get_Callback(float id, float status, string data) if(_Nex_ExtResponseSystem_UpdateTo) { - print("error: UpdateNotification_URI_Get_Callback has been called before\n"); + dprint("error: UpdateNotification_URI_Get_Callback has been called before\n"); return; } if(status != 0) { - print(sprintf("error receiving update notification: status is %d\n", status)); + print(sprintf(_("error receiving update notification: status is %d\n"), status)); return; } if(substring(data, 0, 1) == "<") { - print("error: received HTML instead of an update notification\n"); + print(_("error: received HTML instead of an update notification\n")); return; } if(strstrofs(data, "\r", 0) != -1) { - print("error: received carriage returns from update notification server\n"); + print(_("error: received carriage returns from update notification server\n")); return; } @@ -306,7 +313,7 @@ void UpdateNotification_URI_Get_Callback(float id, float status, string data) { // update needed if(n >= 2) - print(sprintf("Update can be downloaded at:\n%s\n", argv(1))); + print(sprintf(_("Update can be downloaded at:\n%s\n"), argv(1))); } _Nex_ExtResponseSystem_UpdateTo = strzone(_Nex_ExtResponseSystem_UpdateTo); @@ -327,7 +334,7 @@ float preMenuInit() draw_reset_cropped(); sz = eX * 0.025 + eY * 0.025 * (draw_scale_x / draw_scale_y); - draw_CenterText('0.5 0.5 0' - 1.25 * sz_y * eY, "Autogenerating mapinfo for newly added maps...", sz, '1 1 1', 1, 0); + draw_CenterText('0.5 0.5 0' - 1.25 * sz_y * eY, _("Autogenerating mapinfo for newly added maps..."), sz, '1 1 1', 1, 0); boxA = '0.05 0.5 0' + 0.25 * sz_y * eY; boxB = '0.95 0.5 0' + 1.25 * sz_y * eY; @@ -414,7 +421,7 @@ void preMenuDraw() // TODO rather turn this into a dialog fs = ((1/draw_scale_x) * eX + (1/draw_scale_y) * eY) * 12; line = eY * fs_y; - sz_x = draw_TextWidth(" http://www.xonotic.com/ ", 0, fs); + sz_x = draw_TextWidth(" http://www.xonotic.org/ ", 0, fs); sz_y = 3 * fs_y; draw_alpha = sin(time * 0.112 - 0.3) * 10; @@ -422,7 +429,7 @@ void preMenuDraw() + eY * (0.5 + 0.5 * (1 - sz_y) * sin(time * 0.071)); draw_Fill(mid - 0.5 * sz, sz, '1 1 0', 1); - draw_CenterText(mid - 1 * line, strcat("Update to ", _Nex_ExtResponseSystem_UpdateTo, " now!"), fs, '1 0 0', 1, 0); + draw_CenterText(mid - 1 * line, sprintf(_("Update to %s now!"), _Nex_ExtResponseSystem_UpdateTo), fs, '1 0 0', 1, 0); draw_CenterText(mid - 0 * line, "http://www.xonotic.org/", fs, '0 0 1', 1, 0); } if not(campaign_name_previous) @@ -499,7 +506,7 @@ float updateCompression() cvar_set("gl_texturecompression", "1"); cvar_set("r_texture_dds_load", "1"); if(!can_dds) - print("^1ERROR: Texture compression is required but not supported.\n^1Expect visual problems.\n"); + print(_("^1ERROR: Texture compression is required but not supported.\n^1Expect visual problems.\n")); return 0; } else @@ -521,22 +528,22 @@ float updateCompression() // note: include only those that should be in the menu! #define GAMETYPES \ - GAMETYPE(MAPINFO_TYPE_ARENA, "Arena") \ - GAMETYPE(MAPINFO_TYPE_ASSAULT, "Assault") \ - GAMETYPE(MAPINFO_TYPE_CTF, "Capture The Flag") \ - GAMETYPE(MAPINFO_TYPE_CA, "Clan Arena") \ - GAMETYPE(MAPINFO_TYPE_DEATHMATCH, "Deathmatch") \ - GAMETYPE(MAPINFO_TYPE_DOMINATION, "Domination") \ - GAMETYPE(MAPINFO_TYPE_FREEZETAG, "Freeze Tag") \ - GAMETYPE(MAPINFO_TYPE_KEEPAWAY, "Keepaway") \ - GAMETYPE(MAPINFO_TYPE_KEYHUNT, "Key Hunt") \ - GAMETYPE(MAPINFO_TYPE_LMS, "Last Man Standing") \ - GAMETYPE(MAPINFO_TYPE_NEXBALL, "Nexball") \ - GAMETYPE(MAPINFO_TYPE_ONSLAUGHT, "Onslaught") \ - GAMETYPE(MAPINFO_TYPE_RACE, "Race") \ - GAMETYPE(MAPINFO_TYPE_CTS, "Race CTS") \ - GAMETYPE(MAPINFO_TYPE_RUNEMATCH, "Runematch") \ - GAMETYPE(MAPINFO_TYPE_TEAM_DEATHMATCH, "Team Deathmatch") \ + GAMETYPE(MAPINFO_TYPE_ARENA, _("Arena")) \ + GAMETYPE(MAPINFO_TYPE_ASSAULT, _("Assault")) \ + GAMETYPE(MAPINFO_TYPE_CTF, _("Capture The Flag")) \ + GAMETYPE(MAPINFO_TYPE_CA, _("Clan Arena")) \ + GAMETYPE(MAPINFO_TYPE_DEATHMATCH, _("Deathmatch")) \ + GAMETYPE(MAPINFO_TYPE_DOMINATION, _("Domination")) \ + GAMETYPE(MAPINFO_TYPE_FREEZETAG, _("Freeze Tag")) \ + GAMETYPE(MAPINFO_TYPE_KEEPAWAY, _("Keepaway")) \ + GAMETYPE(MAPINFO_TYPE_KEYHUNT, _("Key Hunt")) \ + GAMETYPE(MAPINFO_TYPE_LMS, _("Last Man Standing")) \ + GAMETYPE(MAPINFO_TYPE_NEXBALL, _("Nexball")) \ + GAMETYPE(MAPINFO_TYPE_ONSLAUGHT, _("Onslaught")) \ + GAMETYPE(MAPINFO_TYPE_RACE, _("Race")) \ + GAMETYPE(MAPINFO_TYPE_CTS, _("Race CTS")) \ + GAMETYPE(MAPINFO_TYPE_RUNEMATCH, _("Runematch")) \ + GAMETYPE(MAPINFO_TYPE_TEAM_DEATHMATCH, _("Team Deathmatch")) \ /* nothing */ float GameType_GetID(float cnt) @@ -555,7 +562,7 @@ string GameType_GetName(float cnt) #define GAMETYPE(id,name) if(i++ == cnt) return name; GAMETYPES #undef GAMETYPE - return "@!#%'n Tuba Throwing"; + return _("@!#%'n Tuba Throwing"); } float GameType_GetCount() { @@ -567,3 +574,84 @@ float GameType_GetCount() return i; } +string language_filename(string s) +{ + string fn; + float fh; + fn = prvm_language; + if(fn == "" || fn == "dump") + return s; + fn = strcat(s, ".", fn); + if((fh = fopen(fn, FILE_READ)) >= 0) + { + fclose(fh); + return fn; + } + return s; +} +string CTX(string s) +{ + float p = strstrofs(s, "^", 0); + if(p < 0) + return s; + return substring(s, p+1, -1); +} + +void dialog_hudpanel_common_notoggle(entity me, string panelname) +{ + float i; + entity e; + + me.TR(me); + me.TD(me, 1, 1.4, e = makeXonoticTextLabel(0, _("Background:"))); + me.TD(me, 1, 2.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg")))); + e.addValue(e, _("Default"), ""); + e.addValue(e, _("Disable"), "0"); + e.addValue(e, strzone(strcat("border_", panelname)), strzone(strcat("border_", panelname))); + e.configureXonoticTextSliderValues(e); + me.TR(me); + me.TDempty(me, 0.2); + me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, _("Color:"))); + me.TD(me, 2, 2.6, e = makeXonoticColorpickerString(strzone(strcat("hud_panel_", panelname, "_bg_color")), "hud_panel_bg_color")); + setDependentStringNotEqual(e, strzone(strcat("hud_panel_", panelname, "_bg_color")), ""); + me.TR(me); + me.TDempty(me, 0.2); + me.TD(me, 1, 1.0, e = makeXonoticCheckBoxString("", "1 1 1", strzone(strcat("hud_panel_", panelname, "_bg_color")), _("Use default"))); + me.TR(me); + me.TDempty(me, 0.2); + me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, _("Border size:"))); + me.TD(me, 1, 2.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg_border")))); + e.addValue(e, _("Default"), ""); + e.addValue(e, _("Disable"), "0"); + for(i = 1; i <= 10; ++i) + e.addValue(e, strzone(ftos_decimals(i * 2, 0)), strzone(ftos(i * 2))); + e.configureXonoticTextSliderValues(e); + me.TR(me); + me.TDempty(me, 0.2); + me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, _("Alpha:"))); + me.TD(me, 1, 2.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg_alpha")))); + e.addValue(e, _("Default"), ""); + for(i = 1; i <= 10; ++i) + e.addValue(e, strzone(ftos_decimals(i/10, 1)), strzone(ftos(i/10))); + e.configureXonoticTextSliderValues(e); + me.TR(me); + me.TDempty(me, 0.2); + me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, _("Team Color:"))); + me.TD(me, 1, 2.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg_color_team")))); + e.addValue(e, _("Default"), ""); + e.addValue(e, _("Disable"), "0"); + for(i = 1; i <= 10; ++i) + e.addValue(e, strzone(ftos_decimals(i/10, 1)), strzone(ftos(i/10))); + e.configureXonoticTextSliderValues(e); + me.TR(me); + me.TDempty(me, 0.4); + me.TD(me, 1, 3.6, e = makeXonoticCheckBox(0, "hud_configure_teamcolorforced", _("Test team color in configure mode"))); + me.TR(me); + me.TDempty(me, 0.2); + me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, _("Padding:"))); + me.TD(me, 1, 2.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg_padding")))); + e.addValue(e, _("Default"), ""); + for(i = 0; i <= 10; ++i) + e.addValue(e, strzone(ftos_decimals(i - 5, 0)), strzone(ftos(i - 5))); + e.configureXonoticTextSliderValues(e); +} diff --git a/qcsrc/menu/xonotic/util.qh b/qcsrc/menu/xonotic/util.qh index 99ede2a9b8..70fb1a11c2 100644 --- a/qcsrc/menu/xonotic/util.qh +++ b/qcsrc/menu/xonotic/util.qh @@ -40,3 +40,15 @@ void URI_Get_Callback(float id, float status, string data); float GameType_GetID(float cnt); string GameType_GetName(float cnt); float GameType_GetCount(); + +void dialog_hudpanel_common_notoggle(entity me, string panelname); +#define DIALOG_HUDPANEL_COMMON_NOTOGGLE() \ + dialog_hudpanel_common_notoggle(me, panelname) +#define DIALOG_HUDPANEL_COMMON() \ + me.TR(me); \ + me.TD(me, 1, 4, e = makeXonoticCheckBox(0, strzone(strcat("hud_panel_", panelname)), _("Enable panel"))); \ + DIALOG_HUDPANEL_COMMON_NOTOGGLE() + +string language_filename(string s); +string CTX(string s); +#define ZCTX(s) strzone(CTX(s)) diff --git a/qcsrc/server/anticheat.qc b/qcsrc/server/anticheat.qc index 284e72be94..d00c60b09d 100644 --- a/qcsrc/server/anticheat.qc +++ b/qcsrc/server/anticheat.qc @@ -153,7 +153,7 @@ void anticheat_prethink() self.anticheat_div0_evade_offset = 0; } -string anticheat_display(float f, float mi, float ma) +string anticheat_display(float f, float tmin, float mi, float ma) { string s; s = ftos(f); @@ -169,10 +169,10 @@ void anticheat_report() if(!autocvar_sv_eventlog) return; GameLogEcho(strcat(":anticheat:_time:", ftos(self.playerid), ":", ftos(servertime - self.anticheat_jointime))); - GameLogEcho(strcat(":anticheat:speedhack:", ftos(self.playerid), ":", ftos(MEAN_EVALUATE(anticheat_speedhack)))); - GameLogEcho(strcat(":anticheat:div0_strafebot_old:", ftos(self.playerid), ":", ftos(MEAN_EVALUATE(anticheat_div0_strafebot_old)))); - GameLogEcho(strcat(":anticheat:div0_strafebot_new:", ftos(self.playerid), ":", ftos(MEAN_EVALUATE(anticheat_div0_strafebot_new)))); - GameLogEcho(strcat(":anticheat:div0_evade:", ftos(self.playerid), ":", anticheat_display(MEAN_EVALUATE(anticheat_div0_evade), 0.15, 0.3))); + GameLogEcho(strcat(":anticheat:speedhack:", ftos(self.playerid), ":", anticheat_display(MEAN_EVALUATE(anticheat_speedhack), 240, 0.1, 0.15))); + GameLogEcho(strcat(":anticheat:div0_strafebot_old:", ftos(self.playerid), ":", anticheat_display(MEAN_EVALUATE(anticheat_div0_strafebot_old), 120, 0.3, 0.4))); + GameLogEcho(strcat(":anticheat:div0_strafebot_new:", ftos(self.playerid), ":", anticheat_display(MEAN_EVALUATE(anticheat_div0_strafebot_new), 120, 0.3, 0.4))); + GameLogEcho(strcat(":anticheat:div0_evade:", ftos(self.playerid), ":", anticheat_display(MEAN_EVALUATE(anticheat_div0_evade), 120, 0.1, 0.2))); } void anticheat_serverframe() diff --git a/qcsrc/server/autocvars.qh b/qcsrc/server/autocvars.qh index c90f32b23f..e791e71440 100644 --- a/qcsrc/server/autocvars.qh +++ b/qcsrc/server/autocvars.qh @@ -869,6 +869,7 @@ float autocvar_g_player_alpha; float autocvar_g_player_brightness; float autocvar_g_playerclip_collisions; string autocvar_g_playerstats_uri; +float autocvar_g_playerstats_debug; float autocvar_g_powerup_shield; float autocvar_g_powerup_strength; float autocvar_g_powerup_superhealth; diff --git a/qcsrc/server/cl_player.qc b/qcsrc/server/cl_player.qc index bac718356b..ca0b2d4a16 100644 --- a/qcsrc/server/cl_player.qc +++ b/qcsrc/server/cl_player.qc @@ -325,11 +325,14 @@ void SpawnThrownWeapon (vector org, float w) { if(self.weapons & W_WeaponBit(j)) if(W_IsWeaponThrowable(j)) - W_ThrowNewWeapon(self, j, FALSE, self.origin, randomvec() * 175 + '0 0 325'); + W_ThrowNewWeapon(self, j, FALSE, org, randomvec() * 175 + '0 0 325'); } } else - W_ThrowWeapon(randomvec() * 125 + '0 0 200', org - self.origin, FALSE); + { + if(W_IsWeaponThrowable(self.weapon)) + W_ThrowNewWeapon(self, self.weapon, FALSE, org, randomvec() * 125 + '0 0 200'); + } } void PlayerCorpseDamage (entity inflictor, entity attacker, float damage, float deathtype, vector hitloc, vector force) diff --git a/qcsrc/server/cl_weapons.qc b/qcsrc/server/cl_weapons.qc index 17190326f8..864dd77fce 100644 --- a/qcsrc/server/cl_weapons.qc +++ b/qcsrc/server/cl_weapons.qc @@ -234,6 +234,20 @@ string W_ThrowNewWeapon(entity own, float wpn, float doreduce, vector org, vecto float W_IsWeaponThrowable(float w) { float wb, wa; + + if (!autocvar_g_pickup_items) + return 0; + if (g_weaponarena) + return 0; + if (g_lms) + return 0; + if (g_ca) + return 0; + if (g_cts) + return 0; + if (g_nexball && w == WEP_GRENADE_LAUNCHER) + return 0; + wb = W_WeaponBit(w); if(!wb) return 0; @@ -263,25 +277,13 @@ void W_ThrowWeapon(vector velo, vector delta, float doreduce) return; // just in case if(MUTATOR_CALLHOOK(ForbidThrowCurrentWeapon)) return; - if (g_weaponarena) - return; - if (g_lms) - return; - if (g_nexball && w == WEP_GRENADE_LAUNCHER) - return; - if (!autocvar_g_pickup_items) - return; - if (g_ca) - return; - if (g_cts) - return; if(!autocvar_g_weapon_throwable) return; if(autocvar_g_weapon_stay == 1) return; - if(!W_IsWeaponThrowable(w)) + if(self.weaponentity.state != WS_READY) return; - if(self.deadflag == DEAD_NO && self.weaponentity.state != WS_READY) + if(!W_IsWeaponThrowable(w)) return; wb = W_WeaponBit(w); @@ -293,13 +295,10 @@ void W_ThrowWeapon(vector velo, vector delta, float doreduce) a = W_ThrowNewWeapon(self, w, doreduce, self.origin + delta, velo); if not(a) return; - if(self.health >= 1) - { - if(a == "") - sprint(self, strcat("You dropped the ^2", W_Name(w), "\n")); - else - sprint(self, strcat("You dropped the ^2", W_Name(w), " with ", a, "\n")); - } + if(a == "") + sprint(self, strcat("You dropped the ^2", W_Name(w), "\n")); + else + sprint(self, strcat("You dropped the ^2", W_Name(w), " with ", a, "\n")); }; // Bringed back weapon frame diff --git a/qcsrc/server/g_damage.qc b/qcsrc/server/g_damage.qc index 69f5bfa248..e1ee570685 100644 --- a/qcsrc/server/g_damage.qc +++ b/qcsrc/server/g_damage.qc @@ -120,14 +120,12 @@ void GiveFrags (entity attacker, entity targ, float f, float deathtype) { // teamkill PlayerScore_Add(attacker, SP_KILLS, -1); // or maybe add a teamkills field? - PlayerStats_Event(attacker, PLAYERSTATS_KILLS, -1); } } else { // regular frag PlayerScore_Add(attacker, SP_KILLS, 1); - PlayerStats_Event(attacker, PLAYERSTATS_KILLS, 1); } PlayerScore_Add(targ, SP_DEATHS, 1); @@ -203,6 +201,8 @@ void GiveFrags (entity attacker, entity targ, float f, float deathtype) { if(!lms_next_place) lms_next_place = player_count; + else + lms_next_place = min(lms_next_place, player_count); PlayerScore_Add(targ, SP_LMS_RANK, lms_next_place); // won't ever spawn again --lms_next_place; } @@ -369,6 +369,8 @@ void Obituary (entity attacker, entity inflictor, entity targ, float deathtype) // TODO: make these print a newline if they dont Send_CSQC_Centerprint(attacker, "", "", KILL_FIRST_BLOOD, MSG_KILL); Send_CSQC_Centerprint(targ, "", "", KILL_FIRST_VICTIM, MSG_KILL); + PlayerStats_Event(attacker, PLAYERSTATS_ACHIEVEMENT_FIRSTBLOOD, 1); + PlayerStats_Event(targ, PLAYERSTATS_ACHIEVEMENT_FIRSTVICTIM, 1); } if((autocvar_sv_fragmessage_information_typefrag) && (targ.BUTTON_CHAT)) { @@ -414,36 +416,43 @@ void Obituary (entity attacker, entity inflictor, entity targ, float deathtype) { Send_KillNotification(a, "", "", KILL_SPREE_3, MSG_SPREE); AnnounceTo(attacker, "03kills"); + PlayerStats_Event(attacker, PLAYERSTATS_ACHIEVEMENT_KILL_SPREE_3, 1); } else if (attacker.killcount == 5) { Send_KillNotification(a, "", "", KILL_SPREE_5, MSG_SPREE); AnnounceTo(attacker, "05kills"); + PlayerStats_Event(attacker, PLAYERSTATS_ACHIEVEMENT_KILL_SPREE_5, 1); } else if (attacker.killcount == 10) { Send_KillNotification(a, "", "", KILL_SPREE_10, MSG_SPREE); AnnounceTo(attacker, "10kills"); + PlayerStats_Event(attacker, PLAYERSTATS_ACHIEVEMENT_KILL_SPREE_10, 1); } else if (attacker.killcount == 15) { Send_KillNotification(a, "", "", KILL_SPREE_15, MSG_SPREE); AnnounceTo(attacker, "15kills"); + PlayerStats_Event(attacker, PLAYERSTATS_ACHIEVEMENT_KILL_SPREE_15, 1); } else if (attacker.killcount == 20) { Send_KillNotification(a, "", "", KILL_SPREE_20, MSG_SPREE); AnnounceTo(attacker, "20kills"); + PlayerStats_Event(attacker, PLAYERSTATS_ACHIEVEMENT_KILL_SPREE_20, 1); } else if (attacker.killcount == 25) { Send_KillNotification(a, "", "", KILL_SPREE_25, MSG_SPREE); AnnounceTo(attacker, "25kills"); + PlayerStats_Event(attacker, PLAYERSTATS_ACHIEVEMENT_KILL_SPREE_25, 1); } else if (attacker.killcount == 30) { Send_KillNotification(a, "", "", KILL_SPREE_30, MSG_SPREE); AnnounceTo(attacker, "30kills"); + PlayerStats_Event(attacker, PLAYERSTATS_ACHIEVEMENT_KILL_SPREE_30, 1); } LogDeath("frag", deathtype, attacker, targ); } @@ -461,6 +470,7 @@ void Obituary (entity attacker, entity inflictor, entity targ, float deathtype) GiveFrags(targ, targ, -1, deathtype); if(PlayerScore_Add(targ, SP_SCORE, 0) == -5) { AnnounceTo(targ, "botlike"); + PlayerStats_Event(attacker, PLAYERSTATS_ACHIEVEMENT_BOTLIKE, 1); } Send_KillNotification(s, msg, "", deathtype, MSG_KILL_ACTION); diff --git a/qcsrc/server/g_world.qc b/qcsrc/server/g_world.qc index 02d82f27a9..67fb91fc2b 100644 --- a/qcsrc/server/g_world.qc +++ b/qcsrc/server/g_world.qc @@ -1523,11 +1523,6 @@ void DumpStats(float final) fputs(file, ":end\n"); fclose(file); } - - // send statistics - FOR_EACH_CLIENT(e) - PlayerStats_AddGlobalInfo(e); - PlayerStats_Shutdown(); } void FixIntermissionClient(entity e) @@ -1596,6 +1591,13 @@ void NextLevel() DumpStats(TRUE); + // send statistics + entity e; + PlayerStats_EndMatch(1); + FOR_EACH_CLIENT(e) + PlayerStats_AddGlobalInfo(e); + PlayerStats_Shutdown(); + if(autocvar_sv_eventlog) GameLogEcho(":gameover"); @@ -2940,6 +2942,7 @@ void SV_Shutdown() print("Saving persistent data...\n"); Ban_SaveBans(); + PlayerStats_EndMatch(0); FOR_EACH_CLIENT(e) PlayerStats_AddGlobalInfo(e); PlayerStats_Shutdown(); diff --git a/qcsrc/server/playerstats.qc b/qcsrc/server/playerstats.qc index 7904e30ef1..6b04eea9d6 100644 --- a/qcsrc/server/playerstats.qc +++ b/qcsrc/server/playerstats.qc @@ -3,6 +3,7 @@ string playerstats_last; string events_last; .float playerstats_addedglobalinfo; float playerstats_requested; +.string playerstats_id; void PlayerStats_Init() { @@ -17,16 +18,37 @@ void PlayerStats_Init() playerstats_waitforme = FALSE; // must wait for it at match end PlayerStats_AddEvent(PLAYERSTATS_ALIVETIME); - PlayerStats_AddEvent(PLAYERSTATS_KILLS); + PlayerStats_AddEvent(PLAYERSTATS_WINS); + PlayerStats_AddEvent(PLAYERSTATS_MATCHES); + PlayerStats_AddEvent(PLAYERSTATS_JOINS); + PlayerStats_AddEvent(PLAYERSTATS_SCOREBOARD_VALID); + + PlayerStats_AddEvent(PLAYERSTATS_ACHIEVEMENT_KILL_SPREE_3); + PlayerStats_AddEvent(PLAYERSTATS_ACHIEVEMENT_KILL_SPREE_5); + PlayerStats_AddEvent(PLAYERSTATS_ACHIEVEMENT_KILL_SPREE_10); + PlayerStats_AddEvent(PLAYERSTATS_ACHIEVEMENT_KILL_SPREE_15); + PlayerStats_AddEvent(PLAYERSTATS_ACHIEVEMENT_KILL_SPREE_20); + PlayerStats_AddEvent(PLAYERSTATS_ACHIEVEMENT_KILL_SPREE_25); + PlayerStats_AddEvent(PLAYERSTATS_ACHIEVEMENT_KILL_SPREE_30); + PlayerStats_AddEvent(PLAYERSTATS_ACHIEVEMENT_BOTLIKE); + PlayerStats_AddEvent(PLAYERSTATS_ACHIEVEMENT_FIRSTBLOOD); + PlayerStats_AddEvent(PLAYERSTATS_ACHIEVEMENT_FIRSTVICTIM); } void PlayerStats_AddPlayer(entity e) { - if(!e.crypto_idfp || playerstats_db < 0) + if(playerstats_db < 0) return; + + if(e.crypto_idfp != "") + e.playerstats_id = strzone(e.crypto_idfp); + else if(clienttype(e) == CLIENTTYPE_BOT) + e.playerstats_id = strzone(sprintf("bot#%d", e.playerid)); + else + e.playerstats_id = strzone(sprintf("player#%d", e.playerid)); string key; - key = sprintf("%s:*", e.crypto_idfp); + key = sprintf("%s:*", e.playerstats_id); string p; p = db_get(playerstats_db, key); @@ -39,7 +61,7 @@ void PlayerStats_AddPlayer(entity e) } else db_put(playerstats_db, key, "#"); - playerstats_last = strzone(e.crypto_idfp); + playerstats_last = strzone(e.playerstats_id); } } @@ -68,12 +90,12 @@ void PlayerStats_AddEvent(string event_id) void PlayerStats_Event(entity e, string event_id, float value) { - if(!e.crypto_idfp || playerstats_db < 0) + if(!e.playerstats_id || playerstats_db < 0) return; string key; float val; - key = sprintf("%s:%s", e.crypto_idfp, event_id); + key = sprintf("%s:%s", e.playerstats_id, event_id); val = stof(db_get(playerstats_db, key)); val += value; db_put(playerstats_db, key, ftos(val)); @@ -122,11 +144,18 @@ void PlayerStats_Shutdown() { float v; v = stof(db_get(playerstats_db, sprintf("%s:%s", p, e))); - bufstr_set(b, i++, sprintf("e %s %f", e, v)); + if(v != 0) + bufstr_set(b, i++, sprintf("e %s %g", e, v)); } } bufstr_set(b, i++, ""); + if(autocvar_g_playerstats_debug) + { + for(i = 0; i < buf_getsize(b); ++i) + print(bufstr_get(b, i), "\n"); + } + if(crypto_uri_postbuf(uri, URI_GET_PLAYERSTATS_SENT, "text/plain", "\n", b, 0)) playerstats_requested = TRUE; else @@ -146,14 +175,38 @@ void PlayerStats_AddGlobalInfo(entity p) { if(playerstats_db < 0) return; - if(!p.crypto_idfp || playerstats_db < 0) + if(!p.playerstats_id || playerstats_db < 0) return; p.playerstats_addedglobalinfo = TRUE; // add global info! if(p.alivetime) PlayerStats_Event(p, PLAYERSTATS_ALIVETIME, time - p.alivetime); + + if(p.alivetime) + PlayerStats_Event(p, PLAYERSTATS_ALIVETIME, time - p.alivetime); - if(p.cvar_cl_allow_uid2name == 1) - db_put(playerstats_db, sprintf("%s:_netname", p.crypto_idfp), p.netname); + if(p.cvar_cl_allow_uid2name == 1 || clienttype(p) == CLIENTTYPE_BOT) + db_put(playerstats_db, sprintf("%s:_netname", p.playerstats_id), p.netname); + + if(p.alivetime > 0) + PlayerStats_Event(p, PLAYERSTATS_JOINS, 1); + + strunzone(p.playerstats_id); + p.playerstats_id = string_null; +} + +void PlayerStats_EndMatch(float finished) +{ + entity p; + FOR_EACH_PLAYER(p) + { + PlayerScore_PlayerStats(p); + PlayerStats_Event(p, PLAYERSTATS_SCOREBOARD_VALID, 1); + if(finished) + { + PlayerStats_Event(p, PLAYERSTATS_WINS, p.winning); + PlayerStats_Event(p, PLAYERSTATS_MATCHES, 1); + } + } } diff --git a/qcsrc/server/playerstats.qh b/qcsrc/server/playerstats.qh index fea546a123..2d004c1207 100644 --- a/qcsrc/server/playerstats.qh +++ b/qcsrc/server/playerstats.qh @@ -1,6 +1,23 @@ // time the player was alive and kicking -string PLAYERSTATS_ALIVETIME = "alivetime"; -string PLAYERSTATS_KILLS = "kills"; +string PLAYERSTATS_ALIVETIME = "alivetime"; +string PLAYERSTATS_WINS = "wins"; +string PLAYERSTATS_MATCHES = "matches"; +string PLAYERSTATS_JOINS = "joins"; +string PLAYERSTATS_SCOREBOARD_VALID = "scoreboardvalid"; + +string PLAYERSTATS_TOTAL = "total-"; +string PLAYERSTATS_SCOREBOARD = "scoreboard-"; + +string PLAYERSTATS_ACHIEVEMENT_KILL_SPREE_3 = "achievement-kill-spree-3"; +string PLAYERSTATS_ACHIEVEMENT_KILL_SPREE_5 = "achievement-kill-spree-5"; +string PLAYERSTATS_ACHIEVEMENT_KILL_SPREE_10 = "achievement-kill-spree-10"; +string PLAYERSTATS_ACHIEVEMENT_KILL_SPREE_15 = "achievement-kill-spree-15"; +string PLAYERSTATS_ACHIEVEMENT_KILL_SPREE_20 = "achievement-kill-spree-20"; +string PLAYERSTATS_ACHIEVEMENT_KILL_SPREE_25 = "achievement-kill-spree-25"; +string PLAYERSTATS_ACHIEVEMENT_KILL_SPREE_30 = "achievement-kill-spree-30"; +string PLAYERSTATS_ACHIEVEMENT_BOTLIKE = "achievement-botlike"; +string PLAYERSTATS_ACHIEVEMENT_FIRSTBLOOD = "achievement-firstblood"; +string PLAYERSTATS_ACHIEVEMENT_FIRSTVICTIM = "achievement-firstvictim"; // delay map switch until this is set float playerstats_waitforme; @@ -25,3 +42,6 @@ void PlayerStats_Sent_URI_Get_Callback(float id, float status, string data); // call this whenever a player leaves void PlayerStats_AddGlobalInfo(entity p); + +// call this at the end of the match +void PlayerStats_EndMatch(float finished); diff --git a/qcsrc/server/scores.qc b/qcsrc/server/scores.qc index 2c5e2b1449..79f2ffc7ce 100644 --- a/qcsrc/server/scores.qc +++ b/qcsrc/server/scores.qc @@ -150,6 +150,11 @@ void ScoreInfo_SetLabel_PlayerScore(float i, string label, float scoreflags) scores_primary = scores[i]; scores_flags_primary = scoreflags; } + if(label != "") + { + PlayerStats_AddEvent(strcat(PLAYERSTATS_TOTAL, label)); + PlayerStats_AddEvent(strcat(PLAYERSTATS_SCOREBOARD, label)); + } } void ScoreInfo_SetLabel_TeamScore(float i, string label, float scoreflags) @@ -245,6 +250,7 @@ void PlayerScore_Clear(entity player) if(teamscores_entities_count) return; + if(g_lms) return; if(g_arena || g_ca) return; if(g_race && !g_race_qualifying) return; @@ -330,6 +336,8 @@ float PlayerScore_Add(entity player, float scorefield, float score) if(score) if(scores_label[scorefield] != "") s.SendFlags |= pow(2, scorefield); + PlayerStats_Event(s.owner, strcat(PLAYERSTATS_TOTAL, scores_label[scorefield]), score); + s.(scores_accumulated[scorefield]) += score; return (s.(scores[scorefield]) += score); } @@ -864,3 +872,14 @@ void Score_NicePrint(entity to) } } +void PlayerScore_PlayerStats(entity p) +{ + entity s; + float i; + s = p.scorekeeper; + + for(i = 0; i < MAX_SCORE; ++i) + if(s.(scores[i]) != 0) + if(scores_label[i] != "") + PlayerStats_Event(s.owner, strcat(PLAYERSTATS_SCOREBOARD, scores_label[i]), s.(scores[i])); +} diff --git a/qcsrc/server/scores.qh b/qcsrc/server/scores.qh index 3ac0b03b55..f94b683323 100644 --- a/qcsrc/server/scores.qh +++ b/qcsrc/server/scores.qh @@ -2,6 +2,8 @@ entity scores_initialized; // non-world when scores labels/rules have been set .float scores[MAX_SCORE]; .float teamscores[MAX_TEAMSCORE]; +.float scores_accumulated[MAX_SCORE]; // for player stats only + /** * Attaches a PlayerScore entity to a player. Use that in ClientConnect. * Remember to detach it in ClientDisconnect! diff --git a/qcsrc/server/teamplay.qc b/qcsrc/server/teamplay.qc index 9cb52c1daa..0363d35a09 100644 --- a/qcsrc/server/teamplay.qc +++ b/qcsrc/server/teamplay.qc @@ -524,7 +524,7 @@ void PrintWelcomeMessage(entity pl) if(g_midair) modifications = strcat(modifications, ", Midair"); if(g_pinata) - modifications = strcat(modifications, ", Pinata"); + modifications = strcat(modifications, ", Piñata"); if(g_weapon_stay && !g_cts) modifications = strcat(modifications, ", Weapons stay"); if(g_bloodloss > 0) diff --git a/qcsrc/server/w_seeker.qc b/qcsrc/server/w_seeker.qc index eb64dddd80..2b858be074 100644 --- a/qcsrc/server/w_seeker.qc +++ b/qcsrc/server/w_seeker.qc @@ -1,5 +1,5 @@ #ifdef REGISTER_WEAPON -REGISTER_WEAPON(SEEKER, w_seeker, IT_ROCKETS, 9, WEP_FLAG_NORMAL | WEP_TYPE_SPLASH, BOT_PICKUP_RATING_MID, "seeker", "seeker", "T.A.G. Seeker"); +REGISTER_WEAPON(SEEKER, w_seeker, IT_ROCKETS, 8, WEP_FLAG_NORMAL | WEP_TYPE_SPLASH, BOT_PICKUP_RATING_MID, "seeker", "seeker", "T.A.G. Seeker"); #else #ifdef SVQC //.float proxytime; = autoswitch diff --git a/tooltips.db.fr b/tooltips.db.fr new file mode 100644 index 0000000000..cf672c3e40 --- /dev/null +++ b/tooltips.db.fr @@ -0,0 +1,221 @@ +0 +\XonoticSingleplayerDialog\Jouer en mode un joueur contre des adversaires contrôlés par l'ordinateur + + +\XonoticMultiplayerDialog\Jouer en ligne avec des amis en réseau local ou sur Internet +\XonoticMultiplayerDialog/Servers\Trouver des serveurs pour y jouer dessus +\menu_slist_showempty\Montrer les serveurs vides +\menu_slist_showfull\Montrer les serveurs où toutes les places sont prises +\net_slist_pause\Ne met pas à jour la liste de serveurs pour éviter de "glisser" sur un autre serveur +\XonoticMultiplayerDialog/Info\Montrer plus d'information sur le serveur séléctionné +\XonoticMultiplayerDialog/Bookmark\Mettre le serveur en haut de la liste pour pouvoir le repérer plus facilement plus tard +\XonoticMultiplayerDialog/Havoc\Changer au mode Havoc qui comporte des modifications sur le jeu +\XonoticMultiplayerDialog/Create\Héberger votre propre partie +\XonoticMultiplayerDialog/Demos\Regarder des Vidéos pré-enregistrées +\XonoticMultiplayerDialog/Player Setup\Personaliser vos paramètres + +\XonoticTeamSelectDialog/join 'best' team (auto-select)\Auto-séléction de l'équipe qui a le plus besoin de vous (recommandé) +\XonoticTeamSelectDialog/red\Joindre l'équipe rouge +\XonoticTeamSelectDialog/blue\Joindre l'équipe bleue +\XonoticTeamSelectDialog/yellow\Joindre l'équipe jaune +\XonoticTeamSelectDialog/pink\Joindre l'équipe rose + +\timelimit_override\Limite de temps au match, le match se finit quand elle est atteinte +\fraglimit_override\Limite de tués pour le match, le match se finit quand elle est atteinte +\menu_maxplayers\Le nombre maximum de personnes pouvant jouer sur votre serveur en même temps +\bot_number\Nombre d'adversaires ordinateur +\skill\Spécifier la difficulté des adversaires ordinateur +\g_maplist_votable\Le nombre de cartes pouvant être votées à la fin du match +\sv_vote_simple_majority_factor\À partir de 51% de oui seulement, un vote est gagné +\XonoticMultiplayerDialog/Advanced settings...\Paramètres du serveur avancés +\XonoticMultiplayerDialog/Mutators...\Spéciales et arènes d'une seule arme +\g_cloaked\Tous les joueurs sont presque invisibles +\g_footsteps\Activer les bruitages de pas +\g_midair\Il faut que votre adversaire soit en l'air pour lui faire mal +\g_vampire\Les dégâts faits à vos enemies vous font gagner de la santé +\g_bloodloss\Si vous avez moins de santé que spécifié ici, vous perdrez du sang et mourez progressivement +\sv_gravity\Vous tombez plus lentement, comme sur la lune +\g_grappling_hook\Tous les joueurs ont un grappin +\g_jetpack\Tous les joueurs ont un jetpack +\g_pinata\Tous les joueurs lâchent toutes leurs armes quand ils meurent +\g_weapon_stay\Les armes restent où elles sont quand elles sont prises sur la carte +\g_weaponarena\Séléctionner une arène d'une seule arme donne des munitions illimitées pour cette arme, et désactive toutes les autres armes +\menu_weaponarena_with_laser\Also enable the laser in the weapon arena +\g_minstagib\Tous les joueurs reçoivent un MinstaNex, qui est un sniper hyperpuissant qui tue d'un coup. Si vous n'avez plus de munitions, vous mourez progressivement. +\g_nixnex\No Items Xonotic; tous les joueurs ont la même arme en même temps, et on change d'arme régulièrement +\g_nixnex_with_laser\Porter le laser avec l'arme du No Items Xonotic +\XonoticMultiplayerDialog/All\Séléctionner toutes les cartes +\XonoticMultiplayerDialog/None\Déséléctionner toutes les cartes + + +\XonoticMultiplayerDialog/Timedemo\Faire un test de performance en utilisant la vidéo choisie + +\fov\Champ de vision en degrés, par défaut 90, certains joueurs préfèrent entre 110 et 130 +\cl_bobcycle\Effet de "tremblement" de la caméra en courant +\cl_zoomfactor\Facteur de Zoom +\cl_zoomsensitivity\Changer la sensitivité du Zoom: 0 est la plus basse, 1 ne comporte pas de changement par rapport au mode dézoomé +\cl_zoomspeed\Facteur "d'adoucissement" du Zoom, 0 désactive complètement +\XonoticMultiplayerDialog/Weapon settings...\Paramétrer les armes (affichage, priorité) + +\cl_weaponpriority_useforcycling\Utiliser la liste de priorité pour le changement d'armes à la molette +\cl_autoswitch\Automatiquement changer d'arme si vous avez une meilleure arme que celle que vous portez +\r_drawviewmodel\Afficher l'arme à la permière personne +\cl_gunalign\Position de l'arme à l'écran, reconnection au serveur nécessaire pour prendre effet + +\crosshair_per_weapon\Set a different crosshair for each weapon, good if you play without weapon models +\crosshair_color_override\Also set the color of the crosshair depending on the weapon you are currently holding +\crosshair_size\Ajuster la taille du viseur +\crosshair_color_alpha\Ajuster l'opacité du viseur +\crosshair_color_red\Couleur: intensité du rouge dans le viseur +\crosshair_color_green\Couleur: intensité du vert dans le viseur +\crosshair_color_blue\Couleur: intensité du bleu dans le viseur +\sbar_hudselector\Utiliser l'ancienne interface HUD +\XonoticMultiplayerDialog/Radar, HUD & Waypoints...\Ajuster les paramètres de l'interface, de la mini-carte et des Waypoints +\_cl_name\Pseudonyme utilisé pour vous reconnaître dans le jeu + +\XonoticSettingsDialog\Changer les paramètres du jeu +\XonoticCreditsDialog\Les Crédits de Xonotic +\XonoticTeamSelectDialog\- +\XonoticMutatorsDialog\- +\XonoticMapInfoDialog\- +\XonoticUserbindEditDialog\- +\XonoticWinnerDialog\- +\XonoticWeaponsDialog\- +\XonoticRadarDialog\- +\XonoticServerInfoDialog\- +\XonoticCvarsDialog\- + +\XonoticQuitDialog\Quitter Xonotic +\XonoticQuitDialog/Yes\Retour au boulot... +\XonoticQuitDialog/No\'Faut que je fragge plus de monde! + +\XonoticSettingsDialog/Input\Paramètres contrôle souris/clavier +\sensitivity\Sensitivité de la souris +\menu_mouse_speed\Sensitivité de la souris dans les menus, n'affecte pas le jeu +\m_filter\Adoucit le mouvement de souris, mais crée une légère latence de souris +\m_pitch\Inverser la souris sur l'axe vertical (mode jeu d'avion) +\vid_dgamouse\Utiliser une souris DGA +\con_closeontoggleconsole\Autoriser la fermeture de console avec la touche d'ouverture de console (sinon, Shift+Échap) +\sbar_showbinds\Afficher les actions possibles avec des touches/commandes +\cl_showpressedkeys\Afficher les touches qu'un joueur est en train d'appuyer + +\XonoticSettingsDialog/Video\Video settings +\vid_width\Résolution de l'écran +\vid_bitsperpixel\Profondeur des couleurs: 16 bits est plus rapide, mais 32 bits est de meilleure qualité (recommandé) +\vid_fullscreen\Activer le mode plein écran (par défaut: activé) +\vid_vsync\Activer la syncronisation verticale pour éviter des problèmes d'affichage, limite le nombre maximum d'images par seconde (par défaut: désactivé) +\r_glsl\Activer les Shaders OpenGL 2.0 pour des effets de lumière améliorés +\gl_vbo\Utiliser les VBOs pour stocker les modèles 3D statiques dans la mémoire pour une meilleure performance (par défaut: Points et Triangles) +\r_depthfirst\Éviter des problèmes de profondeur de rendu en faisant un rendu de profondeur de la carte/joueurs avant le rendu "standard" (par défaut: désactivé) +\gl_texturecompression\Compresser les textures pour économiser de la mémoire graphique (par défaut: aucun) +\gl_finish\Faire attendre le processeur que le rendu graphique se finisse pour éviter des problèmes d'affichage divers (par défaut: désactivé) +\v_brightness\Luminosité du noir (par défaut: 0) +\v_contrast\Luminosité du blanc (par défaut: 1) +\v_gamma\Correction du gamma ne changeant pas la luminosité du noir ou du blanc (par défaut: 1.125) +\v_contrastboost\Multiplier le constraste dans des salles sombres (par défaut: 1) +\r_glsl_saturation\Ajustement de la saturation (0 = noir et blanc, 1 = normal, 2 = saturé) des couleurs (par défaut: 1) +\v_glslgamma\Utiliser GLSL pour corriger le gamma, attention, cela risque d'augementer fortement l'utilisation de ressources (par défaut: désactivé) +\r_ambient\Lumière ambiente, si elle est trop élévée, les cartes auront un éclairage plus "plat" et moins contrasté +\r_hdr_scenebrightness\Éclairage du rendu global (par défaut: 1) +\vid_samples\Activer l'anticrénelage, réduit l'effet d'escalier sur les modèles 3D, mais augmente fortement l'utilisation des ressources +\v_flipped\Mode mirroir (par défaut: désactivé) + +\XonoticSettingsDialog/Effects\Paramètres des effets graphiques +\r_subdivisions_tolerance\Ajuster la qualité des modèles 3D de carte (courbes, tuyaux) (par défaut: normal) +\gl_picmip\Ajuster la qualité des textures. La baisser diminue l'utilisation des ressources, mais rend les textures floues. (par défaut: normal) +\r_picmipworld\If set, only reduce the texture quality of models (default: enabled) +\mod_q3bsp_nolightmaps\Utiliser des lightmaps haute résolution, augmente l'utilisation des resources, mais rend les lightmaps plus nettes (par défaut: activé) +\cl_particles_quality\Nombre de particules; moins de particules consomment moins de ressources (par défaut: 0.5) +\r_drawparticles_drawdistance\Toutes les particules qui sont plus loin que cette distance ne seront pas affichées (par défaut: 1000) +\cl_decals\Activer les marques d'impacts et de sang (par défaut: activé) +\r_drawdecals_drawdistance\Toutes les marques d'impacts qui sont plus loin que cette distance ne seront pas affichées (par défaut: 300) +\cl_decals_time\Temps en secondes avant que les marques d'impacts disparaissent (par défaut: 2 secondes) +\cl_gentle\Remplacer les effets gore par des effets moins violents (par défaut: désactivé) +\cl_nogibs\Réduire le nombre de Gibs ou les désactiver totalement (par défaut: beaucoup) +\v_kicktime\Faire trembler la vue en recevant des dégâts (par défaut: 0) +\gl_texture_anisotropy\Qualité du filtrage anistrope (par défaut: 1x) +\r_glsl_deluxemapping\Utiliser les effets lumineux avancés (par défaut: activé) +\r_shadow_gloss\Utiliser le reflet des textures (par défaut: activé) +\gl_flashblend\Enable faster but uglier dynamic lights by rendering bright coronas instead of real dynamic lights (default: disabled) +\r_shadow_realtime_dlight\Activer le rendu des lumières dynamiques en temps réel (par défaut: activé) +\r_shadow_realtime_dlight_shadows\Activer le rendu des ombres depuis les lumières dynamiques en temps réel (par défaut: désactivé) +\r_shadow_realtime_world\Activer le rendu des lumières carte en temps réel, a un gros impact sur la performance (par défaut: désactivé) +\r_shadow_realtime_world_shadows\Activer le rendu des ombres depuis les lumières carte en temps réel, a un impact sur la performance aussi (par défaut: désactivé) +\r_shadow_usenormalmap\Utiliser des effets d'ombrage de lumière sur les textures (par défaut: activé) +\r_showsurfaces\Désactiver les textures et les remplacer par des couleurs unies. Utile pour les configurations très faible, mais laid. (par défaut: désactivé) +\r_glsl_offsetmapping\Activer l'effet de relief sur les textures, a un léger impact sur la performance (par défaut: désactivé) +\r_glsl_offsetmapping_reliefmapping\Augmenter la qualité des effets de relief sur les textures, a un gros impact sur la performance (par défaut: désactivé) +\r_water\Activer des reflets de réflecion et de réfraction d'eau et des portails Warpzone (par défaut: désactivé) +\r_water_resolutionmultiplier\Qualité des reflets d'eau et des portails Warpzone, l'augmenter a un gros impact sur la performance (par défaut: bon) +\r_coronas\Activer des effets d'éblouissement peu gourmands (par défaut: activé) +\r_coronas_occlusionquery\Prendre en compte la visibilité pour les effets "Brillance Lumière" (par défaut: activé) +\r_bloom\Activer un effet d'éblouissement plus beau, mais gourmand (par défaut: désactivé) +\r_hdr\Activer un effet d'ébloissement encore plus beau, mais encore plus gourmand (par défaut: désactivé) +\r_motionblur\Intensité du flou de mouvement - 0.5 est recommandé +\r_damageblur\Intensité du flou en recevant des dégâts - 0.4 est recommandé + +\XonoticSettingsDialog/Audio\Audio settings +\bgmvolume\- +\volume\- +\snd_staticvolume\- +\snd_worldchannel0volume\- +\snd_entchannel3volume\- +\snd_playerchannel6volume\- +\snd_playerchannel7volume\- +\snd_entchannel4volume\- +\snd_playerchannel2volume\- +\snd_playerchannel1volume\- +\snd_speed\Fréquence de la sortie audio +\snd_channels\Nombre de canaux pour la sortie audio +\snd_swapstereo\Échanger les canneaux stéréo gauche/droite +\snd_spatialization_control\Essayer de diminuer le "constraste" entre la partie gauche et droite du casque audio pour un meilleur son +\cl_voice_directional\Activer les voix des personnages sur la carte +\cl_voice_directional_taunt_attenuation\Distance à laquelle les voix sont audibles +\cl_autotaunt\Automatiquement narguer les enemis quand vous les tuez +\cl_sound_maptime_warning\Voix (en anglais) qui vous dit le temps restant avant la fin du match +\cl_hitsound\Jouer un son quand vous touchez un enemi +\menu_sounds\Jouer des sons en cliquant ou en passant la souris sur des options + +\XonoticSettingsDialog/Network\Paramètres du jeu en réseau +\cl_movement\Activer la prédiction des mouvements du joueur pour éviter les saccades lors de parties en réseau +\cl_nolerp\Algorithme pour éviter les saccades lors de parties en réseau +\shownetgraph\Show a +\_cl_rate\Specify your network speed with this slider +\cl_netfps\Nombre maximum de paquets à envoyer au server chaque seconde +\cl_curl_maxdownloads\Nombre maximum de téléchargements simultanés +\cl_curl_maxspeed\Vitesse maximum de téléchargement +\cl_port\Forcer le client à passer par le port défini (UDP) s'il n'est pas 0 + +\XonoticSettingsDialog/Misc\Autres paramètres +\showtime\Montrer l'heure, utile pour les captures d'écran +\showdate\Montrer la date, utile pour les captures d'écran +\showfps\Montrer le nombre d'Images Par Seconde rendues (Frames Per Second = FPS) +\cl_showspeed\Montrer la vitesse du joueur +\cl_showspeed_unit\Séléctionner l'unité de mesure de la vitesse (qu/s = in/s) +\cl_showacceleration\Montrer l'accélération du joueur +\cl_showacceleration_scale\Éxagérer l'accéléromètre avec ce facteur pour qu'il soit plus visible + +\XonoticSettingsDialog/Advanced settings...\Paramètres avancés pour configuer le jeu dans ses moindres détails +\g_friendlyfire\Pourcentage de dégâts infligés aux équipiers si vous les touchez +\g_mirrordamage\Pourcentage de dégâts infligés aux équipiers qui vous sera renvoyé +\g_tdm_teams_override\Écraser le nombre d'équipes défini par la carte + +\cl_teamradar_position\- +\cl_teamradar_size\- +\cl_teamradar_zoommode\- +\cl_teamradar_rotation\- +\cl_teamradar_scale\- +\cl_teamradar_foreground_alpha\- +\cl_teamradar_background_alpha\Opacité de l'arrière-plan du radar +\viewsize\Enable/Désactiver l'arrière plan de l'interface +\sbar_alpha_bg\Opacité de l'arrière plan de l'interface +\sbar_color_bg_r\Intensité du rouge dans l'arrière-plan de l'interface +\sbar_color_bg_g\Intensité du vert dans l'arrière-plan de l'interface +\sbar_color_bg_b\Intensité du bleu dans l'arrière-plan de l'interface +\sbar_color_bg_team\Saturation de la couleur d'équipe avec l'arrière-plan de l'interface +\cl_hidewaypoints\Montrer/Cacher les Waypoints (flèches 3D) +\g_waypointsprite_scale\Ajuster la taille des Waypoints +\g_waypointsprite_alpha\Ajuster l'opacité des Waypoints +\cl_shownames\Afficher le nom du joueur que vous pointez avec votre viseur + +\crosshair_hittest\Aucun: aucun effet de viseur - TrueAim: rendre le viseur flou si vous risquez de vous blesser vous même ou un équipier - Enemis: rendre le viseur plus grand si vous pouvez toucher un enemi diff --git a/xonotic-credits.txt b/xonotic-credits.txt index ec46525c90..977c7008cd 100644 --- a/xonotic-credits.txt +++ b/xonotic-credits.txt @@ -53,6 +53,20 @@ Merlijn Hofstra DarkPlaces by Forest "LordHavoc" Hale +**Translators + +*German +Rudolf "divVerent" Polzer + +*French +Calinou + +*Portuguese +Ricardo "Hellgardia" Silva + +*Russian +Lord Canistra + **Active Contributors Antonio "terencehill" Piu Ben "MooKow" Banker @@ -63,6 +77,7 @@ Kristian "morfar" Johansson kojn Maik "SavageX" Merten MrBougo +Ruszkai "C.Brutail" Ákos Samual Lenks Stephan "esteel" Stahl Wolfgang "Blub\0" Bumiller diff --git a/xonotic-credits.txt.fr b/xonotic-credits.txt.fr new file mode 100644 index 0000000000..472491bf16 --- /dev/null +++ b/xonotic-credits.txt.fr @@ -0,0 +1,156 @@ +**Dévlopeurs principaux + +Rudolf "divVerent" Polzer +-z- +Merlijn Hofstra +morphed +mand1nga +tZork + + +**Dévlopeurs secondaires + +*Art +Diabolik a.k.a Dib + +*Textures / Web +-z- (web / game) +FruitieX (game / web) + +*Modèles 3D +morphed + +*Concepts +LJFHutch +theShadow + +*Création des cartes +FruitieX +MirceaKitsune + +*Musique / Sons +mand1nga +Merlijn Hofstra +remaxim + +*Améliorations du moteur et QA +Rudolf "divVerent" Polzer + +*Code source du jeu +Rudolf "divVerent" Polzer +FruitieX +tZork + +*Marketing / Management du Projet +-z- +mand1nga + +*Légalité +Rudolf "divVerent" Polzer +Merlijn Hofstra + +**Moteur du jeu +DarkPlaces +by Forest "LordHavoc" Hale + +**Traducteurs + +*Allemand +Rudolf "divVerent" Polzer + +*Français +Calinou + +*Portugais +Ricardo "Hellgardia" Silva + +**Contribueurs actifs +Antonio "terencehill" Piu +Ben "MooKow" Banker +Calinou +chooksta +Cuinn "Cuinnton" Herrick +Kristian "morfar" Johansson +kojn +Maik "SavageX" Merten +MrBougo +Ruszkai "C.Brutail" Ákos +Samual Lenks +Stephan "esteel" Stahl +Wolfgang "Blub\0" Bumiller + +**Anciens contribueurs +Alexander "motorsep" Zubov +Amos "torus" Dudley +Andreas "Black" Kirsch +Attila "WW3" Houtkooper +BigMac +blkrbt +Braden "meoblast001" Walters +Brain Younds +Chris "amethyst7" Matz +Christian Ice +Clinton "Kaziganthe" Freeman +Dan "Digger" Korostelev +Dan "Wazat" Hale +Donkey +dstrek +Dustin Geeraert +Edgenetwork +Edward "Ed" Holness +Eric "Munyul Verminard" Sambach +Fabien "H. Reaper" Tschirhart +FrikaC +Garth "Zombie" Hendy +Gerd "Elysis" Raudenbusch +Gottfried "Toddd" Hofmann +Henning "Tymo" Janssen +"Innovati" +Jitspoe +Jody Gallagher +Juergen "LowDragon" Timm +KadaverJack +Kevin "Tyrann" Shanahan +Kurt Dereli +lcatlnx +Lee David Ash +Lee Vermeulen +leileilol +Marius "GreEn`mArine" Shekow +Marko "Urre" Permanto +Mathieu "Elric" Olivier +Mattrew "Tronyn" Rye +MauveBib +Mephisto +michaelb +Michael "Tenshihan" Quinn +Munyul +Netzwerg +NoelCower +Parapraxis +Paul "Strahlemann" Evers +Petithomme +Q1 Retexturing Project +Qantourisc +Rick "Rat" Kelley +Robert "ai" Kuroto +Ronan +Sajt +Severin "sev" Meyer +Shaggy +Shank +Simon O'Callaghan +SomeGuy +Spike +Spirit +Steve Vermeulen +Supajoe +Tei +terencehill +Tomaz +Ulrich Galbraith +Vortex +William Libert +William "Willis" Weilep +Yves "EviLair" Allaire +Zenex