diff --git a/.gitignore b/.gitignore index 6a4a4c428..057e8029c 100644 --- a/.gitignore +++ b/.gitignore @@ -60,6 +60,7 @@ android/bin android/build android/libs android/obj +android/res android/.gradle android-* *.apk diff --git a/CMakeLists.txt b/CMakeLists.txt index eacd1baed..4311e5fc7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,8 +1,9 @@ +cmake_minimum_required(VERSION 2.8.4) + # root CMakeLists for the SuperTuxKart project project(SuperTuxKart) set(PROJECT_VERSION "git") -cmake_minimum_required(VERSION 2.8.4) if(NOT (CMAKE_MAJOR_VERSION VERSION_LESS 3)) cmake_policy(SET CMP0043 OLD) endif() @@ -28,12 +29,12 @@ option(USE_FRIBIDI "Support for right-to-left languages" ON) option(CHECK_ASSETS "Check if assets are installed in ../stk-assets" ON) option(USE_SYSTEM_ANGELSCRIPT "Use system angelscript instead of built-in angelscript. If you enable this option, make sure to use a compatible version." OFF) option(USE_SYSTEM_GLEW "Use system GLEW instead of the built-in version, when available." ON) -option(ENABLE_WAYLAND_DEVICE "Enable Wayland device for linux build" OFF) CMAKE_DEPENDENT_OPTION(BUILD_RECORDER "Build opengl recorder" ON "NOT SERVER_ONLY;NOT USE_GLES2;NOT APPLE" OFF) -if (UNIX AND NOT APPLE) +if ((UNIX AND NOT APPLE) AND NOT SERVER_ONLY) + option(ENABLE_WAYLAND_DEVICE "Enable Wayland device for linux build" ON) option(USE_GLES2 "Use OpenGL ES2 renderer" OFF) endif() diff --git a/ISSUE_TEMPLATE.md b/ISSUE_TEMPLATE.md new file mode 100644 index 000000000..6e6c8a01d --- /dev/null +++ b/ISSUE_TEMPLATE.md @@ -0,0 +1,49 @@ +## Description + +Provide a description of your issue. +For any suggestions, please address them on the [forum](https://forum.freegamedev.net/viewforum.php?f=16). + +## Steps to reproduce + +## Configuration + +STK release version: + +STK Source (ppa, distribution package, official bin,...): +If you did not download STK from the official website, please specify where you got it: + +System: + +Graphics card: + +CPU: + +Gamepads/keyboards models if related to the issue: + +## Additional information + +Please provide stdout.log, it is located in + +* %appdata%\supertuxkart\0.8.2 (windows) +* ~/Library/Application Support/supertuxkart/0.8.2 (mac) +* $XDG_CONFIG_HOME/supertuxkart/0.8.2 or ~/.config/supertuxkart/0.8.2 (linux, and other unix based systems) + +stdout.log +``` + +``` + +If your issue is related to the input config (gamepads, keyboards), please provide your file input.xml located in the same directory as stdout.log. + +input.xml +```xml + +``` + + +If an error message was shown, please copy paste the complete error message or a screenshot of it. + +error +``` + +``` diff --git a/android/README.ANDROID b/android/README.ANDROID index 689d09928..4dda16985 100644 --- a/android/README.ANDROID +++ b/android/README.ANDROID @@ -143,38 +143,3 @@ you have to run: and then: zipalign -v 4 SuperTuxKart-release-unsigned.apk SuperTuxKart-release.apk - - - --------------------------------------------------------------------------------- - KNOWN ISSUES --------------------------------------------------------------------------------- - -1. It's not possible to compile STK for Android < 4.4 due to missing GLES 3.0 - functions. It is technically possible to do - check GLES context version, - load OpenGL functions dynamically using EGL, and if they are not loaded - properly, then fallback to GLES 2.0. - -2. It never ocurred for me, but it's possible that EGL context is lost in some - cases. SuperTuxKart is not designed to re-create all textures at any moment, - so this is a "Wontfix", at least for now. - -3. We use "exit(0)" at the end of main function. We shouldn't do it and we - should just return from the main function. But STK uses some global - variables and their values are remembered when the game is restarted. We - should properly clear them or re-initialize on startup. Using the "exit(0)" - is not-that-bad workaround, but it may cause a crash on exit sometimes. - It seems to affect only Android 5.0. More information about the crash: - https://code.google.com/p/android/issues/detail?id=160824 - -4. STK crashes on startup on some devices when aarch64 build is made using - Android r13 NDK. The r13 version has rather big modifications (it uses clang - instead of gcc by default). This is probably a bug in NDK/compiler/OS, but - for this reason using NDK r12 for 64-bit arm compilation is preferred. - -5. Angelscript doesn't have full support for aarch64 builds, so that scripting - won't work on this platform. - -6. Turning left/right using accelerometer is available, but at this stage the - default screen orientation is not automatically detected and user must - manually choose if he needs "phone" or "tablet" accelerometer. diff --git a/android/icon-dbg.png b/android/icon-dbg.png new file mode 100644 index 000000000..cc9799a64 Binary files /dev/null and b/android/icon-dbg.png differ diff --git a/android/res/drawable/icon.png b/android/icon.png similarity index 100% rename from android/res/drawable/icon.png rename to android/icon.png diff --git a/android/make.sh b/android/make.sh index 95a905d3d..7fac9f3c6 100755 --- a/android/make.sh +++ b/android/make.sh @@ -36,6 +36,13 @@ export HOST_AARCH64=aarch64-linux-android export NDK_PLATFORM_AARCH64=android-21 export SDK_VERSION_AARCH64=21 +export APP_NAME_RELEASE="SuperTuxKart" +export APP_NAME_DEBUG="SuperTuxKart Debug" +export PACKAGE_NAME_RELEASE="org.supertuxkart.stk" +export PACKAGE_NAME_DEBUG="org.supertuxkart.stk_dev" +export APP_ICON_RELEASE="$DIRNAME/icon.png" +export APP_ICON_DEBUG="$DIRNAME/icon-dbg.png" + # A helper function that checks if error ocurred check_error() @@ -52,6 +59,7 @@ if [ ! -z "$1" ] && [ "$1" = "clean" ]; then rm -rf build rm -rf libs rm -rf obj + rm -rf res rm -rf .gradle exit fi @@ -108,10 +116,16 @@ if [ "$BUILD_TYPE" = "debug" ] || [ "$BUILD_TYPE" = "Debug" ]; then export ANT_BUILD_TYPE="debug" export GRADLE_BUILD_TYPE="assembleDebug" export IS_DEBUG_BUILD=1 + export APP_NAME="$APP_NAME_DEBUG" + export PACKAGE_NAME="$PACKAGE_NAME_DEBUG" + export APP_ICON="$APP_ICON_DEBUG" elif [ "$BUILD_TYPE" = "release" ] || [ "$BUILD_TYPE" = "Release" ]; then export ANT_BUILD_TYPE="release" export GRADLE_BUILD_TYPE="assembleRelease" export IS_DEBUG_BUILD=0 + export APP_NAME="$APP_NAME_RELEASE" + export PACKAGE_NAME="$PACKAGE_NAME_RELEASE" + export APP_ICON="$APP_ICON_RELEASE" else echo "Unsupported BUILD_TYPE: $BUILD_TYPE. Possible values are: " \ "debug, release" @@ -342,8 +356,31 @@ check_error # Build apk echo "Building APK" +mkdir -p "$DIRNAME/res/drawable/" +mkdir -p "$DIRNAME/res/drawable-hdpi/" +mkdir -p "$DIRNAME/res/drawable-mdpi/" +mkdir -p "$DIRNAME/res/drawable-xhdpi/" +mkdir -p "$DIRNAME/res/drawable-xxhdpi/" +mkdir -p "$DIRNAME/res/values/" + +STRINGS_FILE="$DIRNAME/res/values/strings.xml" + +echo "" > "$STRINGS_FILE" +echo "" >> "$STRINGS_FILE" +echo " $APP_NAME" >> "$STRINGS_FILE" +echo "" >> "$STRINGS_FILE" + sed -i "s/minSdkVersion=\".*\"/minSdkVersion=\"$SDK_VERSION\"/g" \ "$DIRNAME/AndroidManifest.xml" + +sed -i "s/package=\".*\"/package=\"$PACKAGE_NAME\"/g" \ + "$DIRNAME/AndroidManifest.xml" + +cp "$APP_ICON" "$DIRNAME/res/drawable/icon.png" +convert -scale 72x72 "$APP_ICON" "$DIRNAME/res/drawable-hdpi/icon.png" +convert -scale 48x48 "$APP_ICON" "$DIRNAME/res/drawable-mdpi/icon.png" +convert -scale 96x96 "$APP_ICON" "$DIRNAME/res/drawable-xhdpi/icon.png" +convert -scale 144x144 "$APP_ICON" "$DIRNAME/res/drawable-xxhdpi/icon.png" if [ "$BUILD_TOOL" = "gradle" ]; then diff --git a/android/res/drawable-hdpi/icon.png b/android/res/drawable-hdpi/icon.png deleted file mode 100644 index 33de3e803..000000000 Binary files a/android/res/drawable-hdpi/icon.png and /dev/null differ diff --git a/android/res/drawable-mdpi/icon.png b/android/res/drawable-mdpi/icon.png deleted file mode 100644 index 0a8f484e6..000000000 Binary files a/android/res/drawable-mdpi/icon.png and /dev/null differ diff --git a/android/res/drawable-xhdpi/icon.png b/android/res/drawable-xhdpi/icon.png deleted file mode 100644 index 6f4383226..000000000 Binary files a/android/res/drawable-xhdpi/icon.png and /dev/null differ diff --git a/android/res/drawable-xxhdpi/icon.png b/android/res/drawable-xxhdpi/icon.png deleted file mode 100644 index 7bbbc461b..000000000 Binary files a/android/res/drawable-xxhdpi/icon.png and /dev/null differ diff --git a/android/res/values/strings.xml b/android/res/values/strings.xml deleted file mode 100644 index 931a3c2c9..000000000 --- a/android/res/values/strings.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - SuperTuxKart - diff --git a/data/gui/online/lan.stkgui b/data/gui/online/lan.stkgui new file mode 100644 index 000000000..c94e6082a --- /dev/null +++ b/data/gui/online/lan.stkgui @@ -0,0 +1,29 @@ + + + + +
+
+ + +
+
diff --git a/data/gui/online/online.stkgui b/data/gui/online/online.stkgui new file mode 100644 index 000000000..3572916bc --- /dev/null +++ b/data/gui/online/online.stkgui @@ -0,0 +1,29 @@ + + +
+
+ +
+ + +
diff --git a/data/gui/online/profile_achievements_tab.stkgui b/data/gui/online/profile_achievements_tab.stkgui index dbf3256b5..7d519d661 100644 --- a/data/gui/online/profile_achievements_tab.stkgui +++ b/data/gui/online/profile_achievements_tab.stkgui @@ -9,7 +9,6 @@ - diff --git a/data/gui/online/profile_friends.stkgui b/data/gui/online/profile_friends.stkgui index 0e1213c61..e0e49473b 100644 --- a/data/gui/online/profile_friends.stkgui +++ b/data/gui/online/profile_friends.stkgui @@ -9,7 +9,6 @@ - diff --git a/data/gui/online/profile_servers.stkgui b/data/gui/online/profile_servers.stkgui index 25ca99ffa..88de78d8c 100644 --- a/data/gui/online/profile_servers.stkgui +++ b/data/gui/online/profile_servers.stkgui @@ -3,59 +3,25 @@
-
+
- + +
diff --git a/data/gui/online/profile_settings.stkgui b/data/gui/online/profile_settings.stkgui index 126519d9f..d89d52c23 100644 --- a/data/gui/online/profile_settings.stkgui +++ b/data/gui/online/profile_settings.stkgui @@ -8,7 +8,6 @@ - \n" +"PO-Revision-Date: 2017-11-13 00:19+0000\n" +"Last-Translator: Ibrahim Al-Darra \n" "Language-Team: Arabic (http://www.transifex.com/supertuxkart/supertuxkart/language/ar/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -3545,12 +3545,12 @@ msgstr "معلق" #: src/states_screens/online_profile_friends.cpp:223 msgid "Offline" -msgstr "" +msgstr "غير متصل" #: src/states_screens/online_user_search.cpp:207 #: src/states_screens/online_user_search.cpp:271 msgid "Searching" -msgstr "" +msgstr "البحث" #: src/states_screens/options_screen_device.cpp:71 msgid "Action" @@ -3689,7 +3689,7 @@ msgstr "لوحة المفاتيح %i" #: src/states_screens/options_screen_input.cpp:138 msgid "Touch Device" -msgstr "" +msgstr "أجهزة لمس" #: src/states_screens/options_screen_ui.cpp:159 msgid "" @@ -3960,11 +3960,11 @@ msgstr "واكب عربة المتزعّم لكن لا تتخطّاه!" #: src/states_screens/race_setup_screen.cpp:114 msgid "Hit others with weapons until they lose all their lives." -msgstr "" +msgstr "أصب اللاعبين بالأسلحة حتى يخسروا كل أرواحهم." #: src/states_screens/race_setup_screen.cpp:119 msgid "Push the ball into the opposite cage to score goals." -msgstr "" +msgstr "أدخل الكرة في قفص الخصم للتسجل أهدافًا." #: src/states_screens/race_setup_screen.cpp:129 msgid "Explore tracks to find all hidden eggs" @@ -4175,7 +4175,3 @@ msgstr "اجمع قنّينات النّيترو (سنستخدمها بعد ال #, c-format msgid "Oops! When you're in trouble, press <%s> to be rescued" msgstr "آخ! أنت في ورطة، اضغط <%s> لتُنقذ" - -#: src/states_screens/credits.cpp:209 -msgid "translator-credits" -msgstr "Launchpad Contributions:\nBenamara Mohamed, 2015\nIbrahim Al-Darra, 2017\nMoaaz Mohamed, 2017\nصفا الفليج, 2015" diff --git a/data/po/be.po b/data/po/be.po index 18622e708..682c92451 100644 --- a/data/po/be.po +++ b/data/po/be.po @@ -10,7 +10,7 @@ msgstr "" "Project-Id-Version: SuperTuxKart\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2017-10-04 20:58-0400\n" -"PO-Revision-Date: 2017-10-24 10:06+0000\n" +"PO-Revision-Date: 2017-11-13 00:19+0000\n" "Last-Translator: Auria \n" "Language-Team: Belarusian (http://www.transifex.com/supertuxkart/supertuxkart/language/be/)\n" "MIME-Version: 1.0\n" @@ -4160,7 +4160,3 @@ msgstr "Збірайце бутэлькі з нітра (выкарыстаем #, c-format msgid "Oops! When you're in trouble, press <%s> to be rescued" msgstr "Ой! Калі ў вас праблемы, націсніце <%s> для выратавання." - -#: src/states_screens/credits.cpp:209 -msgid "translator-credits" -msgstr "Launchpad Contributions:\n, 2015\nViktar Vauchkevich, 2017" diff --git a/data/po/bg.po b/data/po/bg.po index 4cc67e411..c73840c0c 100644 --- a/data/po/bg.po +++ b/data/po/bg.po @@ -11,7 +11,7 @@ msgstr "" "Project-Id-Version: SuperTuxKart\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2017-10-04 20:58-0400\n" -"PO-Revision-Date: 2017-10-24 10:06+0000\n" +"PO-Revision-Date: 2017-11-13 00:19+0000\n" "Last-Translator: Любомир Василев\n" "Language-Team: Bulgarian (http://www.transifex.com/supertuxkart/supertuxkart/language/bg/)\n" "MIME-Version: 1.0\n" @@ -4149,7 +4149,3 @@ msgstr "Събирай бутилки с азот (ще ги използвам #, c-format msgid "Oops! When you're in trouble, press <%s> to be rescued" msgstr "Опа! Когато си загазил, натисни <%s>, за да се спасиш" - -#: src/states_screens/credits.cpp:209 -msgid "translator-credits" -msgstr "Launchpad Contributions:\nЛюбомир Василев, 2015-2016\nЛюбомир Василев, 2016-2017" diff --git a/data/po/bn.po b/data/po/bn.po index d693c2408..062aab1a9 100644 --- a/data/po/bn.po +++ b/data/po/bn.po @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: SuperTuxKart\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2017-10-04 20:58-0400\n" -"PO-Revision-Date: 2017-10-24 10:06+0000\n" +"PO-Revision-Date: 2017-11-13 00:19+0000\n" "Last-Translator: Auria \n" "Language-Team: Bengali (http://www.transifex.com/supertuxkart/supertuxkart/language/bn/)\n" "MIME-Version: 1.0\n" @@ -3020,7 +3020,7 @@ msgstr "" #: src/states_screens/credits.cpp:180 msgid "translator-credits" -msgstr "Launchpad Contributions:\nMahay Alam Khan https://launchpad.net/~mahayalamkhan\nMahay Alam Khan, 2012" +msgstr "Launchpad Contributions:\n Mahay Alam Khan https://launchpad.net/~mahayalamkhan" #: src/states_screens/dialogs/addons_loading.cpp:97 msgid "Update" diff --git a/data/po/br.po b/data/po/br.po index a2c38693b..49ca97cf5 100644 --- a/data/po/br.po +++ b/data/po/br.po @@ -14,7 +14,7 @@ msgstr "" "Project-Id-Version: SuperTuxKart\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2017-10-04 20:58-0400\n" -"PO-Revision-Date: 2017-10-24 10:06+0000\n" +"PO-Revision-Date: 2017-11-13 00:19+0000\n" "Last-Translator: Auria \n" "Language-Team: Breton (http://www.transifex.com/supertuxkart/supertuxkart/language/br/)\n" "MIME-Version: 1.0\n" @@ -3025,7 +3025,7 @@ msgstr "An niver uc'hek a c'hoarierion a rank bezañ etre 2 ha 12." #: src/states_screens/credits.cpp:180 msgid "translator-credits" -msgstr "Launchpad Contributions:\nAlan https://launchpad.net/~alan-m.\nAlan Monfort, 2015-2016\nDawid Gan https://launchpad.net/~deveee\nGwenn M, 2015\nIrriep Nala Novram, 2016\nIrriep Nala Novram, 2016\nIrriep Nala Novram, 2017\nSTK-team https://launchpad.net/~stk" +msgstr "Launchpad Contributions:\n Alan https://launchpad.net/~alan-m.\n Dawid Gan https://launchpad.net/~deveee\n STK-team https://launchpad.net/~stk" #: src/states_screens/dialogs/addons_loading.cpp:97 msgid "Update" diff --git a/data/po/bs.po b/data/po/bs.po index 05a02a3eb..83e280182 100644 --- a/data/po/bs.po +++ b/data/po/bs.po @@ -10,7 +10,7 @@ msgstr "" "Project-Id-Version: SuperTuxKart\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2017-10-04 20:58-0400\n" -"PO-Revision-Date: 2017-10-24 10:06+0000\n" +"PO-Revision-Date: 2017-11-13 00:19+0000\n" "Last-Translator: Auria \n" "Language-Team: Bosnian (http://www.transifex.com/supertuxkart/supertuxkart/language/bs/)\n" "MIME-Version: 1.0\n" @@ -4154,7 +4154,3 @@ msgstr "Sakupljajte boce nitro-a (koristićemo ih posle skretanja)." #, c-format msgid "Oops! When you're in trouble, press <%s> to be rescued" msgstr "Ups! Kada ste u problemu, pritisnite <%s> kako biste bili spašeni." - -#: src/states_screens/credits.cpp:209 -msgid "translator-credits" -msgstr "Launchpad Contributions:\nNikola Kantarević, 2016-2017" diff --git a/data/po/ca.po b/data/po/ca.po index d5456d24b..1fe5882c9 100644 --- a/data/po/ca.po +++ b/data/po/ca.po @@ -10,7 +10,7 @@ msgstr "" "Project-Id-Version: SuperTuxKart\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2017-10-04 20:58-0400\n" -"PO-Revision-Date: 2017-10-24 10:06+0000\n" +"PO-Revision-Date: 2017-11-13 00:19+0000\n" "Last-Translator: Marc Coll Carrillo \n" "Language-Team: Catalan (http://www.transifex.com/supertuxkart/supertuxkart/language/ca/)\n" "MIME-Version: 1.0\n" @@ -3021,7 +3021,7 @@ msgstr "El nombre màxim de jugadors ha d'estar entre 2 i 12." #: src/states_screens/credits.cpp:180 msgid "translator-credits" -msgstr "Launchpad Contributions:\nAljullu https://launchpad.net/~aljullu\nDawid Gan https://launchpad.net/~deveee\nMarc Coll Carrillo https://launchpad.net/~marc-coll-carrillo\nMarc Coll Carrillo, 2012\nMarc Coll Carrillo, 2015-2017\nSTK-team https://launchpad.net/~stk\nTae-Wong SEO https://launchpad.net/~seotaewong40\nVPablo https://launchpad.net/~villumar" +msgstr "Launchpad Contributions:\n Aljullu https://launchpad.net/~aljullu\n Dawid Gan https://launchpad.net/~deveee\n Marc Coll Carrillo https://launchpad.net/~marc-coll-carrillo\n STK-team https://launchpad.net/~stk\n Tae-Wong SEO https://launchpad.net/~seotaewong40\n VPablo https://launchpad.net/~villumar" #: src/states_screens/dialogs/addons_loading.cpp:97 msgid "Update" diff --git a/data/po/cs.po b/data/po/cs.po index 799d92006..d78647800 100644 --- a/data/po/cs.po +++ b/data/po/cs.po @@ -12,8 +12,8 @@ msgstr "" "Project-Id-Version: SuperTuxKart\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2017-10-04 20:58-0400\n" -"PO-Revision-Date: 2017-10-24 10:06+0000\n" -"Last-Translator: Auria \n" +"PO-Revision-Date: 2017-11-13 00:19+0000\n" +"Last-Translator: ToMáš Marný\n" "Language-Team: Czech (http://www.transifex.com/supertuxkart/supertuxkart/language/cs/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -798,7 +798,7 @@ msgstr "Až nastavíte vstupní zařízení, budete připraveni hrát. Vyberte i msgid "" "Hitting a banana can result in one of the following being attached to the " "kart:" -msgstr "" +msgstr "Náraz do banánu může mít za následek, že se připojí k motokáře jedna z následujících položek:" #. I18N: ./data/gui/help5.stkgui #. I18N: In the help menu @@ -815,7 +815,7 @@ msgstr "Padák - zpomaluje motokáru méně než kotva." msgid "" "Bomb - detonates after a short amount of time to throw the kart up in the " "air. Bump into another kart to transfer the bomb to another player." -msgstr "" +msgstr "Bomba – po chvíli vybuchne a vyhodí motokáru do vzduchu. Nárazem do jiné motokáry přehodíte bombu jinému hráči." #. I18N: ./data/gui/karts.stkgui #. I18N: In the kart selection (player setup) screen @@ -919,7 +919,7 @@ msgstr "Prohozená tlačítka" #. I18N: ./data/gui/multitouch_settings.stkgui #. I18N: In the multitouch settings screen msgid "Buttons scale" -msgstr "" +msgstr "Rozsah tlačítek" #. I18N: ./data/gui/multitouch_settings.stkgui #. I18N: In the multitouch settings screen @@ -934,12 +934,12 @@ msgstr "Pokročilé" #. I18N: ./data/gui/multitouch_settings.stkgui #. I18N: In the multitouch settings screen msgid "Deadzone" -msgstr "" +msgstr "Zóna smrti" #. I18N: ./data/gui/multitouch_settings.stkgui #. I18N: In the multitouch settings screen msgid "Sensitivity" -msgstr "" +msgstr "Citlivost" #. I18N: ./data/gui/multitouch_settings.stkgui msgid "Restore defaults" @@ -1776,7 +1776,7 @@ msgstr "Kakaový chrám" #. I18N: ../stk-assets/tracks/cornfield_crossing/track.xml msgid "Cornfield Crossing" -msgstr "" +msgstr "Kros kukuřičným polem" #. I18N: ../stk-assets/tracks/fortmagma/track.xml msgid "Fort Magma" @@ -1827,7 +1827,7 @@ msgstr " Takoví spratci jako vy, mě nikdy nemůžou porazit - krále všech mo #. I18N: ../stk-assets/tracks/lasdunasarena/track.xml msgid "Las Dunas Arena" -msgstr "" +msgstr "Písečné duny" #. I18N: ../stk-assets/tracks/lighthouse/track.xml msgid "Around the lighthouse" @@ -1923,7 +1923,7 @@ msgstr "Hexley" #. I18N: ../stk-assets/karts/kiki/kart.xml msgid "Kiki" -msgstr "" +msgstr "Kiki" #. I18N: ../stk-assets/karts/konqi/kart.xml msgid "Konqi" @@ -2804,9 +2804,9 @@ msgstr "ŠPATNÝ SMĚR!" #, c-format msgid "%i spare tire kart has been spawned!" msgid_plural "%i spare tire karts have been spawned!" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" +msgstr[0] "Vznikla %i náhradní pneumatika pro motokáru!" +msgstr[1] "Vznikly %i náhradní pneumatiky pro motokáru!" +msgstr[2] "Vzniklo %i náhradních pneumatik pro motokáru!" #: src/modes/world.cpp:1202 msgid "You have been eliminated!" @@ -3028,7 +3028,7 @@ msgstr "Je třeba, aby hráči museli být nejméně 2 a nejvíce 12." #: src/states_screens/credits.cpp:180 msgid "translator-credits" -msgstr "Launchpad Contributions:\nAri Green https://launchpad.net/~ariyoyah\nDavid Kolibáč https://launchpad.net/~david-kolibac\nDawid Gan https://launchpad.net/~deveee\ndonny https://launchpad.net/~michal-donat\ndtfjgk https://launchpad.net/~dtfjgk-deactivatedaccount\nFrantišek Zatloukal https://launchpad.net/~zatloukal-frantisek\nH0ff1 https://launchpad.net/~stefhoff\nJakub Talich https://launchpad.net/~jakub.talich-deactivatedaccount\nJakub Vaněk, 2015-2016\nJakub Vaněk, 2015-2016\nJan Srb https://launchpad.net/~j-srb\nJirka Folta https://launchpad.net/~pholta-cz\nLukáš Machyán https://launchpad.net/~phobulos\nMichal Kundrát https://launchpad.net/~dreit\nMightyPork https://launchpad.net/~mighty-pork\nOndřej Holý https://launchpad.net/~ondrej-holy\nPavel Borecki, 2015\nPavel Borecki, 2015-2017\nPetr Wudi https://launchpad.net/~petr-wudi\nSTK-team https://launchpad.net/~stk\nTadeáš Pařík https://launchpad.net/~pariktadeas\nToMáš Marný, 2015\nToMáš Marný, 2015\nToMáš Marný, 2015-2016\nToMáš Marný, 2015-2016\nTomáš Velecký https://launchpad.net/~elektron112" +msgstr "Launchpad Contributions:\nAri Green https://launchpad.net/~ariyoyah\nDavid Kolibáč https://launchpad.net/~david-kolibac\nDawid Gan https://launchpad.net/~deveee\ndonny https://launchpad.net/~michal-donat\ndtfjgk https://launchpad.net/~dtfjgk-deactivatedaccount\nFrantišek Zatloukal https://launchpad.net/~zatloukal-frantisek\nH0ff1 https://launchpad.net/~stefhoff\nJakub Talich https://launchpad.net/~jakub.talich-deactivatedaccount\nJakub Vaněk, 2015-2016\nJan Srb https://launchpad.net/~j-srb\nJirka Folta https://launchpad.net/~pholta-cz\nLukáš Machyán https://launchpad.net/~phobulos\nMichal Kundrát https://launchpad.net/~dreit\nMightyPork https://launchpad.net/~mighty-pork\nOndřej Holý https://launchpad.net/~ondrej-holy\nPavel Borecki, 2015\nPetr Wudi https://launchpad.net/~petr-wudi\nSTK-team https://launchpad.net/~stk\nTadeáš Pařík https://launchpad.net/~pariktadeas\nToMáš Marný, 2015\nToMáš Marný, 2015-2016\nTomáš Velecký https://launchpad.net/~elektron112" #: src/states_screens/dialogs/addons_loading.cpp:97 msgid "Update" @@ -3145,7 +3145,7 @@ msgstr "Zakázáno" #: src/states_screens/dialogs/custom_video_settings.cpp:67 #: src/states_screens/options_screen_video.cpp:462 msgid "Important only" -msgstr "" +msgstr "Pouze důležité" #. I18N: animations setting (only karts with human players are animated) #: src/states_screens/dialogs/custom_video_settings.cpp:74 @@ -3216,7 +3216,7 @@ msgid "" "the box below, you are confirming that you understand these terms. If you " "have any questions or comments regarding these terms, one of the members of " "the development team would gladly assist you." -msgstr "" +msgstr "Přečtěte si prosím smluvní podmínky pro SuperTuxKart na adrese '%s'. S těmito podmínkami musíte souhlasit, abyste si mohli zaregistrovat účet pro STK. Zaškrtnutím políčka níže potvrzujete, že těmto podmínkám rozumíte. Máte-li jakékoli dotazy nebo připomínky k těmto podmínkám, nějaký z členů vývojového týmu vám rád pomůže." #: src/states_screens/dialogs/select_challenge.cpp:52 #, c-format diff --git a/data/po/da.po b/data/po/da.po index 91c3aa8ac..505462013 100644 --- a/data/po/da.po +++ b/data/po/da.po @@ -11,7 +11,7 @@ msgstr "" "Project-Id-Version: SuperTuxKart\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2017-10-04 20:58-0400\n" -"PO-Revision-Date: 2017-10-24 10:06+0000\n" +"PO-Revision-Date: 2017-11-13 00:19+0000\n" "Last-Translator: scootergrisen\n" "Language-Team: Danish (http://www.transifex.com/supertuxkart/supertuxkart/language/da/)\n" "MIME-Version: 1.0\n" @@ -42,7 +42,7 @@ msgstr "Ærkefjende" #. I18N: ./data/achievements.xml msgid "Hit the same kart at least 5 times in one race." -msgstr "Ram den samme kart mindst 5 gange i det samme løb." +msgstr "Ram den samme kart mindst 5 gange i samme løb." #. I18N: ./data/achievements.xml msgid "Marathoner" @@ -54,7 +54,7 @@ msgstr "Kør et løb med mindst 5 omgange." #. I18N: ./data/achievements.xml msgid "Skid-row" -msgstr "Drifterkongen" +msgstr "Drifter" #. I18N: ./data/achievements.xml msgid "Make 5 skidding in a single lap." @@ -66,7 +66,7 @@ msgstr "Guldfører" #. I18N: ./data/achievements.xml msgid "Win against at least 3 opponents in all single player modes." -msgstr "Vind over mindst 3 modstandere i alle enkelspillertilstande." +msgstr "Vind over mindst 3 modstandere i alle tilstande med en spiller." #. I18N: ./data/achievements.xml msgid "Powerup Love" @@ -74,7 +74,7 @@ msgstr "Vild med powerup" #. I18N: ./data/achievements.xml msgid "Use 10 or more powerups in a race." -msgstr "Brug 10 eller flere powerups i ét løb." +msgstr "Brug 10 eller flere powerups i samme løb." #. I18N: ./data/achievements.xml msgid "Unstoppable" @@ -108,7 +108,7 @@ msgstr "Myggejæger" msgid "" "Take your opponents for mosquitos! With the swatter, squash at least 5 of " "them in a race." -msgstr "Opfat dine modstandere som myg! Med fluesmækkeren skal du knuse mindst 5 i et løb." +msgstr "Lad dine modstandere være myg! Brug fluesmækkeren til at smaske mindst 5 af dem i et løb." #. I18N: ./data/grandprix/1_penguinplayground.grandprix msgid "Penguin Playground" @@ -271,7 +271,7 @@ msgstr "Behold denne opløsning" #. I18N: ./data/gui/credits.stkgui #. I18N: Title in credits screen msgid "Credits" -msgstr "Rulletekster" +msgstr "Anerkendelser" #. I18N: ./data/gui/custom_video_settings.stkgui msgid "Graphics Settings" @@ -300,7 +300,7 @@ msgstr "Bloom" #. I18N: ./data/gui/custom_video_settings.stkgui #. I18N: Video settings msgid "Light shaft (God rays)" -msgstr "Crepuscularstråler (tusmørkestråler)" +msgstr "Tusmørkestråler" #. I18N: ./data/gui/custom_video_settings.stkgui #. I18N: Video settings @@ -464,12 +464,12 @@ msgstr "Fortsæt" #. I18N: ./data/gui/track_info.stkgui #. I18N: In the track info screen msgid "Record the race for ghost replay" -msgstr "Optag løbet for spøgelsesgenafspilning" +msgstr "Optag løbet for spøgelsesgengivelse" #. I18N: ./data/gui/ghost_replay_info_dialog.stkgui #. I18N: Ghost replay info action msgid "Watch replay only" -msgstr "Vis kun genafspilning" +msgstr "Vis kun gengivelse" #. I18N: ./data/gui/ghost_replay_info_dialog.stkgui #. I18N: Ghost replay info screen action @@ -485,17 +485,17 @@ msgstr "Start løb" #. I18N: ./data/gui/ghost_replay_selection.stkgui #. I18N: In the ghost replay selection screen msgid "Ghost Replay Selection" -msgstr "Valg for spøgelsesgenafspilning" +msgstr "Valg for spøgelsesgengivelse" #. I18N: ./data/gui/ghost_replay_selection.stkgui #. I18N: In the ghost replay selection screen msgid "Only show replays matching the current difficulty" -msgstr "Vis kun genafspilninger med den aktuelle sværhedsgrad" +msgstr "Vis kun gengivelser med den nuværende sværhedsgrad" #. I18N: ./data/gui/ghost_replay_selection.stkgui #. I18N: In the ghost replay selection screen msgid "Record ghost replay" -msgstr "Optag spøgelsesgenafspilning" +msgstr "Optag spøgelsesgengivelse" #. I18N: ./data/gui/gp_info.stkgui #. I18N: In the grand prix info screen @@ -621,7 +621,7 @@ msgstr "Flere spillere" #. I18N: ./data/gui/help5.stkgui #. I18N: Tab in help menu msgid "Bananas" -msgstr "Bananas" +msgstr "Bananaer" #. I18N: ./data/gui/help1.stkgui msgid "Start the tutorial" @@ -645,7 +645,7 @@ msgid "" "Collecting nitro allows you to get speed boosts whenever you wish by " "pressing the appropriate key. You can see your current level of nitro in the" " bar at the right of the game screen." -msgstr "Indsamling af nitro gør, at du får hastighedsboosts, når du ønsker det, ved at trykke på den korrekte tast. Du kan se din aktuelle nitrobeholdning i bjælken til højre på spilskærmen." +msgstr "Indsamling af nitro gør, at du får hastighedsboosts, når du ønsker det, ved at trykke på den korrekte tast. Du kan se din nuværende nitrobeholdning i bjælken til højre på spilskærmen." #. I18N: ./data/gui/help1.stkgui #. I18N: In the help menu @@ -662,7 +662,7 @@ msgstr "Med drift-tasten kan du dreje skarpt i sving og få et boost." #. I18N: ./data/gui/help1.stkgui #. I18N: in the help screen msgid "* Current key bindings can be seen/changed in menu Options" -msgstr "* Aktuelle tastaturindstillinger kan ses/ændres i indstillingsmenuen" +msgstr "* Nuværende tastebindinger kan ses/ændres i indstillingsmenuen" #. I18N: ./data/gui/help2.stkgui #. I18N: In the help menu @@ -706,7 +706,7 @@ msgstr "Bytter - gaveæsker bliver, i en kort periode, lavet om til bananer og o msgid "" "Basket Ball - bounces after the leader, and might squash and slow down karts" " down on the way." -msgstr "Basketball - hopper efter den førende spiller og kan også smaske andre spiller undervejs." +msgstr "Basketball - hopper efter den førende spiller og smasker måske andre karts undervejs så de kører langsommere." #. I18N: ./data/gui/help2.stkgui msgid "Swatter - will squash karts close by, slowing them down." @@ -721,14 +721,14 @@ msgstr "SuperTuxKart har flere forskellige spiltilstande" msgid "" "Regular Race: All blows allowed, so catch weapons and make clever use of " "them!" -msgstr "Normalt løb: Alt er tilladt, så skaf nogle våben og brug dem klogt!" +msgstr "Normalt løb: Alt er tilladt, så grib nogle våben og brug dem klogt!" #. I18N: ./data/gui/help3.stkgui #. I18N: In the help menu msgid "" "Time Trial: Contains no powerups, so only your driving skills matter! This " "mode allows you to record the race for replaying." -msgstr "Tidskørsel: Har ingen powerups, så det er kun ens kørefærdigheder, der har betydning! Med denne tilstand kan du optage løbet for genafspilning." +msgstr "Tidskørsel: Ingen powerups, så det er kun dine kørefærdigheder, der har betydning! I denne tilstand kan du optage løbet for gengivelse." #. I18N: ./data/gui/help3.stkgui #. I18N: In the help menu @@ -780,7 +780,7 @@ msgid "" "keyboard(s), however each player will need a different set of keys, and keep" " in mind that most keyboards are not appropriate for multiplayer gameplay " "because they do not support large number of keypresses." -msgstr "Først skal du bruge flere input-enheder (flere gamepads eller joysticks er den bedste måde at spille med mange personer). Gå ind i skærmen input-konfigurationen og indstil gamepads. Man kan også spille på tastatur(er), men så skal hver spiller bruge unikke taster, og husk på, at de fleste tastaturer ikke er velegnede til spil med flere spillere, da de ikke understøtter mange samtidige tastetryk." +msgstr "Først skal du bruge flere inputenheder (flere gamepads eller joysticks er den bedste måde at spille med mange personer). Gå ind i skærmen input-konfigurationen og indstil gamepads. Man kan også spille på tastatur(er), men så skal hver spiller bruge unikke taster, og husk på, at de fleste tastaturer ikke er velegnede til spil med flere spillere, da de ikke understøtter mange samtidige tastetryk." #. I18N: ./data/gui/help4.stkgui #. I18N: In the help menu @@ -791,7 +791,7 @@ msgid "" " the game. Each player can use their input device to select their kart. The " "game continues when everyone selected their kart. Note that the mouse may " "not be used for this operation." -msgstr "Når inputenhederne er indstillet er du klar til at spille. Vælg \"flere spillere\"-ikonet i hovedmenuen. Når det bliver tid til at vælge kart, kan hver spiller trykke på \"skyd\"-tasten på deres joystick/controller/tastatur for at deltage. Hver spiller bruger sin inputenhed til at vælge bil. Spillet fortsætter, når alle har valgt deres kart. Bemærk at, musen ikke kan benyttes til dette." +msgstr "Når inputenhederne er konfigureret er du klar til at spille. Vælg \"flere spillere\"-ikonet i hovedmenuen. Når det bliver tid til at vælge kart, kan hver spiller trykke på \"skyd\"-tasten på deres joystick/controller/tastatur for at deltage. Hver spiller bruger deres inputenhed til at vælge kart. Spillet fortsætter, når alle har valgt deres kart. Bemærk at, musen ikke kan bruges." #. I18N: ./data/gui/help5.stkgui msgid "" @@ -1005,7 +1005,7 @@ msgstr "Servernavn" #. I18N: ./data/gui/online/lobby_settings.stkgui #. I18N: In the lobby settings screen msgid "Max. number of players" -msgstr "Maksimalt antal spillere" +msgstr "Maks. antal spillere" #. I18N: ./data/gui/online/create_server.stkgui #. I18N: In the server creation screen @@ -1242,7 +1242,7 @@ msgstr "Adgangskode:" #. I18N: ./data/gui/online/profile_settings.stkgui msgid "Change" -msgstr "Ændr" +msgstr "Skift" #. I18N: ./data/gui/online/recovery_info.stkgui #. I18N: In the recovery dialog @@ -1465,7 +1465,7 @@ msgstr "Tilbage til enhedslisten" #. I18N: ./data/gui/options_input.stkgui #. I18N: In the input configuration screen msgid "Press enter or double-click on a device to configure it" -msgstr "Tryk på eller dobbeltklik på en enhed for at indstille den" +msgstr "Tryk på eller dobbeltklik på en enhed for at konfigurere den" #. I18N: ./data/gui/options_input.stkgui #. I18N: In the input configuration screen @@ -1477,7 +1477,7 @@ msgstr "Tilføj en enhed" msgid "" "* Which config to use will be inferred from which 'Select' key is pressed to" " join the game." -msgstr "* Hvilken tastaturindstilling der vil blive benyttet, vil blive bestemt ud fra hvilken \"Vælg\"-tast, der bliver trykket, for at deltage i spillet." +msgstr "* Hvilken konfiguration der bruges, bestemmes ud fra hvilken \"Vælg\"-tast der bliver trykket på, for at deltage i spillet." #. I18N: ./data/gui/options_players.stkgui #. I18N: Section in the settings menu @@ -1565,12 +1565,12 @@ msgstr "Grafikeffektniveau" #. I18N: ./data/gui/options_video.stkgui #. I18N: In the video settings msgid "Custom settings..." -msgstr "Brugerdefinerede indstillinger..." +msgstr "Tilpasset indstillinger..." #. I18N: ./data/gui/options_video.stkgui #. I18N: In the video settings msgid "Vertical Sync (requires restart)" -msgstr "VSync (kræver genstart)" +msgstr "Lodret synkronisering (kræver genstart)" #. I18N: ./data/gui/options_video.stkgui #. I18N: In the video settings @@ -1585,7 +1585,7 @@ msgstr "Fuldskærm" #. I18N: ./data/gui/options_video.stkgui #. I18N: In the video settings msgid "Remember window location" -msgstr "Husk vinduesplacering" +msgstr "Husk vinduets placering" #. I18N: ./data/gui/options_video.stkgui #. I18N: In the video settings @@ -2033,13 +2033,13 @@ msgstr "Gæst %d" msgid "" "Your config file was malformed, so it was deleted and a new one will be " "created." -msgstr "Din indstillingsfil var gået i stykket, så den er blevet slettet og en ny oprettet." +msgstr "Din konfigurationsfil var udformet forkert, så den blev slettet og en ny oprettet." #: src/config/user_config.cpp:711 msgid "" "Your config file was too old, so it was deleted and a new one will be " "created." -msgstr "Din indstillingsfil var for gammel, så den er blevet slettet og en ny oprettet." +msgstr "Din konfigurationsfil var for gammel, så den blev slettet og en ny oprettet." #: src/graphics/irr_driver.cpp:535 msgid "Video recording started." @@ -2052,7 +2052,7 @@ msgstr "Video gemt i \"%s\"." #: src/graphics/irr_driver.cpp:545 msgid "Encoding progress:" -msgstr "Kodningsfremgang:" +msgstr "Kodningsforløb:" #: src/graphics/irr_driver.cpp:1682 #, c-format @@ -2566,11 +2566,11 @@ msgstr "Museakse %d %s" #. I18N: shown when config file is too old #: src/input/device_manager.cpp:543 msgid "Please re-configure your key bindings." -msgstr "Genindstil dine tastaturindstillinger." +msgstr "Konfigurer dine tastebindinger igen." #: src/input/device_manager.cpp:544 msgid "Your input config file is not compatible with this version of STK." -msgstr "Din input-indstillingsfil er ikke kompatibel med denne STK-version." +msgstr "Din input-konfigurationsfil er ikke kompatibel med denne STK-version." #. I18N: Name of the black button on xbox controller #: src/input/gamepad_config.cpp:167 @@ -2721,7 +2721,7 @@ msgstr "Straftid!!" #: src/karts/controller/local_player_controller.cpp:243 msgid "Don't accelerate before go" -msgstr "Accellerér ikke før startsignalet er givet" +msgstr "Accellerér ikke før løbet er sat i gang" #: src/karts/controller/spare_tire_ai.cpp:147 msgid "You can have at most 3 lives!" @@ -2895,12 +2895,12 @@ msgstr "Fodbold" #: src/replay/replay_recorder.cpp:183 msgid "Incomplete replay file will not be saved." -msgstr "Ufuldstændig genafspilningsfil vil ikke blive gemt." +msgstr "Ufuldstændig gengivelsesfil vil ikke blive gemt." #: src/replay/replay_recorder.cpp:219 #, c-format msgid "Replay saved in \"%s\"." -msgstr "Genafspilning gemt i \"%s\"." +msgstr "Gengivelse gemt i \"%s\"." #: src/states_screens/addons_screen.cpp:50 msgid "1 week" @@ -2997,7 +2997,7 @@ msgstr "Tilfældig arena" msgid "%d arena unavailable in single player." msgid_plural "%d arenas unavailable in single player." msgstr[0] "%d utilgængelig arena i en spiller." -msgstr[1] "%d utilgængelige arenaer i enspiller." +msgstr[1] "%d utilgængelige arenaer i en spiller." #: src/states_screens/create_server_screen.cpp:82 msgid "Create LAN Server" @@ -3022,7 +3022,7 @@ msgstr "Det maksimale antal spillere skal være imellem 2 og 12." #: src/states_screens/credits.cpp:180 msgid "translator-credits" -msgstr "Launchpad Contributions:\n\n1001sd https://launchpad.net/~siadyhr\nAputsiaĸ Niels Janussen https://launchpad.net/~aj\nAuria https://launchpad.net/~auria-mg\nJ https://launchpad.net/~rumbukken\nJoe Hansen, 2009,2015\nMarcus Møller https://launchpad.net/~marcusmoller\nscootergrisen\nscootergrisen, 2015-2017\nSTK-team https://launchpad.net/~stk\nSøren Dyhr, 2015-2016" +msgstr "Launchpad Contributions:\n 1001sd https://launchpad.net/~siadyhr\n Aputsiaĸ Niels Janussen https://launchpad.net/~aj\n Auria https://launchpad.net/~auria-mg\n J https://launchpad.net/~rumbukken\n Marcus Møller https://launchpad.net/~marcusmoller\n STK-team https://launchpad.net/~stk\n\nscootergrisen" #: src/states_screens/dialogs/addons_loading.cpp:97 msgid "Update" @@ -3077,7 +3077,7 @@ msgid "" "To add a new Gamepad/Joystick device, simply start SuperTuxKart with it connected and it will appear in the list.\n" "\n" "To add a keyboard config, you can use the button below, HOWEVER please note that most keyboards only support a limited amount of simultaneous keypresses and are thus inappropriate for multiplayer gameplay. (You can, however, connect multiple keyboards to the computer. Remember that everyone still needs different keybindings in this case.)" -msgstr "For at tilføje en ny controller/joystick, skal du bare starte SuperTuxKart, mens det er tilsluttet, og den vil vise sig i listen.\n\nFor at tilføje en tastaturindstilling, kan du bruge nedenstående knap, men vær opmærksom på, at mange tastaturer kun understøtter et begrænset antal samtidige tryk, og er derfor upassende til spil med flere spillere. (du kan dog forbinde flere tastaturer til samme computer. Husk blot at alle spillere stadig har brug for unikke tastaturindstillinger)." +msgstr "For at tilføje en ny controller/joystick, skal du bare starte SuperTuxKart, mens det er tilsluttet, og den vil vise sig i listen.\n\nFor at tilføje en tastaturkonfiguration, kan du bruge nedenstående knap, men vær opmærksom på, at mange tastaturer kun understøtter et begrænset antal samtidige tryk, og er derfor upassende til spil med flere spillere. (du kan dog forbinde flere tastaturer til samme computer. Husk blot at alle spillere stadig har brug for unikke tastebindinger)." #. I18N: In the 'add new input device' dialog #: src/states_screens/dialogs/add_device_dialog.cpp:90 @@ -3238,7 +3238,7 @@ msgstr "Nitroudfordring" #: src/states_screens/dialogs/select_challenge.cpp:151 #: src/states_screens/race_setup_screen.cpp:136 msgid "Ghost replay race" -msgstr "Spøgelsesgenafspilningsløb" +msgstr "Løb med spøgelsesgengivelse" #: src/states_screens/dialogs/server_info_dialog.cpp:75 msgid "Server successfully created. You can now join it." @@ -3279,7 +3279,7 @@ msgstr "Arbejder" #: src/states_screens/dialogs/vote_dialog.cpp:171 msgid "Fetching last vote" -msgstr "Får fat i sidste stemme" +msgstr "Henter sidste stemme" #: src/states_screens/dialogs/vote_dialog.cpp:190 msgid "You can adapt your previous rating by clicking the stars beneath." @@ -3479,7 +3479,7 @@ msgstr "Vent venligst mens udvidelserne indlæses" #: src/states_screens/online_profile_achievements.cpp:79 msgid "Progress" -msgstr "Fremgang" +msgstr "Forløb" #: src/states_screens/online_profile_achievements.cpp:131 #: src/states_screens/online_profile_achievements.cpp:171 @@ -3532,7 +3532,7 @@ msgstr "Handling" #: src/states_screens/options_screen_device.cpp:72 msgid "Key binding" -msgstr "Tastaturindstillling" +msgstr "Tastebinding" #. I18N: button to disable a gamepad configuration #: src/states_screens/options_screen_device.cpp:96 @@ -3674,7 +3674,7 @@ msgstr "I flere spillere-tilstand kan spillere vælge profiler med handikap (sv #. I18N: in the language choice, to select the same language as the OS #: src/states_screens/options_screen_ui.cpp:191 msgid "System Language" -msgstr "Systemsprog" +msgstr "Systemets sprog" #. I18N: custom video settings #: src/states_screens/options_screen_video.cpp:433 @@ -3757,7 +3757,7 @@ msgstr "Glød (omrids): %s" #: src/states_screens/options_screen_video.cpp:521 #, c-format msgid "Light shaft (God rays): %s" -msgstr "Crepuscularstråler (tusmørkestråler): %s" +msgstr "Tusmørkestråler: %s" #. I18N: in graphical options #: src/states_screens/options_screen_video.cpp:525 @@ -3903,7 +3903,7 @@ msgstr "Bane %i/%i" #: src/states_screens/race_result_gui.cpp:1304 msgid "Grand Prix progress:" -msgstr "Grandprix-fremgang:" +msgstr "Grandprix-forløb:" #: src/states_screens/race_result_gui.cpp:1346 msgid "Highscores" @@ -3925,7 +3925,7 @@ msgstr "Alt er tilladt, så grib nogle våben og brug dem klogt!" #: src/states_screens/race_setup_screen.cpp:94 msgid "Contains no powerups, so only your driving skills matter!" -msgstr "Har ingen powerups, så det er kun ens kørefærdigheder der har betydning!" +msgstr "Ingen powerups, så det er kun dine kørefærdigheder, der har betydning!" #. I18N: short definition for follow-the-leader game mode #: src/states_screens/race_setup_screen.cpp:107 @@ -3988,7 +3988,7 @@ msgstr "Internetadgang er slået fra. Du kan slå det til i indstillingerne" #: src/states_screens/server_selection.cpp:79 #: src/states_screens/server_selection.cpp:247 msgid "Fetching servers" -msgstr "Får fat i servere" +msgstr "Henter servere" #. I18N: track group name #: src/states_screens/tracks_and_gp_screen.cpp:144 @@ -4042,12 +4042,12 @@ msgstr "Du skal indtaste en adgangskode." #: src/states_screens/user_screen.cpp:505 #, c-format msgid "Logging out '%s'" -msgstr "Logger \"%s\" ud" +msgstr "Logger ud som \"%s\"" #: src/states_screens/user_screen.cpp:506 #, c-format msgid "Logging in '%s'" -msgstr "Logger \"%s\" ind" +msgstr "Logger ind som \"%s\"" #. I18N: In the player info dialog (when deleting) #: src/states_screens/user_screen.cpp:595 diff --git a/data/po/de.po b/data/po/de.po index ba818f39b..b678b714b 100644 --- a/data/po/de.po +++ b/data/po/de.po @@ -18,7 +18,7 @@ msgstr "" "Project-Id-Version: SuperTuxKart\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2017-10-04 20:58-0400\n" -"PO-Revision-Date: 2017-10-24 10:06+0000\n" +"PO-Revision-Date: 2017-11-13 00:19+0000\n" "Last-Translator: Wuzzy \n" "Language-Team: German (http://www.transifex.com/supertuxkart/supertuxkart/language/de/)\n" "MIME-Version: 1.0\n" @@ -3029,7 +3029,7 @@ msgstr "Die Höchstanzahl der Spieler muss zwischen 2 und 12 liegen." #: src/states_screens/credits.cpp:180 msgid "translator-credits" -msgstr "Launchpad Contributions:\nAuria https://launchpad.net/~auria-mg\nBendetto https://launchpad.net/~biengo\nbonifarz, 2015\ncmdrhenner https://launchpad.net/~cmdrhenner\nDaBASCHT https://launchpad.net/~dabascht\nDavid Roth https://launchpad.net/~davidroth9\nDawid Gan https://launchpad.net/~deveee\nDennis https://launchpad.net/~theradialactive\nDHermit https://launchpad.net/~dhermit\ne https://launchpad.net/~e-blosz\nenz https://launchpad.net/~markus-enzenberger\nEttore Atalan, 2015-2017\nEvolution https://launchpad.net/~marcken-ritter\nFelix https://launchpad.net/~felixk\nFlakebi, 2015\nGerjet Kleine-Weischede https://launchpad.net/~gerjet-deactivatedaccount-deactivatedaccount\nGregor Santner https://launchpad.net/~gregi94\nH0ff1 https://launchpad.net/~stefhoff\nhiker https://launchpad.net/~hiker-luding\nhiker, 2015\nJohn Doe https://launchpad.net/~kulok1493-deactivatedaccount\nkonstin https://launchpad.net/~konstin\nkonstin, 2015\nMatthias Lange https://launchpad.net/~lange-matthias\nMaximilian Wagenbach, 2016\npert7 https://launchpad.net/~pert7-deactivatedaccount\nRobert Kurz https://launchpad.net/~e-robert-kurz-hd\nSalesome https://launchpad.net/~xaver-bastiani-deactivatedaccount\nSimeon https://launchpad.net/~simeon5\nSTK-team https://launchpad.net/~stk\nTobias Bannert https://launchpad.net/~toba\nTobias Markus, 2015-2016\nWasilis Mandratzis-Walz, 2015\nwesen, 2016\nWolfs https://launchpad.net/~pizzaservice\nWuzzy https://launchpad.net/~wuzzy\nWuzzy, 2015-2017" +msgstr "Launchpad Contributions:\n Auria https://launchpad.net/~auria-mg\n Bendetto https://launchpad.net/~biengo\n DHermit https://launchpad.net/~dhermit\n DaBASCHT https://launchpad.net/~dabascht\n David Roth https://launchpad.net/~davidroth9\n Dawid Gan https://launchpad.net/~deveee\n Dennis https://launchpad.net/~theradialactive\n Evolution https://launchpad.net/~marcken-ritter\n Felix https://launchpad.net/~felixk\n Gerjet Kleine-Weischede https://launchpad.net/~gerjet-deactivatedaccount-deactivatedaccount\n Gregor Santner https://launchpad.net/~gregi94\n H0ff1 https://launchpad.net/~stefhoff\n John Doe https://launchpad.net/~kulok1493-deactivatedaccount\n Matthias Lange https://launchpad.net/~lange-matthias\n Robert Kurz https://launchpad.net/~e-robert-kurz-hd\n STK-team https://launchpad.net/~stk\n Salesome https://launchpad.net/~xaver-bastiani-deactivatedaccount\n Simeon https://launchpad.net/~simeon5\n Tobias Bannert https://launchpad.net/~toba\n Wolfs https://launchpad.net/~pizzaservice\n Wuzzy https://launchpad.net/~wuzzy\n cmdrhenner https://launchpad.net/~cmdrhenner\n e https://launchpad.net/~e-blosz\n enz https://launchpad.net/~markus-enzenberger\n hiker https://launchpad.net/~hiker-luding\n konstin https://launchpad.net/~konstin\n pert7 https://launchpad.net/~pert7-deactivatedaccount" #: src/states_screens/dialogs/addons_loading.cpp:97 msgid "Update" diff --git a/data/po/el.po b/data/po/el.po index ccace4106..93588ba9a 100644 --- a/data/po/el.po +++ b/data/po/el.po @@ -13,7 +13,7 @@ msgstr "" "Project-Id-Version: SuperTuxKart\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2017-10-04 20:58-0400\n" -"PO-Revision-Date: 2017-10-24 10:06+0000\n" +"PO-Revision-Date: 2017-11-13 00:19+0000\n" "Last-Translator: Auria \n" "Language-Team: Greek (http://www.transifex.com/supertuxkart/supertuxkart/language/el/)\n" "MIME-Version: 1.0\n" @@ -3024,7 +3024,7 @@ msgstr "Ο μεγιστος αριθμός παικτών πρέπει να εί #: src/states_screens/credits.cpp:180 msgid "translator-credits" -msgstr "Launchpad Contributions:\nDawid Gan https://launchpad.net/~deveee\nGreekLUG, 2016\nGrigoris Pavlakis, 2016\nKonstantinos Thermos https://launchpad.net/~subdee\nNefeli Stylla https://launchpad.net/~nefeli-st\nSTK-team https://launchpad.net/~stk\ntzem https://launchpad.net/~athmakrigiannis\nVangelis Skarmoutsos https://launchpad.net/~skarmoutsosv\nVangelis Skarmoutsos, 2015-2017\nWasilis Mandratzis-Walz, 2015\nYannis Kaskamanidis https://launchpad.net/~ttnfy17" +msgstr "Launchpad Contributions:\n Dawid Gan https://launchpad.net/~deveee\n Konstantinos Thermos https://launchpad.net/~subdee\n Nefeli Stylla https://launchpad.net/~nefeli-st\n STK-team https://launchpad.net/~stk\n Vangelis Skarmoutsos https://launchpad.net/~skarmoutsosv\n Yannis Kaskamanidis https://launchpad.net/~ttnfy17\n tzem https://launchpad.net/~athmakrigiannis" #: src/states_screens/dialogs/addons_loading.cpp:97 msgid "Update" diff --git a/data/po/en.po b/data/po/en.po new file mode 100644 index 000000000..0ffa48ca9 --- /dev/null +++ b/data/po/en.po @@ -0,0 +1,4148 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: SuperTuxKart\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-10-04 20:58-0400\n" +"PO-Revision-Date: 2017-11-13 00:19+0000\n" +"Last-Translator: Auria \n" +"Language-Team: English (http://www.transifex.com/supertuxkart/supertuxkart/language/en/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: en\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. I18N: ./data/achievements.xml +msgid "Christoffel Columbus" +msgstr "Christoffel Columbus" + +#. I18N: ./data/achievements.xml +msgid "Play every official track at least once." +msgstr "Play every official track at least once." + +#. I18N: ./data/achievements.xml +msgid "Strike!" +msgstr "Strike!" + +#. I18N: ./data/achievements.xml +msgid "Hit 10 karts with a bowling-ball." +msgstr "Hit 10 karts with a bowling-ball." + +#. I18N: ./data/achievements.xml +msgid "Arch Enemy" +msgstr "Arch Enemy" + +#. I18N: ./data/achievements.xml +msgid "Hit the same kart at least 5 times in one race." +msgstr "Hit the same kart at least 5 times in one race." + +#. I18N: ./data/achievements.xml +msgid "Marathoner" +msgstr "Marathoner" + +#. I18N: ./data/achievements.xml +msgid "Make a race with 5 laps or more." +msgstr "Make a race with 5 laps or more." + +#. I18N: ./data/achievements.xml +msgid "Skid-row" +msgstr "Skid-row" + +#. I18N: ./data/achievements.xml +msgid "Make 5 skidding in a single lap." +msgstr "Make 5 skidding in a single lap." + +#. I18N: ./data/achievements.xml +msgid "Gold driver" +msgstr "Gold driver" + +#. I18N: ./data/achievements.xml +msgid "Win against at least 3 opponents in all single player modes." +msgstr "Win against at least 3 opponents in all single player modes." + +#. I18N: ./data/achievements.xml +msgid "Powerup Love" +msgstr "Powerup Love" + +#. I18N: ./data/achievements.xml +msgid "Use 10 or more powerups in a race." +msgstr "Use 10 or more powerups in a race." + +#. I18N: ./data/achievements.xml +msgid "Unstoppable" +msgstr "Unstoppable" + +#. I18N: ./data/achievements.xml +msgid "Win 5 single races in a row." +msgstr "Win 5 single races in a row." + +#. I18N: ./data/achievements.xml +msgid "Banana Lover" +msgstr "Banana Lover" + +#. I18N: ./data/achievements.xml +msgid "Collect at least 5 bananas in one race." +msgstr "Collect at least 5 bananas in one race." + +#. I18N: ./data/achievements.xml +msgid "It's secret" +msgstr "It's secret" + +#. I18N: ./data/achievements.xml +msgid "Really ... a secret." +msgstr "Really ... a secret." + +#. I18N: ./data/achievements.xml +msgid "Mosquito Hunter" +msgstr "Mosquito Hunter" + +#. I18N: ./data/achievements.xml +msgid "" +"Take your opponents for mosquitos! With the swatter, squash at least 5 of " +"them in a race." +msgstr "Take your opponents for mosquitos! With the swatter, squash at least 5 of them in a race." + +#. I18N: ./data/grandprix/1_penguinplayground.grandprix +msgid "Penguin Playground" +msgstr "Penguin Playground" + +#. I18N: ./data/grandprix/2_offthebeatentrack.grandprix +msgid "Off the beaten track" +msgstr "Off the beaten track" + +#. I18N: ./data/grandprix/3_tothemoonandback.grandprix +msgid "To the moon and back" +msgstr "To the moon and back" + +#. I18N: ./data/grandprix/4_atworldsend.grandprix +msgid "At World's End" +msgstr "At World's End" + +#. I18N: ./data/gui/addons_loading.stkgui +#. I18N: Add-on screen action +msgid "Install" +msgstr "Install" + +#. I18N: ./data/gui/addons_loading.stkgui +#. I18N: Add-on screen action +msgid "Uninstall" +msgstr "Uninstall" + +#. I18N: ./data/gui/addons_loading.stkgui +#. I18N: Add-on screen action +#. I18N: ./data/gui/ghost_replay_info_dialog.stkgui +#. I18N: Ghost replay info action +#. I18N: name of buttons on gamepads +#: src/input/gamepad_config.cpp:216 +#: src/states_screens/dialogs/addons_loading.cpp:285 +msgid "Back" +msgstr "Back" + +#. I18N: ./data/gui/addons_screen.stkgui +msgid "SuperTuxKart Addons" +msgstr "SuperTuxKart Addons" + +#. I18N: ./data/gui/addons_screen.stkgui +#. I18N: In addons screen, in the filtering bar, to enable a filter that will +#. show only recently updated items +msgid "Updated" +msgstr "Updated" + +#. I18N: ./data/gui/addons_screen.stkgui +#. I18N: In addons screen, in the filtering bar, to enable a filter that will +#. show only items with good rating +msgid "Rating >=" +msgstr "Rating >=" + +#. I18N: ./data/gui/addons_screen.stkgui +#. I18N: In the addons screen +msgid "Karts" +msgstr "Karts" + +#. I18N: ./data/gui/addons_screen.stkgui +#. I18N: In the addons screen +#. I18N: ./data/gui/gp_info.stkgui +#. I18N: In the grand prix info screen +msgid "Tracks" +msgstr "Tracks" + +#. I18N: ./data/gui/addons_screen.stkgui +#. I18N: In the addons screen +#. I18N: ./data/gui/arenas.stkgui +#. I18N: Section in arena tracks selection screen +msgid "Arenas" +msgstr "Arenas" + +#. I18N: ./data/gui/arenas.stkgui +#. I18N: track group +#. I18N: ./data/gui/easter_egg.stkgui +#. I18N: track group +#: src/states_screens/grand_prix_editor_screen.cpp:337 +msgid "Standard" +msgstr "Standard" + +#. I18N: ./data/gui/arenas.stkgui +#. I18N: track group +#. I18N: ./data/gui/easter_egg.stkgui +#. I18N: track group +#. I18N: arena group name +#. I18N: track group name +#. I18N: kart group name +#. I18N: track group name +#: src/states_screens/arenas_screen.cpp:83 +#: src/states_screens/easter_egg_screen.cpp:145 +#: src/states_screens/grand_prix_editor_screen.cpp:339 +#: src/states_screens/kart_selection.cpp:287 +#: src/states_screens/tracks_and_gp_screen.cpp:148 +msgid "Add-Ons" +msgstr "Add-Ons" + +#. I18N: ./data/gui/arenas.stkgui +#. I18N: track group +#. I18N: ./data/gui/easter_egg.stkgui +#. I18N: track group +#. I18N: Time filters for add-ons +#. I18N: name of the tab that will show arenas from all groups +#. I18N: name of the tab that will show tracks from all groups +#. I18N: if all kart animations are enabled +#. I18N: name of the tab that will show tracks from all groups +#: src/states_screens/addons_screen.cpp:49 +#: src/states_screens/arenas_screen.cpp:75 +#: src/states_screens/easter_egg_screen.cpp:137 +#: src/states_screens/edit_track_screen.cpp:147 +#: src/states_screens/gp_info_screen.cpp:76 +#: src/states_screens/grand_prix_editor_screen.cpp:336 +#: src/states_screens/kart_selection.cpp:279 +#: src/states_screens/options_screen_video.cpp:456 +#: src/states_screens/tracks_and_gp_screen.cpp:138 +#: src/states_screens/tracks_screen.cpp:141 +msgid "All" +msgstr "All" + +#. I18N: ./data/gui/confirm_dialog.stkgui +#. I18N: In a 'are you sure?' dialog +#: src/states_screens/edit_gp_screen.cpp:257 +#: src/states_screens/ghost_replay_selection.cpp:117 +msgid "Yes" +msgstr "Yes" + +#. I18N: ./data/gui/confirm_dialog.stkgui +#. I18N: In a 'are you sure?' dialog +#. I18N: ./data/gui/confirm_resolution_dialog.stkgui +#. I18N: In the 'confirm resolution' dialog, that's shown when switching +#. resoluton +#. I18N: ./data/gui/edit_track.stkgui +#. I18N: ./data/gui/general_text_field_dialog.stkgui +#. I18N: In the general textfield dialog +#. I18N: ./data/gui/online/create_server.stkgui +#. I18N: In the server creation screen +#. I18N: ./data/gui/online/recovery_input.stkgui +#. I18N: In the recovery dialog +#. I18N: ./data/gui/online/register.stkgui +#. I18N: In the registration dialog +#. I18N: ./data/gui/online/registration_terms.stkgui +#. I18N: In the registration dialog +#. I18N: ./data/gui/online/server_info_dialog.stkgui +#. I18N: In the server info dialog +#. I18N: ./data/gui/user_screen.stkgui +#. I18N: In the user screen +#. I18N: ./data/gui/user_screen_tab.stkgui +#. I18N: In the user screen +#: src/states_screens/dialogs/addons_loading.cpp:228 +#: src/states_screens/dialogs/add_device_dialog.cpp:128 +#: src/states_screens/user_screen.cpp:112 +msgid "Cancel" +msgstr "Cancel" + +#. I18N: ./data/gui/confirm_resolution_dialog.stkgui +#. I18N: In the 'confirm resolution' dialog, that's shown when switching +#. resoluton +msgid "Keep this resolution" +msgstr "Keep this resolution" + +#. I18N: ./data/gui/credits.stkgui +#. I18N: Title in credits screen +msgid "Credits" +msgstr "Credits" + +#. I18N: ./data/gui/custom_video_settings.stkgui +msgid "Graphics Settings" +msgstr "Graphics Settings" + +#. I18N: ./data/gui/custom_video_settings.stkgui +#. I18N: Video settings +msgid "Advanced pipeline (lights, etc.)" +msgstr "Advanced pipeline (lights, etc.)" + +#. I18N: ./data/gui/custom_video_settings.stkgui +#. I18N: Video settings +msgid "Shadows" +msgstr "Shadows" + +#. I18N: ./data/gui/custom_video_settings.stkgui +#. I18N: Video settings +msgid "Image-based lighting" +msgstr "Image-based lighting" + +#. I18N: ./data/gui/custom_video_settings.stkgui +#. I18N: Video settings +msgid "Bloom" +msgstr "Bloom" + +#. I18N: ./data/gui/custom_video_settings.stkgui +#. I18N: Video settings +msgid "Light shaft (God rays)" +msgstr "Light shaft (God rays)" + +#. I18N: ./data/gui/custom_video_settings.stkgui +#. I18N: Video settings +msgid "Ambient Occlusion" +msgstr "Ambient Occlusion" + +#. I18N: ./data/gui/custom_video_settings.stkgui +#. I18N: Video settings +msgid "Global illumination" +msgstr "Global illumination" + +#. I18N: ./data/gui/custom_video_settings.stkgui +#. I18N: Video settings +msgid "Glow (outlines)" +msgstr "Glow (outlines)" + +#. I18N: ./data/gui/custom_video_settings.stkgui +#. I18N: Video settings +msgid "Anti-aliasing" +msgstr "Anti-aliasing" + +#. I18N: ./data/gui/custom_video_settings.stkgui +#. I18N: Video settings +msgid "Motion blur" +msgstr "Motion blur" + +#. I18N: ./data/gui/custom_video_settings.stkgui +#. I18N: Video settings +msgid "Depth of field" +msgstr "Depth of field" + +#. I18N: ./data/gui/custom_video_settings.stkgui +#. I18N: Video settings +msgid "Weather Effects" +msgstr "Weather Effects" + +#. I18N: ./data/gui/custom_video_settings.stkgui +#. I18N: Video settings +msgid "Texture compression" +msgstr "Texture compression" + +#. I18N: ./data/gui/custom_video_settings.stkgui +#. I18N: Video settings +msgid "Animated Scenery" +msgstr "Animated Scenery" + +#. I18N: ./data/gui/custom_video_settings.stkgui +#. I18N: Video settings +msgid "Animated Characters" +msgstr "Animated Characters" + +#. I18N: ./data/gui/custom_video_settings.stkgui +#. I18N: Video settings +msgid "Rendered image quality" +msgstr "Rendered image quality" + +#. I18N: ./data/gui/custom_video_settings.stkgui +#. I18N: Video settings +msgid "Geometry detail" +msgstr "Geometry detail" + +#. I18N: ./data/gui/custom_video_settings.stkgui +#. I18N: Video settings +msgid "* Restart STK to apply new settings" +msgstr "* Restart STK to apply new settings" + +#. I18N: ./data/gui/custom_video_settings.stkgui +#. I18N: ./data/gui/multitouch_settings.stkgui +msgid "Apply" +msgstr "Apply" + +#. I18N: ./data/gui/easter_egg.stkgui +#. I18N: Section in easter egg tracks selection screen +#. I18N: ./data/gui/tracks.stkgui +#. I18N: In the track selection screen +#. I18N: ./data/gui/tracks_and_gp.stkgui +#. I18N: In the track and grand prix selection screen +msgid "All Tracks" +msgstr "All Tracks" + +#. I18N: ./data/gui/edit_gp.stkgui +#. I18N: Title in edit grand prix screen +msgid "Edit Grand Prix" +msgstr "Edit Grand Prix" + +#. I18N: ./data/gui/edit_gp.stkgui +#. I18N: Menu item +msgid "Move up" +msgstr "Move up" + +#. I18N: ./data/gui/edit_gp.stkgui +#. I18N: Menu item +msgid "Move down" +msgstr "Move down" + +#. I18N: ./data/gui/edit_gp.stkgui +#. I18N: Menu item +msgid "Add" +msgstr "Add" + +#. I18N: ./data/gui/edit_gp.stkgui +#. I18N: Menu item +#. I18N: ./data/gui/grand_prix_editor.stkgui +#. I18N: Menu item +msgid "Edit" +msgstr "Edit" + +#. I18N: ./data/gui/edit_gp.stkgui +#. I18N: Menu item +#. I18N: ./data/gui/ghost_replay_info_dialog.stkgui +#. I18N: Ghost replay info action +#. I18N: ./data/gui/grand_prix_editor.stkgui +#. I18N: Menu item +#. I18N: ./data/gui/online/user_info_dialog.stkgui +#. I18N: User info dialog +msgid "Remove" +msgstr "Remove" + +#. I18N: ./data/gui/edit_gp.stkgui +#. I18N: Menu item +msgid "Save" +msgstr "Save" + +#. I18N: ./data/gui/edit_track.stkgui +#. I18N: In the edit track screen +msgid "Number of laps:" +msgstr "Number of laps:" + +#. I18N: ./data/gui/edit_track.stkgui +#. I18N: In the edit track screen +msgid "Reverse:" +msgstr "Reverse:" + +#. I18N: ./data/gui/edit_track.stkgui +#. I18N: ./data/gui/general_text_field_dialog.stkgui +#. I18N: In the general textfield dialog +#. I18N: ./data/gui/online/register.stkgui +#. I18N: In the registration dialog +#. I18N: ./data/gui/user_screen.stkgui +#. I18N: In the user screen +#. I18N: ./data/gui/user_screen_tab.stkgui +#. I18N: In the user screen +#: src/states_screens/dialogs/message_dialog.cpp:123 +#: src/states_screens/dialogs/message_dialog.cpp:135 +msgid "OK" +msgstr "OK" + +#. I18N: ./data/gui/feature_unlocked.stkgui +#. I18N: ./data/gui/grand_prix_lose.stkgui +#. I18N: ./data/gui/grand_prix_win.stkgui +#. I18N: ./data/gui/soccer_setup.stkgui +#. I18N: In soccer setup screen +#. I18N: ./data/gui/tutorial_message_dialog.stkgui +#. I18N: Button in tutorial +#: src/states_screens/race_result_gui.cpp:205 +msgid "Continue" +msgstr "Continue" + +#. I18N: ./data/gui/ghost_replay_info_dialog.stkgui +#. I18N: Ghost replay info action +#. I18N: ./data/gui/track_info.stkgui +#. I18N: In the track info screen +msgid "Record the race for ghost replay" +msgstr "Record the race for ghost replay" + +#. I18N: ./data/gui/ghost_replay_info_dialog.stkgui +#. I18N: Ghost replay info action +msgid "Watch replay only" +msgstr "Watch replay only" + +#. I18N: ./data/gui/ghost_replay_info_dialog.stkgui +#. I18N: Ghost replay info screen action +#. I18N: ./data/gui/gp_info.stkgui +#. I18N: In the grand prix info screen +#. I18N: ./data/gui/online/networking_lobby.stkgui +#. I18N: In the network lobby +#. I18N: ./data/gui/track_info.stkgui +#. I18N: In the track info screen +msgid "Start Race" +msgstr "Start Race" + +#. I18N: ./data/gui/ghost_replay_selection.stkgui +#. I18N: In the ghost replay selection screen +msgid "Ghost Replay Selection" +msgstr "Ghost Replay Selection" + +#. I18N: ./data/gui/ghost_replay_selection.stkgui +#. I18N: In the ghost replay selection screen +msgid "Only show replays matching the current difficulty" +msgstr "Only show replays matching the current difficulty" + +#. I18N: ./data/gui/ghost_replay_selection.stkgui +#. I18N: In the ghost replay selection screen +msgid "Record ghost replay" +msgstr "Record ghost replay" + +#. I18N: ./data/gui/gp_info.stkgui +#. I18N: In the grand prix info screen +msgid "AI karts" +msgstr "AI karts" + +#. I18N: ./data/gui/gp_info.stkgui +#. I18N: In the grand prix info screen +#: src/states_screens/ghost_replay_selection.cpp:79 +msgid "Reverse" +msgstr "Reverse" + +#. I18N: ./data/gui/gp_info.stkgui +#. I18N: In the grand prix info screen +msgid "Track group" +msgstr "Track group" + +#. I18N: ./data/gui/gp_info.stkgui +#. I18N: In the grand prix info screen +#: src/states_screens/gp_info_screen.cpp:147 +msgid "Continue saved GP" +msgstr "Continue saved GP" + +#. I18N: ./data/gui/grand_prix_editor.stkgui +#. I18N: Title in grand prix editor screen +msgid "Grand Prix editor" +msgstr "Grand Prix editor" + +#. I18N: ./data/gui/grand_prix_editor.stkgui +#. I18N: Menu item +msgid "New" +msgstr "New" + +#. I18N: ./data/gui/grand_prix_editor.stkgui +#. I18N: Menu item +msgid "Copy" +msgstr "Copy" + +#. I18N: ./data/gui/grand_prix_editor.stkgui +#. I18N: Menu item +#. I18N: ./data/gui/user_screen.stkgui +#. I18N: In the user screen +#. I18N: ./data/gui/user_screen_tab.stkgui +#. I18N: In the user screen +msgid "Rename" +msgstr "Rename" + +#. I18N: ./data/gui/grand_prix_lose.stkgui +#. I18N: ./data/gui/grand_prix_win.stkgui +msgid "Save Grand Prix" +msgstr "Save Grand Prix" + +#. I18N: ./data/gui/help1.stkgui +#. I18N: ./data/gui/help2.stkgui +#. I18N: ./data/gui/help3.stkgui +#. I18N: ./data/gui/help4.stkgui +#. I18N: ./data/gui/help5.stkgui +msgid "SuperTuxKart Help" +msgstr "SuperTuxKart Help" + +#. I18N: ./data/gui/help1.stkgui +#. I18N: Tab in help menu +#. I18N: ./data/gui/help2.stkgui +#. I18N: Tab in help menu +#. I18N: ./data/gui/help3.stkgui +#. I18N: Tab in help menu +#. I18N: ./data/gui/help4.stkgui +#. I18N: Tab in help menu +#. I18N: ./data/gui/help5.stkgui +#. I18N: Tab in help menu +#. I18N: ./data/gui/multitouch_settings.stkgui +#. I18N: In the multitouch settings screen +msgid "General" +msgstr "General" + +#. I18N: ./data/gui/help1.stkgui +#. I18N: Tab in help menu +#. I18N: ./data/gui/help2.stkgui +#. I18N: Tab in help menu +#. I18N: ./data/gui/help3.stkgui +#. I18N: Tab in help menu +#. I18N: ./data/gui/help4.stkgui +#. I18N: Tab in help menu +#. I18N: ./data/gui/help5.stkgui +#. I18N: Tab in help menu +msgid "Weapons" +msgstr "Weapons" + +#. I18N: ./data/gui/help1.stkgui +#. I18N: Tab in help menu +#. I18N: ./data/gui/help2.stkgui +#. I18N: Tab in help menu +#. I18N: ./data/gui/help3.stkgui +#. I18N: Tab in help menu +#. I18N: ./data/gui/help4.stkgui +#. I18N: Tab in help menu +#. I18N: ./data/gui/help5.stkgui +#. I18N: Tab in help menu +msgid "Game Modes" +msgstr "Game Modes" + +#. I18N: ./data/gui/help1.stkgui +#. I18N: Tab in help menu +#. I18N: ./data/gui/help2.stkgui +#. I18N: Tab in help menu +#. I18N: ./data/gui/help3.stkgui +#. I18N: Tab in help menu +#. I18N: ./data/gui/help4.stkgui +#. I18N: Tab in help menu +#. I18N: ./data/gui/help5.stkgui +#. I18N: Tab in help menu +msgid "Multi-player" +msgstr "Multi-player" + +#. I18N: ./data/gui/help1.stkgui +#. I18N: Tab in help menu +#. I18N: ./data/gui/help2.stkgui +#. I18N: Tab in help menu +#. I18N: ./data/gui/help3.stkgui +#. I18N: Tab in help menu +#. I18N: ./data/gui/help4.stkgui +#. I18N: Tab in help menu +#. I18N: ./data/gui/help5.stkgui +#. I18N: Tab in help menu +msgid "Bananas" +msgstr "Bananas" + +#. I18N: ./data/gui/help1.stkgui +msgid "Start the tutorial" +msgstr "Start the tutorial" + +#. I18N: ./data/gui/help1.stkgui +#. I18N: In the help menu +msgid "Collect blue boxes. They will give you weapons or other powerups." +msgstr "Collect blue boxes. They will give you weapons or other powerups." + +#. I18N: ./data/gui/help1.stkgui +#. I18N: In the help menu +#: ../stk-assets/tracks/tutorial/scripting.as:32 +#: ../stk-assets/tracks/tutorial/triggers.as:16 +msgid "Avoid bananas!" +msgstr "Avoid bananas!" + +#. I18N: ./data/gui/help1.stkgui +#. I18N: In the help menu +msgid "" +"Collecting nitro allows you to get speed boosts whenever you wish by " +"pressing the appropriate key. You can see your current level of nitro in the" +" bar at the right of the game screen." +msgstr "Collecting nitro allows you to get speed boosts whenever you wish by pressing the appropriate key. You can see your current level of nitro in the bar at the right of the game screen." + +#. I18N: ./data/gui/help1.stkgui +#. I18N: In the help menu +msgid "" +"If you see a button with a lock like this one, you need to complete a " +"challenge to unlock it." +msgstr "If you see a button with a lock like this one, you need to complete a challenge to unlock it." + +#. I18N: ./data/gui/help1.stkgui +#. I18N: in the help menu +msgid "The 'skidding' key allows you to skid in sharp turns and get a boost." +msgstr "The 'skidding' key allows you to skid in sharp turns and get a boost." + +#. I18N: ./data/gui/help1.stkgui +#. I18N: in the help screen +msgid "* Current key bindings can be seen/changed in menu Options" +msgstr "* Current key bindings can be seen/changed in menu Options" + +#. I18N: ./data/gui/help2.stkgui +#. I18N: In the help menu +msgid "To help you win, there are some powerups you can collect:" +msgstr "To help you win, there are some powerups you can collect:" + +#. I18N: ./data/gui/help2.stkgui +msgid "" +"BubbleGum - protect yourself with a shield, or use while looking back to " +"leave a sticky pink puddle behind you." +msgstr "BubbleGum - protect yourself with a shield, or use while looking back to leave a sticky pink puddle behind you." + +#. I18N: ./data/gui/help2.stkgui +msgid "" +"Cake - thrown at the closest rival, best on short ranges and long straights." +msgstr "Cake - thrown at the closest rival, best on short ranges and long straights." + +#. I18N: ./data/gui/help2.stkgui +msgid "" +"Plunger - throw straight to pull an opponent back, or throw while looking " +"back to make one lose sight." +msgstr "Plunger - throw straight to pull an opponent back, or throw while looking back to make one lose sight." + +#. I18N: ./data/gui/help2.stkgui +msgid "" +"Bowling Ball - bounces off walls. If you are looking back, it will be thrown" +" backwards." +msgstr "Bowling Ball - bounces off walls. If you are looking back, it will be thrown backwards." + +#. I18N: ./data/gui/help2.stkgui +msgid "Parachute - slows down all karts in a better position." +msgstr "Parachute - slows down all karts in a better position." + +#. I18N: ./data/gui/help2.stkgui +msgid "" +"Swapper - gift boxes are transformed into bananas and vice versa for a short" +" time." +msgstr "Swapper - gift boxes are transformed into bananas and vice versa for a short time." + +#. I18N: ./data/gui/help2.stkgui +msgid "" +"Basket Ball - bounces after the leader, and might squash and slow down karts" +" down on the way." +msgstr "Basket Ball - bounces after the leader, and might squash and slow down karts down on the way." + +#. I18N: ./data/gui/help2.stkgui +msgid "Swatter - will squash karts close by, slowing them down." +msgstr "Swatter - will squash karts close by, slowing them down." + +#. I18N: ./data/gui/help3.stkgui +msgid "SuperTuxKart features several game modes" +msgstr "SuperTuxKart features several game modes" + +#. I18N: ./data/gui/help3.stkgui +#. I18N: In the help menu +msgid "" +"Regular Race: All blows allowed, so catch weapons and make clever use of " +"them!" +msgstr "Regular Race: All blows allowed, so catch weapons and make clever use of them!" + +#. I18N: ./data/gui/help3.stkgui +#. I18N: In the help menu +msgid "" +"Time Trial: Contains no powerups, so only your driving skills matter! This " +"mode allows you to record the race for replaying." +msgstr "Time Trial: Contains no powerups, so only your driving skills matter! This mode allows you to record the race for replaying." + +#. I18N: ./data/gui/help3.stkgui +#. I18N: In the help menu +msgid "" +"Follow the leader: Run for second place, as the last kart will be " +"disqualified every time the counter hits zero. Beware: going in front of the" +" leader will get you eliminated too!" +msgstr "Follow the leader: Run for second place, as the last kart will be disqualified every time the counter hits zero. Beware: going in front of the leader will get you eliminated too!" + +#. I18N: ./data/gui/help3.stkgui +#. I18N: In the help menu +msgid "" +"3 Strikes Battle: Hit others with weapons until they lose all their lives." +msgstr "3 Strikes Battle: Hit others with weapons until they lose all their lives." + +#. I18N: ./data/gui/help3.stkgui +#. I18N: In the help menu +msgid "Soccer: Use your kart to push the ball into the goal." +msgstr "Soccer: Use your kart to push the ball into the goal." + +#. I18N: ./data/gui/help3.stkgui +#. I18N: In the help menu +msgid "Egg hunt: Explore tracks to find all hidden eggs." +msgstr "Egg hunt: Explore tracks to find all hidden eggs." + +#. I18N: ./data/gui/help3.stkgui +#. I18N: In the help menu +msgid "" +"* Most of these game modes can also be played in a Grand Prix fashion: " +"instead of playing a single race, you play many in a row. The better you " +"rank, the more points you get. In the end, the player with the most points " +"wins the cup." +msgstr "* Most of these game modes can also be played in a Grand Prix fashion: instead of playing a single race, you play many in a row. The better you rank, the more points you get. In the end, the player with the most points wins the cup." + +#. I18N: ./data/gui/help4.stkgui +msgid "SuperTuxKart can be played in multiplayer mode on the same computer" +msgstr "SuperTuxKart can be played in multiplayer mode on the same computer" + +#. I18N: ./data/gui/help4.stkgui +msgid "(network play is not yet available)" +msgstr "(network play is not yet available)" + +#. I18N: ./data/gui/help4.stkgui +#. I18N: In the help menu +msgid "" +"First, you will need several input devices (having multiple gamepads or " +"joysticks is the best way to play with several people). Go in the input " +"configuration screen and setup the gamepads. It is also possible to play on " +"keyboard(s), however each player will need a different set of keys, and keep" +" in mind that most keyboards are not appropriate for multiplayer gameplay " +"because they do not support large number of keypresses." +msgstr "First, you will need several input devices (having multiple gamepads or joysticks is the best way to play with several people). Go in the input configuration screen and setup the gamepads. It is also possible to play on keyboard(s), however each player will need a different set of keys, and keep in mind that most keyboards are not appropriate for multiplayer gameplay because they do not support large number of keypresses." + +#. I18N: ./data/gui/help4.stkgui +#. I18N: In the help menu +msgid "" +"When input devices are configured, you are ready to play. Select the " +"'multiplayer race' icon in the main menu. When it is time to choose a kart, " +"each player can press on the 'fire' key of their gamepad or keyboard to join" +" the game. Each player can use their input device to select their kart. The " +"game continues when everyone selected their kart. Note that the mouse may " +"not be used for this operation." +msgstr "When input devices are configured, you are ready to play. Select the 'multiplayer race' icon in the main menu. When it is time to choose a kart, each player can press on the 'fire' key of their gamepad or keyboard to join the game. Each player can use their input device to select their kart. The game continues when everyone selected their kart. Note that the mouse may not be used for this operation." + +#. I18N: ./data/gui/help5.stkgui +msgid "" +"Hitting a banana can result in one of the following being attached to the " +"kart:" +msgstr "Hitting a banana can result in one of the following being attached to the kart:" + +#. I18N: ./data/gui/help5.stkgui +#. I18N: In the help menu +msgid "Anchor - slows down the kart." +msgstr "Anchor - slows down the kart." + +#. I18N: ./data/gui/help5.stkgui +#. I18N: In the help menu +msgid "Parachute - slows down the kart less than the anchor." +msgstr "Parachute - slows down the kart less than the anchor." + +#. I18N: ./data/gui/help5.stkgui +#. I18N: In the help menu +msgid "" +"Bomb - detonates after a short amount of time to throw the kart up in the " +"air. Bump into another kart to transfer the bomb to another player." +msgstr "Bomb - detonates after a short amount of time to throw the kart up in the air. Bump into another kart to transfer the bomb to another player." + +#. I18N: ./data/gui/karts.stkgui +#. I18N: In the kart selection (player setup) screen +#. I18N: ./data/gui/karts_online.stkgui +#. I18N: In the kart selection (player setup) screen +msgid "Choose a Kart" +msgstr "Choose a Kart" + +#. I18N: ./data/gui/main_menu.stkgui +#. I18N: Main menu button +msgid "Story Mode" +msgstr "Story Mode" + +#. I18N: ./data/gui/main_menu.stkgui +#. I18N: Main menu button +msgid "Singleplayer" +msgstr "Singleplayer" + +#. I18N: ./data/gui/main_menu.stkgui +#. I18N: Main menu button +msgid "Multiplayer" +msgstr "Multiplayer" + +#. I18N: ./data/gui/main_menu.stkgui +#. I18N: Main menu button +#. I18N: ./data/gui/user_screen.stkgui +#. I18N: In the user screen +#. I18N: ./data/gui/user_screen_tab.stkgui +#. I18N: In the user screen +#: src/states_screens/main_menu_screen.cpp:78 +#: src/states_screens/online_profile_friends.cpp:222 +msgid "Online" +msgstr "Online" + +#. I18N: ./data/gui/main_menu.stkgui +#. I18N: Main menu button +msgid "Addons" +msgstr "Addons" + +#. I18N: ./data/gui/main_menu.stkgui +#. I18N: In the main screen +#. I18N: ./data/gui/overworld_dialog.stkgui +#. I18N: In the in-game dialog +#. I18N: ./data/gui/race_paused_dialog.stkgui +#. I18N: Race paused button +msgid "Options" +msgstr "Options" + +#. I18N: ./data/gui/main_menu.stkgui +#. I18N: In the main screen +#. I18N: ./data/gui/overworld_dialog.stkgui +#. I18N: In the in-game dialog +#. I18N: ./data/gui/race_paused_dialog.stkgui +#. I18N: Race paused button +msgid "Help" +msgstr "Help" + +#. I18N: ./data/gui/main_menu.stkgui +#. I18N: In the main screen +#: src/states_screens/race_gui_overworld.cpp:511 +msgid "Tutorial" +msgstr "Tutorial" + +#. I18N: ./data/gui/main_menu.stkgui +#. I18N: In the main screen +#. I18N: ./data/gui/online/profile_achievements_tab.stkgui +#. I18N: Section in the profile screen +#: src/states_screens/online_profile_base.cpp:112 +msgid "Achievements" +msgstr "Achievements" + +#. I18N: ./data/gui/main_menu.stkgui +#. I18N: In the main screen +msgid "Grand Prix Editor" +msgstr "Grand Prix Editor" + +#. I18N: ./data/gui/main_menu.stkgui +#. I18N: In the main screen +msgid "About" +msgstr "About" + +#. I18N: ./data/gui/main_menu.stkgui +#. I18N: In the main screen +msgid "Quit" +msgstr "Quit" + +#. I18N: ./data/gui/multitouch_settings.stkgui +msgid "Touch Device Settings" +msgstr "Touch Device Settings" + +#. I18N: ./data/gui/multitouch_settings.stkgui +#. I18N: In the multitouch settings screen +msgid "Device enabled" +msgstr "Device enabled" + +#. I18N: ./data/gui/multitouch_settings.stkgui +#. I18N: In the multitouch settings screen +msgid "Inverted buttons" +msgstr "Inverted buttons" + +#. I18N: ./data/gui/multitouch_settings.stkgui +#. I18N: In the multitouch settings screen +msgid "Buttons scale" +msgstr "Buttons scale" + +#. I18N: ./data/gui/multitouch_settings.stkgui +#. I18N: In the multitouch settings screen +msgid "Accelerometer" +msgstr "Accelerometer" + +#. I18N: ./data/gui/multitouch_settings.stkgui +#. I18N: In the multitouch settings screen +msgid "Advanced" +msgstr "Advanced" + +#. I18N: ./data/gui/multitouch_settings.stkgui +#. I18N: In the multitouch settings screen +msgid "Deadzone" +msgstr "Deadzone" + +#. I18N: ./data/gui/multitouch_settings.stkgui +#. I18N: In the multitouch settings screen +msgid "Sensitivity" +msgstr "Sensitivity" + +#. I18N: ./data/gui/multitouch_settings.stkgui +msgid "Restore defaults" +msgstr "Restore defaults" + +#. I18N: ./data/gui/online/change_password.stkgui +#. I18N: In the change password dialog +msgid "Password Change" +msgstr "Password Change" + +#. I18N: ./data/gui/online/change_password.stkgui +#. I18N: In the change password dialog +msgid "Current Password" +msgstr "Current Password" + +#. I18N: ./data/gui/online/change_password.stkgui +#. I18N: In the change password dialog +msgid "New Password" +msgstr "New Password" + +#. I18N: ./data/gui/online/change_password.stkgui +#. I18N: In the change password dialog +#. I18N: ./data/gui/online/register.stkgui +#. I18N: In the registration dialog +msgid "Confirm" +msgstr "Confirm" + +#. I18N: ./data/gui/online/change_password.stkgui +#. I18N: In the change password dialog +#. I18N: ./data/gui/online/recovery_input.stkgui +#. I18N: In the recovery dialog +msgid "Submit" +msgstr "Submit" + +#. I18N: ./data/gui/online/change_password.stkgui +#. I18N: In the change password dialog +#. I18N: ./data/gui/online/guest_login.stkgui +#. I18N: In the login dialog +#. I18N: ./data/gui/online/notification_dialog.stkgui +#. I18N: User info dialog +#. I18N: ./data/gui/online/recovery_info.stkgui +#. I18N: In the recovery dialog +#. I18N: ./data/gui/online/user_info_dialog.stkgui +#. I18N: User info dialog +#. I18N: ./data/gui/online/vote_dialog.stkgui +#. I18N: Vote dialog +msgid "Close" +msgstr "Close" + +#. I18N: ./data/gui/online/create_server.stkgui +#. I18N: In the server creation screen +msgid "Server Creation" +msgstr "Server Creation" + +#. I18N: ./data/gui/online/create_server.stkgui +#. I18N: In the server creation screen +#. I18N: ./data/gui/online/lobby_settings.stkgui +#. I18N: In the lobby settings screen +msgid "Name of the server" +msgstr "Name of the server" + +#. I18N: ./data/gui/online/create_server.stkgui +#. I18N: In the server creation screen +#. I18N: ./data/gui/online/lobby_settings.stkgui +#. I18N: In the lobby settings screen +msgid "Max. number of players" +msgstr "Max. number of players" + +#. I18N: ./data/gui/online/create_server.stkgui +#. I18N: In the server creation screen +msgid "Password (optional)" +msgstr "Password (optional)" + +#. I18N: ./data/gui/online/create_server.stkgui +#. I18N: In the server creation screen +#: src/states_screens/ghost_replay_selection.cpp:80 +#: src/states_screens/server_selection.cpp:104 +msgid "Difficulty" +msgstr "Difficulty" + +#. I18N: ./data/gui/online/create_server.stkgui +#. I18N: Difficulty +#. I18N: ./data/gui/race_setup.stkgui +#. I18N: Difficulty +#. I18N: ./data/gui/select_challenge.stkgui +#. I18N: Difficulty +#: src/race/race_manager.hpp:546 +#: src/states_screens/ghost_replay_selection.cpp:121 +msgid "Novice" +msgstr "Novice" + +#. I18N: ./data/gui/online/create_server.stkgui +#. I18N: Difficulty +#. I18N: ./data/gui/race_setup.stkgui +#. I18N: Difficulty +#. I18N: ./data/gui/select_challenge.stkgui +#. I18N: Difficulty +#: src/race/race_manager.hpp:547 +#: src/states_screens/ghost_replay_selection.cpp:121 +msgid "Intermediate" +msgstr "Intermediate" + +#. I18N: ./data/gui/online/create_server.stkgui +#. I18N: Difficulty +#. I18N: ./data/gui/race_setup.stkgui +#. I18N: Difficulty +#. I18N: ./data/gui/select_challenge.stkgui +#. I18N: Difficulty +#: src/race/race_manager.hpp:548 +#: src/states_screens/ghost_replay_selection.cpp:120 +msgid "Expert" +msgstr "Expert" + +#. I18N: ./data/gui/online/create_server.stkgui +#. I18N: Difficulty +#. I18N: ./data/gui/race_setup.stkgui +#. I18N: Difficulty +#: src/race/race_manager.hpp:549 +#: src/states_screens/ghost_replay_selection.cpp:119 +msgid "SuperTux" +msgstr "SuperTux" + +#. I18N: ./data/gui/online/create_server.stkgui +#. I18N: In the server creation screen +#: src/states_screens/server_selection.cpp:105 +msgid "Game mode" +msgstr "Game mode" + +#. I18N: ./data/gui/online/create_server.stkgui +#. I18N: Multiplayer game mode +#. I18N: Game mode +#: src/race/race_manager.hpp:175 +msgid "Normal Race" +msgstr "Normal Race" + +#. I18N: ./data/gui/online/create_server.stkgui +#. I18N: Multiplayer game mode +#. I18N: Game mode +#: src/race/race_manager.hpp:177 +msgid "Time Trial" +msgstr "Time Trial" + +#. I18N: ./data/gui/online/create_server.stkgui +#. I18N: In the server creation screen +msgid "Create" +msgstr "Create" + +#. I18N: ./data/gui/online/guest_login.stkgui +#. I18N: ./data/gui/user_screen.stkgui +#. I18N: Used as a verb, appears on the main menu (login button) +#: src/states_screens/main_menu_screen.cpp:80 +msgid "Login" +msgstr "Login" + +#. I18N: ./data/gui/online/guest_login.stkgui +#. I18N: Tab in login menu +msgid "Sign In" +msgstr "Sign In" + +#. I18N: ./data/gui/online/guest_login.stkgui +#. I18N: Tab in login menu +msgid "Sign In As Guest" +msgstr "Sign In As Guest" + +#. I18N: ./data/gui/online/guest_login.stkgui +#. I18N: Tab in login menu +msgid "Register" +msgstr "Register" + +#. I18N: ./data/gui/online/guest_login.stkgui +#. I18N: In the login dialog +msgid "Guest Log in" +msgstr "Guest Log in" + +#. I18N: ./data/gui/online/guest_login.stkgui +#. I18N: In the login dialog +msgid "" +"Logging in as a guest allows you to participate in online races, but it does" +" not allow you to vote for addons, or collect any achievements while being " +"online." +msgstr "Logging in as a guest allows you to participate in online races, but it does not allow you to vote for addons, or collect any achievements while being online." + +#. I18N: ./data/gui/online/guest_login.stkgui +#. I18N: In the login dialog +msgid "Log In" +msgstr "Log In" + +#. I18N: ./data/gui/online/lobby_settings.stkgui +#. I18N: In the lobby settings screen +msgid "Lobby Settings" +msgstr "Lobby Settings" + +#. I18N: ./data/gui/online/networking_lobby.stkgui +#. I18N: In networking lobby +msgid "Lobby" +msgstr "Lobby" + +#. I18N: ./data/gui/online/networking_lobby.stkgui +#. I18N: In the networking lobby +#. I18N: ./data/gui/online/server_info_dialog.stkgui +#. I18N: In the networking lobby +msgid "Server name:" +msgstr "Server name:" + +#. I18N: ./data/gui/online/networking_lobby.stkgui +#. I18N: In the networking lobby +#. I18N: ./data/gui/online/server_info_dialog.stkgui +#. I18N: In the networking lobby +msgid "Difficulty:" +msgstr "Difficulty:" + +#. I18N: ./data/gui/online/networking_lobby.stkgui +#. I18N: In the networking lobby +#. I18N: ./data/gui/online/server_info_dialog.stkgui +#. I18N: In the networking lobby +msgid "Game mode:" +msgstr "Game mode:" + +#. I18N: ./data/gui/online/networking_lobby.stkgui +#. I18N: In the networking lobby +msgid "Exit" +msgstr "Exit" + +#. I18N: ./data/gui/online/notification_dialog.stkgui +#. I18N: User info dialog +#. I18N: ./data/gui/online/user_info_dialog.stkgui +#. I18N: User info dialog +msgid "View" +msgstr "View" + +#. I18N: ./data/gui/online/profile_achievements.stkgui +#. I18N: ./data/gui/online/profile_achievements_tab.stkgui +#. I18N: ./data/gui/online/profile_friends.stkgui +#. I18N: ./data/gui/online/profile_overview.stkgui +#. I18N: ./data/gui/online/profile_servers.stkgui +#. I18N: ./data/gui/online/profile_settings.stkgui +msgid "..." +msgstr "..." + +#. I18N: ./data/gui/online/profile_friends.stkgui +#. I18N: Section in the profile screen +#: src/states_screens/online_profile_base.cpp:111 +msgid "Friends" +msgstr "Friends" + +#. I18N: ./data/gui/online/profile_friends.stkgui +#. I18N: In the profile screen +msgid "Look for more friends:" +msgstr "Look for more friends:" + +#. I18N: ./data/gui/online/profile_friends.stkgui +#. I18N: ./data/gui/online/user_search.stkgui +msgid "Search" +msgstr "Search" + +#. I18N: ./data/gui/online/profile_overview.stkgui +#. I18N: Section in the profile screen +msgid "Overview" +msgstr "Overview" + +#. I18N: ./data/gui/online/profile_servers.stkgui +#. I18N: Section in the profile screen +#: src/states_screens/online_profile_base.cpp:110 +msgid "Servers" +msgstr "Servers" + +#. I18N: ./data/gui/online/profile_servers.stkgui +msgid "Local Networking" +msgstr "Local Networking" + +#. I18N: ./data/gui/online/profile_servers.stkgui +#. I18N: In the online multiplayer screen +msgid "Find Server" +msgstr "Find Server" + +#. I18N: ./data/gui/online/profile_servers.stkgui +#. I18N: In the online multiplayer screen +#: src/states_screens/create_server_screen.cpp:83 +msgid "Create Server" +msgstr "Create Server" + +#. I18N: ./data/gui/online/profile_servers.stkgui +msgid "Global Networking" +msgstr "Global Networking" + +#. I18N: ./data/gui/online/profile_servers.stkgui +#. I18N: In the online multiplayer screen +msgid "Quick Play" +msgstr "Quick Play" + +#. I18N: ./data/gui/online/profile_settings.stkgui +#. I18N: Section in the profile screen +#: src/states_screens/online_profile_base.cpp:113 +msgid "Account Settings" +msgstr "Account Settings" + +#. I18N: ./data/gui/online/profile_settings.stkgui +#. I18N: In the online account settings screen +msgid "Password:" +msgstr "Password:" + +#. I18N: ./data/gui/online/profile_settings.stkgui +msgid "Change" +msgstr "Change" + +#. I18N: ./data/gui/online/recovery_info.stkgui +#. I18N: In the recovery dialog +#. I18N: ./data/gui/online/recovery_input.stkgui +#. I18N: In the recovery dialog +msgid "Account Recovery" +msgstr "Account Recovery" + +#. I18N: ./data/gui/online/recovery_info.stkgui +#. I18N: In the recovery dialog +msgid "" +"You will receive an email with further instructions on how to reset your " +"password. Please be patient and be sure to check your spam folder." +msgstr "You will receive an email with further instructions on how to reset your password. Please be patient and be sure to check your spam folder." + +#. I18N: ./data/gui/online/recovery_input.stkgui +msgid "" +"Fill in the username and email address you supplied at registration to be " +"able to reset your password." +msgstr "Fill in the username and email address you supplied at registration to be able to reset your password." + +#. I18N: ./data/gui/online/recovery_input.stkgui +#. I18N: In the recovery dialog +#. I18N: ./data/gui/user_screen.stkgui +#. I18N: In the user screen +#. I18N: ./data/gui/user_screen_tab.stkgui +#. I18N: In the user screen +#: src/states_screens/online_profile_friends.cpp:72 +#: src/states_screens/online_user_search.cpp:73 +msgid "Username" +msgstr "Username" + +#. I18N: ./data/gui/online/recovery_input.stkgui +#. I18N: In the recovery dialog +#. I18N: ./data/gui/online/register.stkgui +#. I18N: In the registration dialog +msgid "Email" +msgstr "Email" + +#. I18N: ./data/gui/online/register.stkgui +#. I18N: In the registration dialog +msgid "Create User" +msgstr "Create User" + +#. I18N: ./data/gui/online/register.stkgui +#. I18N: Section in the register screen +msgid "New Online Account" +msgstr "New Online Account" + +#. I18N: ./data/gui/online/register.stkgui +#. I18N: Section in the register screen +msgid "Existing Online Account" +msgstr "Existing Online Account" + +#. I18N: ./data/gui/online/register.stkgui +#. I18N: Section in the register screen +msgid "Offline Account" +msgstr "Offline Account" + +#. I18N: ./data/gui/online/register.stkgui +#. I18N: In the registration dialog +msgid "Local Name" +msgstr "Local Name" + +#. I18N: ./data/gui/online/register.stkgui +#. I18N: In the registration dialog +msgid "Online Username" +msgstr "Online Username" + +#. I18N: ./data/gui/online/register.stkgui +#. I18N: In the registration dialog +#. I18N: ./data/gui/user_screen.stkgui +#. I18N: In the user screen +#. I18N: ./data/gui/user_screen_tab.stkgui +#. I18N: In the registration dialog +msgid "Password" +msgstr "Password" + +#. I18N: ./data/gui/online/register.stkgui +#. I18N: In the registration dialog +msgid "" +"You can play without creating an online account by selecting an offline " +"account. Though then you can not connect to friends, vote for addons etc. " +"Please read our privacy statement at http://privacy.supertuxkart.net" +msgstr "You can play without creating an online account by selecting an offline account. Though then you can not connect to friends, vote for addons etc. Please read our privacy statement at http://privacy.supertuxkart.net" + +#. I18N: ./data/gui/online/registration_terms.stkgui +#. I18N: In the registration dialog +msgid "Terms and Agreement" +msgstr "Terms and Agreement" + +#. I18N: ./data/gui/online/registration_terms.stkgui +#. I18N: In the registration dialog +msgid "I agree to the above terms and am 13 years or older. " +msgstr "I agree to the above terms and am 13 years or older. " + +#. I18N: ./data/gui/online/registration_terms.stkgui +#. I18N: In the registration dialog +#. I18N: ./data/gui/online/user_info_dialog.stkgui +#. I18N: User info dialog +msgid "Accept" +msgstr "Accept" + +#. I18N: ./data/gui/online/server_info_dialog.stkgui +#. I18N: In the server info dialog +msgid "Server Info" +msgstr "Server Info" + +#. I18N: ./data/gui/online/server_info_dialog.stkgui +#. I18N: In the server info dialog +msgid "Join" +msgstr "Join" + +#. I18N: ./data/gui/online/server_selection.stkgui +msgid "Server Selection" +msgstr "Server Selection" + +#. I18N: ./data/gui/online/user_info_dialog.stkgui +#. I18N: User info dialog' dialog +msgid "User Info" +msgstr "User Info" + +#. I18N: ./data/gui/online/user_info_dialog.stkgui +#. I18N: User info dialog +#: src/states_screens/online_profile_achievements.cpp:73 +#: src/states_screens/server_selection.cpp:102 +msgid "Name" +msgstr "Name" + +#. I18N: ./data/gui/online/user_info_dialog.stkgui +#. I18N: User info dialog +msgid "Add Friend" +msgstr "Add Friend" + +#. I18N: ./data/gui/online/user_info_dialog.stkgui +#. I18N: User info dialog +msgid "Decline" +msgstr "Decline" + +#. I18N: ./data/gui/online/user_search.stkgui +msgid "User search" +msgstr "User search" + +#. I18N: ./data/gui/online/vote_dialog.stkgui +#. I18N: In the vote dialog +msgid "Vote" +msgstr "Vote" + +#. I18N: ./data/gui/online/waiting_for_others.stkgui +#. I18N: Networking screen +msgid "Waiting for the others..." +msgstr "Waiting for the others..." + +#. I18N: ./data/gui/options_audio.stkgui +#. I18N: ./data/gui/options_device.stkgui +#. I18N: ./data/gui/options_input.stkgui +#. I18N: ./data/gui/options_players.stkgui +#. I18N: ./data/gui/options_ui.stkgui +#. I18N: ./data/gui/options_video.stkgui +#. I18N: ./data/gui/user_screen_tab.stkgui +msgid "SuperTuxKart Options" +msgstr "SuperTuxKart Options" + +#. I18N: ./data/gui/options_audio.stkgui +#. I18N: Section in the settings menu +#: src/states_screens/options_screen_device.cpp:86 +#: src/states_screens/options_screen_input.cpp:151 +#: src/states_screens/options_screen_ui.cpp:123 +#: src/states_screens/options_screen_video.cpp:238 +#: src/states_screens/user_screen.cpp:660 +msgid "Audio" +msgstr "Audio" + +#. I18N: ./data/gui/options_audio.stkgui +#. I18N: In the audio options screen +msgid "Music" +msgstr "Music" + +#. I18N: ./data/gui/options_audio.stkgui +#. I18N: In the audio options screen +#. I18N: in the graphical options tooltip; +#. indicates a graphical feature is enabled +#: src/states_screens/dialogs/custom_video_settings.cpp:68 +#: src/states_screens/options_screen_video.cpp:451 +msgid "Enabled" +msgstr "Enabled" + +#. I18N: ./data/gui/options_audio.stkgui +#. I18N: In the audio options screen +msgid "Volume" +msgstr "Volume" + +#. I18N: ./data/gui/options_audio.stkgui +#. I18N: In the audio options screen +msgid "Sound Effects" +msgstr "Sound Effects" + +#. I18N: ./data/gui/options_device.stkgui +#. I18N: Section in the settings menu +#. I18N: ./data/gui/options_input.stkgui +#. I18N: Section in the settings menu +#: src/states_screens/options_screen_audio.cpp:68 +#: src/states_screens/options_screen_ui.cpp:125 +#: src/states_screens/options_screen_video.cpp:241 +#: src/states_screens/user_screen.cpp:662 +msgid "Controls" +msgstr "Controls" + +#. I18N: ./data/gui/options_device.stkgui +#. I18N: In the input configuration screen +#: src/states_screens/options_screen_device.cpp:111 +msgid "Delete Configuration" +msgstr "Delete Configuration" + +#. I18N: ./data/gui/options_device.stkgui +#. I18N: In the input configuration screen +msgid "Back to device list" +msgstr "Back to device list" + +#. I18N: ./data/gui/options_input.stkgui +#. I18N: In the input configuration screen +msgid "Press enter or double-click on a device to configure it" +msgstr "Press enter or double-click on a device to configure it" + +#. I18N: ./data/gui/options_input.stkgui +#. I18N: In the input configuration screen +msgid "Add a device" +msgstr "Add a device" + +#. I18N: ./data/gui/options_input.stkgui +#. I18N: In the input configuration screen +msgid "" +"* Which config to use will be inferred from which 'Select' key is pressed to" +" join the game." +msgstr "* Which config to use will be inferred from which 'Select' key is pressed to join the game." + +#. I18N: ./data/gui/options_players.stkgui +#. I18N: Section in the settings menu +#. I18N: ./data/gui/user_screen_tab.stkgui +#. I18N: Section in the settings menu +#: src/states_screens/ghost_replay_selection.cpp:78 +#: src/states_screens/options_screen_audio.cpp:67 +#: src/states_screens/options_screen_device.cpp:88 +#: src/states_screens/options_screen_input.cpp:153 +#: src/states_screens/options_screen_ui.cpp:124 +#: src/states_screens/options_screen_video.cpp:240 +#: src/states_screens/server_selection.cpp:103 +msgid "Players" +msgstr "Players" + +#. I18N: ./data/gui/options_players.stkgui +msgid "You are playing as" +msgstr "You are playing as" + +#. I18N: ./data/gui/options_players.stkgui +#. I18N: In the player configuration screen +msgid "Press enter or double-click on a player to edit their settings" +msgstr "Press enter or double-click on a player to edit their settings" + +#. I18N: ./data/gui/options_players.stkgui +#. I18N: In the player configuration screen +msgid "Add Player" +msgstr "Add Player" + +#. I18N: ./data/gui/options_ui.stkgui +#. I18N: Section in the settings menu +#: src/states_screens/options_screen_audio.cpp:66 +#: src/states_screens/options_screen_device.cpp:87 +#: src/states_screens/options_screen_input.cpp:152 +#: src/states_screens/options_screen_video.cpp:239 +#: src/states_screens/user_screen.cpp:661 +msgid "User Interface" +msgstr "User Interface" + +#. I18N: ./data/gui/options_ui.stkgui +#. I18N: In the ui settings +msgid "Skin" +msgstr "Skin" + +#. I18N: ./data/gui/options_ui.stkgui +#. I18N: In the ui settings +msgid "Display FPS" +msgstr "Display FPS" + +#. I18N: ./data/gui/options_ui.stkgui +#. I18N: In the ui settings +msgid "Always show login screen" +msgstr "Always show login screen" + +#. I18N: ./data/gui/options_ui.stkgui +#. I18N: In the ui settings +msgid "Send anonymous HW statistics" +msgstr "Send anonymous HW statistics" + +#. I18N: ./data/gui/options_ui.stkgui +#. I18N: In the ui settings +msgid "Enable per-player handicaps" +msgstr "Enable per-player handicaps" + +#. I18N: ./data/gui/options_ui.stkgui +#. I18N: In the ui settings +msgid "Connect to the Internet" +msgstr "Connect to the Internet" + +#. I18N: ./data/gui/options_video.stkgui +#. I18N: Section in the settings menu +#: src/states_screens/options_screen_audio.cpp:65 +#: src/states_screens/options_screen_device.cpp:85 +#: src/states_screens/options_screen_input.cpp:150 +#: src/states_screens/options_screen_ui.cpp:122 +#: src/states_screens/user_screen.cpp:659 +msgid "Graphics" +msgstr "Graphics" + +#. I18N: ./data/gui/options_video.stkgui +#. I18N: In the video settings +msgid "Graphical Effects Level" +msgstr "Graphical Effects Level" + +#. I18N: ./data/gui/options_video.stkgui +#. I18N: In the video settings +msgid "Custom settings..." +msgstr "Custom settings..." + +#. I18N: ./data/gui/options_video.stkgui +#. I18N: In the video settings +msgid "Vertical Sync (requires restart)" +msgstr "Vertical Sync (requires restart)" + +#. I18N: ./data/gui/options_video.stkgui +#. I18N: In the video settings +msgid "Resolution" +msgstr "Resolution" + +#. I18N: ./data/gui/options_video.stkgui +#. I18N: In the video settings +msgid "Fullscreen" +msgstr "Fullscreen" + +#. I18N: ./data/gui/options_video.stkgui +#. I18N: In the video settings +msgid "Remember window location" +msgstr "Remember window location" + +#. I18N: ./data/gui/options_video.stkgui +#. I18N: In the video settings +msgid "Apply new resolution" +msgstr "Apply new resolution" + +#. I18N: ./data/gui/overworld_dialog.stkgui +#. I18N: ./data/gui/race_paused_dialog.stkgui +msgid "Paused" +msgstr "Paused" + +#. I18N: ./data/gui/overworld_dialog.stkgui +#. I18N: In the in-game dialog +msgid "Back to Game" +msgstr "Back to Game" + +#. I18N: ./data/gui/overworld_dialog.stkgui +#. I18N: In the in-game dialog +msgid "Select kart" +msgstr "Select kart" + +#. I18N: ./data/gui/overworld_dialog.stkgui +#. I18N: In the in-game dialog +msgid "Back to menu" +msgstr "Back to menu" + +#. I18N: ./data/gui/press_a_key_dialog.stkgui +msgid "Press a key" +msgstr "Press a key" + +#. I18N: ./data/gui/press_a_key_dialog.stkgui +#. I18N: When configuring input +msgid "Assign to ESC key" +msgstr "Assign to ESC key" + +#. I18N: ./data/gui/press_a_key_dialog.stkgui +#. I18N: When configuring input +msgid "Assign nothing" +msgstr "Assign nothing" + +#. I18N: ./data/gui/press_a_key_dialog.stkgui +#. I18N: When configuring input +msgid "Press ESC to cancel" +msgstr "Press ESC to cancel" + +#. I18N: ./data/gui/race_paused_dialog.stkgui +#. I18N: Race paused button +msgid "Back to Race" +msgstr "Back to Race" + +#. I18N: ./data/gui/race_paused_dialog.stkgui +#. I18N: Race paused button +#: src/states_screens/race_result_gui.cpp:228 +msgid "Setup New Race" +msgstr "Setup New Race" + +#. I18N: ./data/gui/race_paused_dialog.stkgui +#. I18N: Race paused button +msgid "Restart Race" +msgstr "Restart Race" + +#. I18N: ./data/gui/race_paused_dialog.stkgui +#. I18N: Race paused button +msgid "Give Up Race" +msgstr "Give Up Race" + +#. I18N: ./data/gui/race_paused_dialog.stkgui +#. I18N: Race paused button +msgid "Exit Race" +msgstr "Exit Race" + +#. I18N: ./data/gui/race_setup.stkgui +#. I18N: ./data/gui/select_challenge.stkgui +#. I18N: ./data/gui/soccer_setup.stkgui +msgid "Race Setup" +msgstr "Race Setup" + +#. I18N: ./data/gui/race_setup.stkgui +msgid "Select a difficulty" +msgstr "Select a difficulty" + +#. I18N: ./data/gui/race_setup.stkgui +msgid "Select a game mode" +msgstr "Select a game mode" + +#. I18N: ./data/gui/select_challenge.stkgui +#. I18N: Type of race, in a challenge +msgid "Type:" +msgstr "Type:" + +#. I18N: ./data/gui/soccer_setup.stkgui +#. I18N: In soccer setup screen +msgid "Number of goals to win" +msgstr "Number of goals to win" + +#. I18N: ./data/gui/soccer_setup.stkgui +#. I18N: In soccer setup screen +msgid "Maximum time (min.)" +msgstr "Maximum time (min.)" + +#. I18N: ./data/gui/soccer_setup.stkgui +#. I18N: In soccer setup screen +msgid "Game type (Goals limit / Time limit)" +msgstr "Game type (Goals limit / Time limit)" + +#. I18N: ./data/gui/soccer_setup.stkgui +#. I18N: In soccer setup screen +msgid "Use left/right to choose your team and press fire" +msgstr "Use left/right to choose your team and press fire" + +#. I18N: ./data/gui/soccer_setup.stkgui +#. I18N: In soccer setup screen +msgid "Red Team" +msgstr "Red Team" + +#. I18N: ./data/gui/soccer_setup.stkgui +#. I18N: In soccer setup screen +msgid "Blue Team" +msgstr "Blue Team" + +#. I18N: ./data/gui/tracks_and_gp.stkgui +#. I18N: In the track and grand prix selection screen +#: src/states_screens/dialogs/select_challenge.cpp:147 +msgid "Grand Prix" +msgstr "Grand Prix" + +#. I18N: ./data/gui/track_info.stkgui +msgid "= Highscores =" +msgstr "= Highscores =" + +#. I18N: ./data/gui/track_info.stkgui +#. I18N: for empty highscores entries +#: src/states_screens/track_info_screen.cpp:322 +msgid "(Empty)" +msgstr "(Empty)" + +#. I18N: ./data/gui/track_info.stkgui +#. I18N: In the track info screen +msgid "Number of laps" +msgstr "Number of laps" + +#. I18N: ./data/gui/track_info.stkgui +#. I18N: In the track info screen +msgid "Number of AI karts" +msgstr "Number of AI karts" + +#. I18N: ./data/gui/user_screen.stkgui +#. I18N: In the user screen +#. I18N: ./data/gui/user_screen_tab.stkgui +#. I18N: In the user screen +msgid "Remember password" +msgstr "Remember password" + +#. I18N: ./data/gui/user_screen.stkgui +#. I18N: In the user screen +#. I18N: ./data/gui/user_screen_tab.stkgui +#. I18N: In the user screen +msgid "Add user" +msgstr "Add user" + +#. I18N: ./data/gui/user_screen.stkgui +#. I18N: In the user screen +#. I18N: ./data/gui/user_screen_tab.stkgui +#. I18N: In the user screen +msgid "Delete" +msgstr "Delete" + +#. I18N: ../stk-assets/tracks/abyss/track.xml +msgid "Antediluvian Abyss" +msgstr "Antediluvian Abyss" + +#. I18N: ../stk-assets/tracks/battleisland/track.xml +msgid "Battle Island" +msgstr "Battle Island" + +#. I18N: ../stk-assets/tracks/candela_city/track.xml +msgid "Candela City" +msgstr "Candela City" + +#. I18N: ../stk-assets/tracks/cave/track.xml +msgid "Cave X" +msgstr "Cave X" + +#. I18N: ../stk-assets/tracks/cocoa_temple/track.xml +msgid "Cocoa Temple" +msgstr "Cocoa Temple" + +#. I18N: ../stk-assets/tracks/cornfield_crossing/track.xml +msgid "Cornfield Crossing" +msgstr "Cornfield Crossing" + +#. I18N: ../stk-assets/tracks/fortmagma/track.xml +msgid "Fort Magma" +msgstr "Fort Magma" + +#. I18N: ../stk-assets/tracks/gran_paradiso_island/track.xml +msgid "Gran Paradiso Island" +msgstr "Gran Paradiso Island" + +#. I18N: ../stk-assets/tracks/greenvalley/track.xml +msgid "Green Valley" +msgstr "Green Valley" + +#. I18N: ../stk-assets/tracks/hacienda/track.xml +msgid "Hacienda" +msgstr "Hacienda" + +#. I18N: ../stk-assets/tracks/icy_soccer_field/track.xml +msgid "Icy Soccer Field" +msgstr "Icy Soccer Field" + +#. I18N: Cutscene subtitle from ../stk-assets/tracks/introcutscene2/scene.xml +#. I18N: ../stk-assets/tracks/introcutscene2/scene.xml +msgid "What's wrong, little hippies? Your great gnu leader is missing?" +msgstr "What's wrong, little hippies? Your great gnu leader is missing?" + +#. I18N: Cutscene subtitle from ../stk-assets/tracks/introcutscene2/scene.xml +#. I18N: ../stk-assets/tracks/introcutscene2/scene.xml +msgid "Oh yes, see, he's in my castle now and will be served for supper..." +msgstr "Oh yes, see, he's in my castle now and will be served for supper..." + +#. I18N: Cutscene subtitle from ../stk-assets/tracks/introcutscene2/scene.xml +#. I18N: ../stk-assets/tracks/introcutscene2/scene.xml +msgid "But I'm a fair creature, so I'll make you a deal." +msgstr "But I'm a fair creature, so I'll make you a deal." + +#. I18N: Cutscene subtitle from ../stk-assets/tracks/introcutscene2/scene.xml +#. I18N: ../stk-assets/tracks/introcutscene2/scene.xml +msgid "If you can beat me at racing, I will free the old codger." +msgstr "If you can beat me at racing, I will free the old codger." + +#. I18N: Cutscene subtitle from ../stk-assets/tracks/introcutscene2/scene.xml +#. I18N: ../stk-assets/tracks/introcutscene2/scene.xml +msgid "" +" But you pathetic little twerps will never be able to beat me - King of the " +"Karts!" +msgstr " But you pathetic little twerps will never be able to beat me - King of the Karts!" + +#. I18N: ../stk-assets/tracks/lasdunasarena/track.xml +msgid "Las Dunas Arena" +msgstr "Las Dunas Arena" + +#. I18N: ../stk-assets/tracks/lighthouse/track.xml +msgid "Around the lighthouse" +msgstr "Around the lighthouse" + +#. I18N: ../stk-assets/tracks/mansion/track.xml +msgid "Blackhill Mansion" +msgstr "Blackhill Mansion" + +#. I18N: ../stk-assets/tracks/mines/track.xml +msgid "Old Mine" +msgstr "Old Mine" + +#. I18N: ../stk-assets/tracks/minigolf/track.xml +msgid "Minigolf" +msgstr "Minigolf" + +#. I18N: ../stk-assets/tracks/olivermath/track.xml +msgid "Oliver's Math Class" +msgstr "Oliver's Math Class" + +#. I18N: ../stk-assets/tracks/sandtrack/track.xml +msgid "Shifting Sands" +msgstr "Shifting Sands" + +#. I18N: ../stk-assets/tracks/scotland/track.xml +msgid "Nessie's pond" +msgstr "Nessie's pond" + +#. I18N: ../stk-assets/tracks/snowmountain/track.xml +msgid "Northern Resort" +msgstr "Northern Resort" + +#. I18N: ../stk-assets/tracks/snowtuxpeak/track.xml +msgid "Snow Peak" +msgstr "Snow Peak" + +#. I18N: ../stk-assets/tracks/soccer_field/track.xml +msgid "Soccer field" +msgstr "Soccer field" + +#. I18N: ../stk-assets/tracks/stadium/track.xml +msgid "The Stadium" +msgstr "The Stadium" + +#. I18N: ../stk-assets/tracks/stk_enterprise/track.xml +msgid "STK Enterprise" +msgstr "STK Enterprise" + +#. I18N: ../stk-assets/tracks/temple/track.xml +msgid "Temple" +msgstr "Temple" + +#. I18N: ../stk-assets/tracks/volcano_island/track.xml +msgid "Volcan Island" +msgstr "Volcan Island" + +#. I18N: ../stk-assets/tracks/xr591/track.xml +msgid "XR591" +msgstr "XR591" + +#. I18N: ../stk-assets/tracks/zengarden/track.xml +msgid "Zen Garden" +msgstr "Zen Garden" + +#. I18N: ../stk-assets/karts/adiumy/kart.xml +msgid "Adiumy" +msgstr "Adiumy" + +#. I18N: ../stk-assets/karts/amanda/kart.xml +msgid "Amanda" +msgstr "Amanda" + +#. I18N: ../stk-assets/karts/beastie/kart.xml +msgid "Beastie" +msgstr "Beastie" + +#. I18N: ../stk-assets/karts/emule/kart.xml +msgid "Emule" +msgstr "Emule" + +#. I18N: ../stk-assets/karts/gavroche/kart.xml +msgid "Gavroche" +msgstr "Gavroche" + +#. I18N: ../stk-assets/karts/gnu/kart.xml +msgid "Gnu" +msgstr "Gnu" + +#. I18N: ../stk-assets/karts/hexley/kart.xml +msgid "Hexley" +msgstr "Hexley" + +#. I18N: ../stk-assets/karts/kiki/kart.xml +msgid "Kiki" +msgstr "Kiki" + +#. I18N: ../stk-assets/karts/konqi/kart.xml +msgid "Konqi" +msgstr "Konqi" + +#. I18N: ../stk-assets/karts/nolok/kart.xml +msgid "Nolok" +msgstr "Nolok" + +#. I18N: ../stk-assets/karts/pidgin/kart.xml +msgid "Pidgin" +msgstr "Pidgin" + +#. I18N: ../stk-assets/karts/puffy/kart.xml +msgid "Puffy" +msgstr "Puffy" + +#. I18N: ../stk-assets/karts/sara_the_racer/kart.xml +msgid "Sara the Racer" +msgstr "Sara the Racer" + +#. I18N: ../stk-assets/karts/sara_the_wizard/kart.xml +msgid "Sara the Wizard" +msgstr "Sara the Wizard" + +#. I18N: ../stk-assets/karts/suzanne/kart.xml +msgid "Suzanne" +msgstr "Suzanne" + +#. I18N: ../stk-assets/karts/tux/kart.xml +msgid "Tux" +msgstr "Tux" + +#. I18N: ../stk-assets/karts/wilber/kart.xml +msgid "Wilber" +msgstr "Wilber" + +#. I18N: ../stk-assets/karts/xue/kart.xml +msgid "Xue" +msgstr "Xue" + +#: src/achievements/achievement.cpp:209 +#, c-format +msgid "Completed achievement \"%s\"." +msgstr "Completed achievement \"%s\"." + +#: src/addons/addons_manager.cpp:104 src/addons/news_manager.cpp:322 +msgid "Failed to connect to the SuperTuxKart add-ons server." +msgstr "Failed to connect to the SuperTuxKart add-ons server." + +#: src/addons/news_manager.cpp:179 +#, c-format +msgid "Error downloading news: '%s'." +msgstr "Error downloading news: '%s'." + +#. I18N: number of laps to race in a challenge +#: src/challenges/challenge_data.cpp:266 +#: src/states_screens/race_result_gui.cpp:1424 +#, c-format +msgid "Laps: %i" +msgstr "Laps: %i" + +#: src/challenges/challenge_data.cpp:272 +msgid "Follow the leader" +msgstr "Follow the leader" + +#: src/challenges/challenge_data.cpp:518 +#, c-format +msgid "New track '%s' now available" +msgstr "New track '%s' now available" + +#: src/challenges/challenge_data.cpp:522 +#, c-format +msgid "New game mode '%s' now available" +msgstr "New game mode '%s' now available" + +#: src/challenges/challenge_data.cpp:532 +#, c-format +msgid "New Grand Prix '%s' now available" +msgstr "New Grand Prix '%s' now available" + +#: src/challenges/challenge_data.cpp:536 +#, c-format +msgid "New difficulty '%s' now available" +msgstr "New difficulty '%s' now available" + +#: src/challenges/challenge_data.cpp:546 +#, c-format +msgid "New kart '%s' now available" +msgstr "New kart '%s' now available" + +#: src/config/player_manager.cpp:91 +msgid "Currently not signed in" +msgstr "Currently not signed in" + +#. I18N: Name of first guest player (without number) +#: src/config/player_manager.cpp:392 +msgid "Guest" +msgstr "Guest" + +#. I18N: Name of further guest players, with a 1, 2, ... attached +#: src/config/player_manager.cpp:397 +#, c-format +msgid "Guest %d" +msgstr "Guest %d" + +#: src/config/user_config.cpp:700 +msgid "" +"Your config file was malformed, so it was deleted and a new one will be " +"created." +msgstr "Your config file was malformed, so it was deleted and a new one will be created." + +#: src/config/user_config.cpp:711 +msgid "" +"Your config file was too old, so it was deleted and a new one will be " +"created." +msgstr "Your config file was too old, so it was deleted and a new one will be created." + +#: src/graphics/irr_driver.cpp:535 +msgid "Video recording started." +msgstr "Video recording started." + +#: src/graphics/irr_driver.cpp:541 +#, c-format +msgid "Video saved in \"%s\"." +msgstr "Video saved in \"%s\"." + +#: src/graphics/irr_driver.cpp:545 +msgid "Encoding progress:" +msgstr "Encoding progress:" + +#: src/graphics/irr_driver.cpp:1682 +#, c-format +msgid "FPS: %d/%d/%d - %d KTris" +msgstr "FPS: %d/%d/%d - %d KTris" + +#: src/guiengine/engine.cpp:1296 +msgid "Loading" +msgstr "Loading" + +#. I18N: 'handicapped' indicates that per-player handicaps are +#. activated for this kart (i.e. it will drive slower) +#: src/guiengine/widgets/player_kart_widget.cpp:392 +#, c-format +msgid "%s (handicapped)" +msgstr "%s (handicapped)" + +#: src/guiengine/widgets/player_kart_widget.cpp:451 +#, c-format +msgid "%s is ready" +msgstr "%s is ready" + +#. I18N: Unbound key binding +#: src/input/binding.cpp:90 +msgid "[none]" +msgstr "[none]" + +#. I18N: input configuration screen: mouse button +#: src/input/binding.cpp:114 +msgctxt "input_key" +msgid "Left Mouse Button" +msgstr "Left Mouse Button" + +#. I18N: input configuration screen: mouse button +#: src/input/binding.cpp:116 +msgctxt "input_key" +msgid "Right Mouse Button" +msgstr "Right Mouse Button" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:118 +msgctxt "input_key" +msgid "Cancel" +msgstr "Cancel" + +#. I18N: input configuration screen: mouse button +#: src/input/binding.cpp:120 +msgctxt "input_key" +msgid "Middle Mouse Button" +msgstr "Middle Mouse Button" + +#. I18N: input configuration screen: mouse button +#: src/input/binding.cpp:122 +msgctxt "input_key" +msgid "X1 Mouse Button" +msgstr "X1 Mouse Button" + +#. I18N: input configuration screen: mouse button +#: src/input/binding.cpp:124 +msgctxt "input_key" +msgid "X2 Mouse Button" +msgstr "X2 Mouse Button" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:126 +msgctxt "input_key" +msgid "Backspace" +msgstr "Backspace" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:128 +msgctxt "input_key" +msgid "Tab" +msgstr "Tab" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:130 +msgctxt "input_key" +msgid "Clear" +msgstr "Clear" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:132 +msgctxt "input_key" +msgid "Return" +msgstr "Return" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:134 +msgctxt "input_key" +msgid "Shift" +msgstr "Shift" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:136 +msgctxt "input_key" +msgid "Control" +msgstr "Control" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:138 +msgctxt "input_key" +msgid "Alt/Menu" +msgstr "Alt/Menu" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:140 +msgctxt "input_key" +msgid "Pause" +msgstr "Pause" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:142 +msgctxt "input_key" +msgid "Caps Lock" +msgstr "Caps Lock" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:144 +msgctxt "input_key" +msgid "Kana" +msgstr "Kana" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:146 +msgctxt "input_key" +msgid "Junja" +msgstr "Junja" + +#. I18N: input configuration screen: keyboard key +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:149 +msgctxt "input_key" +msgid "Final" +msgstr "Final" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:151 +msgctxt "input_key" +msgid "Escape" +msgstr "Escape" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:153 +msgctxt "input_key" +msgid "Convert" +msgstr "Convert" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:155 +msgctxt "input_key" +msgid "Nonconvert" +msgstr "Nonconvert" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:157 +msgctxt "input_key" +msgid "Accept" +msgstr "Accept" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:159 +msgctxt "input_key" +msgid "Modechange" +msgstr "Modechange" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:161 +msgctxt "input_key" +msgid "Space" +msgstr "Space" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:163 +msgctxt "input_key" +msgid "Page Up" +msgstr "Page Up" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:165 +msgctxt "input_key" +msgid "Page Down" +msgstr "Page Down" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:167 +msgctxt "input_key" +msgid "End" +msgstr "End" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:169 +msgctxt "input_key" +msgid "Home" +msgstr "Home" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:171 +msgctxt "input_key" +msgid "Left" +msgstr "Left" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:173 +msgctxt "input_key" +msgid "Up" +msgstr "Up" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:175 +msgctxt "input_key" +msgid "Right" +msgstr "Right" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:177 +msgctxt "input_key" +msgid "Down" +msgstr "Down" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:179 +msgctxt "input_key" +msgid "Select" +msgstr "Select" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:181 +msgctxt "input_key" +msgid "Print" +msgstr "Print" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:183 +msgctxt "input_key" +msgid "Exec" +msgstr "Exec" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:185 +msgctxt "input_key" +msgid "Print Screen" +msgstr "Print Screen" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:187 +msgctxt "input_key" +msgid "Insert" +msgstr "Insert" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:189 +msgctxt "input_key" +msgid "Delete" +msgstr "Delete" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:191 +msgctxt "input_key" +msgid "Help" +msgstr "Help" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:229 +msgctxt "input_key" +msgid "Left Logo" +msgstr "Left Logo" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:231 +msgctxt "input_key" +msgid "Right Logo" +msgstr "Right Logo" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:233 +msgctxt "input_key" +msgid "Apps" +msgstr "Apps" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:235 +msgctxt "input_key" +msgid "Sleep" +msgstr "Sleep" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:237 +msgctxt "input_key" +msgid "Numpad 0" +msgstr "Numpad 0" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:239 +msgctxt "input_key" +msgid "Numpad 1" +msgstr "Numpad 1" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:241 +msgctxt "input_key" +msgid "Numpad 2" +msgstr "Numpad 2" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:243 +msgctxt "input_key" +msgid "Numpad 3" +msgstr "Numpad 3" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:245 +msgctxt "input_key" +msgid "Numpad 4" +msgstr "Numpad 4" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:247 +msgctxt "input_key" +msgid "Numpad 5" +msgstr "Numpad 5" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:249 +msgctxt "input_key" +msgid "Numpad 6" +msgstr "Numpad 6" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:251 +msgctxt "input_key" +msgid "Numpad 7" +msgstr "Numpad 7" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:253 +msgctxt "input_key" +msgid "Numpad 8" +msgstr "Numpad 8" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:255 +msgctxt "input_key" +msgid "Numpad 9" +msgstr "Numpad 9" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:259 +msgctxt "input_key" +msgid "Separator" +msgstr "Separator" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:261 +msgctxt "input_key" +msgid "- (Subtract)" +msgstr "- (Subtract)" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:263 +msgctxt "input_key" +msgid "Decimal" +msgstr "Decimal" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:265 +msgctxt "input_key" +msgid "/ (Divide)" +msgstr "/ (Divide)" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:291 +msgctxt "input_key" +msgid "Num Lock" +msgstr "Num Lock" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:293 +msgctxt "input_key" +msgid "Scroll Lock" +msgstr "Scroll Lock" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:295 +msgctxt "input_key" +msgid "Left Shift" +msgstr "Left Shift" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:297 +msgctxt "input_key" +msgid "Right Shift" +msgstr "Right Shift" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:299 +msgctxt "input_key" +msgid "Left Control" +msgstr "Left Control" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:301 +msgctxt "input_key" +msgid "Right Control" +msgstr "Right Control" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:303 +msgctxt "input_key" +msgid "Left Menu" +msgstr "Left Menu" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:305 +msgctxt "input_key" +msgid "Right Menu" +msgstr "Right Menu" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:311 +msgctxt "input_key" +msgid "Attn" +msgstr "Attn" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:313 +msgctxt "input_key" +msgid "Crsel" +msgstr "Crsel" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:315 +msgctxt "input_key" +msgid "Exsel" +msgstr "Exsel" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:317 +msgctxt "input_key" +msgid "Ereof" +msgstr "Ereof" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:319 +msgctxt "input_key" +msgid "Play" +msgstr "Play" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:321 +msgctxt "input_key" +msgid "Zoom" +msgstr "Zoom" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:323 +msgctxt "input_key" +msgid "Pa1" +msgstr "Pa1" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:325 +msgctxt "input_key" +msgid "Oem Clear" +msgstr "Oem Clear" + +#. I18N: to appear in input configuration screen, for gamepad hats +#: src/input/binding.cpp:334 src/input/binding.cpp:339 +#, c-format +msgid "Gamepad hat %d" +msgstr "Gamepad hat %d" + +#. I18N: to appear in input configuration screen, for gamepad axes +#: src/input/binding.cpp:346 +#, c-format +msgid "Axis %d %s" +msgstr "Axis %d %s" + +#. I18N: to appear in input configuration screen, for gamepad axes +#: src/input/binding.cpp:353 +#, c-format +msgid "Axis %d inverted" +msgstr "Axis %d inverted" + +#. I18N: to appear in input configuration screen, for gamepad axes +#: src/input/binding.cpp:358 +#, c-format +msgid "Axis %d" +msgstr "Axis %d" + +#. I18N: to appear in input configuration screen, for gamepad buttons +#: src/input/binding.cpp:366 +#, c-format +msgid "Gamepad button %d" +msgstr "Gamepad button %d" + +#. I18N: to appear in input configuration screen, for mouse (might not be used +#. at all) +#: src/input/binding.cpp:369 +#, c-format +msgid "Mouse button %d" +msgstr "Mouse button %d" + +#. I18N: to appear in input configuration screen, for mouse (might not be used +#. at all) +#: src/input/binding.cpp:373 +#, c-format +msgid "Mouse axis %d %s" +msgstr "Mouse axis %d %s" + +#. I18N: shown when config file is too old +#: src/input/device_manager.cpp:543 +msgid "Please re-configure your key bindings." +msgstr "Please re-configure your key bindings." + +#: src/input/device_manager.cpp:544 +msgid "Your input config file is not compatible with this version of STK." +msgstr "Your input config file is not compatible with this version of STK." + +#. I18N: Name of the black button on xbox controller +#: src/input/gamepad_config.cpp:167 +msgid "Black" +msgstr "Black" + +#. I18N: Name of the white button on xbox controller +#: src/input/gamepad_config.cpp:171 +msgid "White" +msgstr "White" + +#. I18N: name of buttons on gamepads +#. I18N: name of stick on gamepads +#: src/input/gamepad_config.cpp:179 src/input/gamepad_config.cpp:239 +msgid "Left trigger" +msgstr "Left trigger" + +#. I18N: name of buttons on gamepads +#. I18N: name of stick on gamepads +#: src/input/gamepad_config.cpp:181 src/input/gamepad_config.cpp:244 +msgid "Right thumb right" +msgstr "Right thumb right" + +#. I18N: name of buttons on gamepads +#. I18N: name of stick on gamepads +#: src/input/gamepad_config.cpp:183 src/input/gamepad_config.cpp:246 +msgid "Right thumb left" +msgstr "Right thumb left" + +#. I18N: name of buttons on gamepads +#. I18N: name of trigger on gamepads +#: src/input/gamepad_config.cpp:185 src/input/gamepad_config.cpp:240 +msgid "Right thumb down" +msgstr "Right thumb down" + +#. I18N: name of buttons on gamepads +#. I18N: name of stick on gamepads +#: src/input/gamepad_config.cpp:187 src/input/gamepad_config.cpp:242 +msgid "Right thumb up" +msgstr "Right thumb up" + +#. I18N: name of buttons on gamepads +#: src/input/gamepad_config.cpp:189 src/input/gamepad_config.cpp:248 +msgid "Right trigger" +msgstr "Right trigger" + +#. I18N: name of buttons on gamepads +#: src/input/gamepad_config.cpp:191 src/input/gamepad_config.cpp:253 +msgid "DPad right" +msgstr "DPad right" + +#. I18N: name of buttons on gamepads +#: src/input/gamepad_config.cpp:193 src/input/gamepad_config.cpp:255 +msgid "DPad left" +msgstr "DPad left" + +#. I18N: name of buttons on gamepads +#: src/input/gamepad_config.cpp:195 src/input/gamepad_config.cpp:251 +msgid "DPad down" +msgstr "DPad down" + +#. I18N: name of buttons on gamepads +#. I18N: name of trigger on gamepads +#: src/input/gamepad_config.cpp:197 src/input/gamepad_config.cpp:249 +msgid "DPad up" +msgstr "DPad up" + +#. I18N: name of buttons on gamepads +#: src/input/gamepad_config.cpp:212 +msgid "Left bumper" +msgstr "Left bumper" + +#. I18N: name of buttons on gamepads +#: src/input/gamepad_config.cpp:214 +msgid "Right bumper" +msgstr "Right bumper" + +#. I18N: name of buttons on gamepads +#: src/input/gamepad_config.cpp:218 +msgid "Start" +msgstr "Start" + +#. I18N: name of buttons on gamepads +#: src/input/gamepad_config.cpp:220 +msgid "Left thumb button" +msgstr "Left thumb button" + +#. I18N: name of buttons on gamepads +#: src/input/gamepad_config.cpp:222 +msgid "Right thumb button" +msgstr "Right thumb button" + +#. I18N: name of stick on gamepads +#: src/input/gamepad_config.cpp:231 +msgid "Left thumb right" +msgstr "Left thumb right" + +#. I18N: name of stick on gamepads +#: src/input/gamepad_config.cpp:233 +msgid "Left thumb left" +msgstr "Left thumb left" + +#. I18N: name of stick on gamepads +#: src/input/gamepad_config.cpp:235 +msgid "Left thumb down" +msgstr "Left thumb down" + +#. I18N: name of stick on gamepads +#: src/input/gamepad_config.cpp:237 +msgid "Left thumb up" +msgstr "Left thumb up" + +#: src/input/input_manager.cpp:807 +#, c-format +msgid "Ignoring '%s'. You needed to join earlier to play!" +msgstr "Ignoring '%s'. You needed to join earlier to play!" + +#: src/input/input_manager.cpp:837 +msgid "Only the Game Master may act at this point!" +msgstr "Only the Game Master may act at this point!" + +#: src/input/wiimote_manager.cpp:388 +msgid "" +"Connect your wiimote to the Bluetooth manager, then click on Ok. Detailed " +"instructions at supertuxkart.net/Wiimote" +msgstr "Connect your wiimote to the Bluetooth manager, then click on Ok. Detailed instructions at supertuxkart.net/Wiimote" + +#: src/input/wiimote_manager.cpp:391 +msgid "" +"Press the buttons 1+2 simultaneously on your wiimote to put it in discovery " +"mode, then click on Ok. Detailed instructions at supertuxkart.net/Wiimote" +msgstr "Press the buttons 1+2 simultaneously on your wiimote to put it in discovery mode, then click on Ok. Detailed instructions at supertuxkart.net/Wiimote" + +#: src/input/wiimote_manager.cpp:414 +#, c-format +msgid "Found %d wiimote" +msgid_plural "Found %d wiimotes" +msgstr[0] "Found %d wiimote" +msgstr[1] "Found %d wiimotes" + +#: src/input/wiimote_manager.cpp:419 +msgid "Could not detect any wiimote :/" +msgstr "Could not detect any wiimote :/" + +#: src/karts/controller/local_player_controller.cpp:241 +msgid "Penalty time!!" +msgstr "Penalty time!!" + +#: src/karts/controller/local_player_controller.cpp:243 +msgid "Don't accelerate before go" +msgstr "Don't accelerate before go" + +#: src/karts/controller/spare_tire_ai.cpp:147 +msgid "You can have at most 3 lives!" +msgstr "You can have at most 3 lives!" + +#: src/karts/controller/spare_tire_ai.cpp:153 +msgid "+1 life." +msgstr "+1 life." + +#: src/karts/kart.cpp:908 src/karts/kart.cpp:913 +msgid "You won the race!" +msgstr "You won the race!" + +#: src/karts/kart.cpp:913 +msgid "You finished the race!" +msgstr "You finished the race!" + +#: src/main.cpp:1501 +msgid "" +"SuperTuxKart may connect to a server to download add-ons and notify you of " +"updates. We also collect anonymous hardware statistics to help with the " +"development of STK. Please read our privacy policy at " +"http://privacy.supertuxkart.net. Would you like this feature to be enabled? " +"(To change this setting at a later time, go to options, select tab 'User " +"Interface', and edit \"Connect to the Internet\" and \"Send anonymous HW " +"statistics\")." +msgstr "SuperTuxKart may connect to a server to download add-ons and notify you of updates. We also collect anonymous hardware statistics to help with the development of STK. Please read our privacy policy at http://privacy.supertuxkart.net. Would you like this feature to be enabled? (To change this setting at a later time, go to options, select tab 'User Interface', and edit \"Connect to the Internet\" and \"Send anonymous HW statistics\")." + +#: src/main.cpp:1654 +msgid "Your screen resolution is too low to run STK." +msgstr "Your screen resolution is too low to run STK." + +#: src/main.cpp:1668 +msgid "" +"Your driver version is too old. Please install the latest video drivers." +msgstr "Your driver version is too old. Please install the latest video drivers." + +#: src/main.cpp:1685 +#, c-format +msgid "" +"Your OpenGL version appears to be too old. Please verify if an update for " +"your video driver is available. SuperTuxKart requires %s or better." +msgstr "Your OpenGL version appears to be too old. Please verify if an update for your video driver is available. SuperTuxKart requires %s or better." + +#: src/modes/easter_egg_hunt.cpp:202 +#, c-format +msgid "Eggs: %d / %d" +msgstr "Eggs: %d / %d" + +#: src/modes/follow_the_leader.cpp:62 src/modes/follow_the_leader.cpp:285 +msgid "Leader" +msgstr "Leader" + +#: src/modes/linear_world.cpp:287 +msgid "Final lap!" +msgstr "Final lap!" + +#: src/modes/linear_world.cpp:314 +#, c-format +msgid "Lap %i" +msgstr "Lap %i" + +#: src/modes/linear_world.cpp:369 +#, c-format +msgctxt "fastest_lap" +msgid "%s by %s" +msgstr "%s by %s" + +#: src/modes/linear_world.cpp:374 +msgid "New fastest lap" +msgstr "New fastest lap" + +#: src/modes/linear_world.cpp:891 +msgid "WRONG WAY!" +msgstr "WRONG WAY!" + +#: src/modes/three_strikes_battle.cpp:664 +#, c-format +msgid "%i spare tire kart has been spawned!" +msgid_plural "%i spare tire karts have been spawned!" +msgstr[0] "%i spare tire kart has been spawned!" +msgstr[1] "%i spare tire karts have been spawned!" + +#: src/modes/world.cpp:1202 +msgid "You have been eliminated!" +msgstr "You have been eliminated!" + +#: src/modes/world.cpp:1205 +#, c-format +msgid "'%s' has been eliminated." +msgstr "'%s' has been eliminated." + +#: src/network/protocols/server_lobby.cpp:318 +#, c-format +msgid "Failed to register server: %s" +msgstr "Failed to register server: %s" + +#: src/network/servers_manager.cpp:198 +msgid "No LAN server detected" +msgstr "No LAN server detected" + +#: src/online/online_player_profile.cpp:419 +#, c-format +msgid "%s is now online." +msgstr "%s is now online." + +#: src/online/online_player_profile.cpp:423 +#, c-format +msgid "%s and %s are now online." +msgstr "%s and %s are now online." + +#: src/online/online_player_profile.cpp:428 +#, c-format +msgid "%s, %s and %s are now online." +msgstr "%s, %s and %s are now online." + +#. I18N: Only used for count > 3 +#: src/online/online_player_profile.cpp:434 +#, c-format +msgid "%d friend is now online." +msgid_plural "%d friends are now online." +msgstr[0] "%d friend is now online." +msgstr[1] "%d friends are now online." + +#: src/online/online_player_profile.cpp:471 +#, c-format +msgid "You have %d new friend request!" +msgid_plural "You have %d new friend requests!" +msgstr[0] "You have %d new friend request!" +msgstr[1] "You have %d new friend requests!" + +#: src/online/online_player_profile.cpp:477 +msgid "You have a new friend request!" +msgstr "You have a new friend request!" + +#: src/online/xml_request.cpp:83 +msgid "" +"Unable to connect to the server. Check your internet connection or try again" +" later." +msgstr "Unable to connect to the server. Check your internet connection or try again later." + +#: src/race/grand_prix_data.hpp:171 +msgid "Random Grand Prix" +msgstr "Random Grand Prix" + +#: src/race/highscore_manager.cpp:101 +msgid "" +"The highscore file was too old,\n" +"all highscores have been erased." +msgstr "The highscore file was too old,\nall highscores have been erased." + +#. I18N: Game mode +#: src/race/race_manager.hpp:179 +msgid "Follow the Leader" +msgstr "Follow the Leader" + +#. I18N: Game mode +#: src/race/race_manager.hpp:181 +msgid "3 Strikes Battle" +msgstr "3 Strikes Battle" + +#. I18N: Game mode +#: src/race/race_manager.hpp:183 +msgid "Egg Hunt" +msgstr "Egg Hunt" + +#. I18N: Game mode +#: src/race/race_manager.hpp:185 +msgid "Soccer" +msgstr "Soccer" + +#: src/replay/replay_recorder.cpp:183 +msgid "Incomplete replay file will not be saved." +msgstr "Incomplete replay file will not be saved." + +#: src/replay/replay_recorder.cpp:219 +#, c-format +msgid "Replay saved in \"%s\"." +msgstr "Replay saved in \"%s\"." + +#: src/states_screens/addons_screen.cpp:50 +msgid "1 week" +msgstr "1 week" + +#: src/states_screens/addons_screen.cpp:51 +msgid "2 weeks" +msgstr "2 weeks" + +#: src/states_screens/addons_screen.cpp:52 +msgid "1 month" +msgstr "1 month" + +#: src/states_screens/addons_screen.cpp:53 +msgid "3 months" +msgstr "3 months" + +#: src/states_screens/addons_screen.cpp:54 +msgid "6 months" +msgstr "6 months" + +#: src/states_screens/addons_screen.cpp:55 +msgid "9 months" +msgstr "9 months" + +#: src/states_screens/addons_screen.cpp:56 +msgid "1 year" +msgstr "1 year" + +#: src/states_screens/addons_screen.cpp:57 +msgid "2 years" +msgstr "2 years" + +#: src/states_screens/addons_screen.cpp:115 +msgid "Add-on name" +msgstr "Add-on name" + +#: src/states_screens/addons_screen.cpp:116 +msgid "Updated date" +msgstr "Updated date" + +#: src/states_screens/addons_screen.cpp:147 +msgid "" +"Access to the Internet is disabled. (To enable it, go to options and select " +"tab 'User Interface')" +msgstr "Access to the Internet is disabled. (To enable it, go to options and select tab 'User Interface')" + +#. I18N: as in: The Old Island by Johannes Sjolund +#: src/states_screens/addons_screen.cpp:343 +#, c-format +msgctxt "addons" +msgid "%s by %s" +msgstr "%s by %s" + +#: src/states_screens/addons_screen.cpp:474 +msgid "Please wait while addons are updated" +msgstr "Please wait while addons are updated" + +#: src/states_screens/addons_screen.cpp:551 +#: src/states_screens/main_menu_screen.cpp:571 +msgid "" +"Sorry, an error occurred while contacting the add-ons website. Make sure you" +" are connected to the Internet and that SuperTuxKart is not blocked by a " +"firewall" +msgstr "Sorry, an error occurred while contacting the add-ons website. Make sure you are connected to the Internet and that SuperTuxKart is not blocked by a firewall" + +#. I18N: arena group name +#. I18N: track group name +#. I18N: kart group name +#. I18N: track group name +#: src/states_screens/arenas_screen.cpp:81 +#: src/states_screens/easter_egg_screen.cpp:143 +#: src/states_screens/kart_selection.cpp:285 +#: src/states_screens/tracks_and_gp_screen.cpp:146 +msgid "standard" +msgstr "standard" + +#: src/states_screens/arenas_screen.cpp:275 +#: src/states_screens/arenas_screen.cpp:327 +#: src/states_screens/easter_egg_screen.cpp:225 +#: src/states_screens/easter_egg_screen.cpp:256 +#: src/states_screens/kart_selection.cpp:864 +#: src/states_screens/kart_selection.cpp:1481 +#: src/states_screens/race_setup_screen.cpp:99 +msgid "Locked : solve active challenges to gain access to more!" +msgstr "Locked : solve active challenges to gain access to more!" + +#: src/states_screens/arenas_screen.cpp:339 +msgid "Random Arena" +msgstr "Random Arena" + +#: src/states_screens/arenas_screen.cpp:343 +#, c-format +msgid "%d arena unavailable in single player." +msgid_plural "%d arenas unavailable in single player." +msgstr[0] "%d arena unavailable in single player." +msgstr[1] "%d arenas unavailable in single player." + +#: src/states_screens/create_server_screen.cpp:82 +msgid "Create LAN Server" +msgstr "Create LAN Server" + +#: src/states_screens/create_server_screen.cpp:87 +#, c-format +msgid "%s's server" +msgstr "%s's server" + +#: src/states_screens/create_server_screen.cpp:154 +msgid "Creating server" +msgstr "Creating server" + +#: src/states_screens/create_server_screen.cpp:181 +msgid "Name has to be between 4 and 30 characters long!" +msgstr "Name has to be between 4 and 30 characters long!" + +#: src/states_screens/create_server_screen.cpp:188 +msgid "The maxinum number of players has to be between 2 and 12." +msgstr "The maxinum number of players has to be between 2 and 12." + +#: src/states_screens/credits.cpp:180 +msgid "translator-credits" +msgstr "translator-credits" + +#: src/states_screens/dialogs/addons_loading.cpp:97 +msgid "Update" +msgstr "Update" + +#: src/states_screens/dialogs/addons_loading.cpp:109 +#, c-format +msgid "Version: %d" +msgstr "Version: %d" + +#: src/states_screens/dialogs/addons_loading.cpp:140 +msgid "featured" +msgstr "featured" + +#: src/states_screens/dialogs/addons_loading.cpp:166 +#, c-format +msgid "%s MB" +msgstr "%s MB" + +#: src/states_screens/dialogs/addons_loading.cpp:173 +#: src/states_screens/dialogs/addons_loading.cpp:177 +#, c-format +msgid "%s KB" +msgstr "%s KB" + +#: src/states_screens/dialogs/addons_loading.cpp:178 +#, c-format +msgid "Size: %s" +msgstr "Size: %s" + +#: src/states_screens/dialogs/addons_loading.cpp:280 +msgid "Sorry, downloading the add-on failed" +msgstr "Sorry, downloading the add-on failed" + +#: src/states_screens/dialogs/addons_loading.cpp:361 +#, c-format +msgid "Problems installing the addon '%s'." +msgstr "Problems installing the addon '%s'." + +#: src/states_screens/dialogs/addons_loading.cpp:372 +#: src/states_screens/dialogs/addons_loading.cpp:409 +msgid "Try again" +msgstr "Try again" + +#: src/states_screens/dialogs/addons_loading.cpp:398 +#, c-format +msgid "Problems removing the addon '%s'." +msgstr "Problems removing the addon '%s'." + +#: src/states_screens/dialogs/add_device_dialog.cpp:64 +msgid "" +"To add a new Gamepad/Joystick device, simply start SuperTuxKart with it connected and it will appear in the list.\n" +"\n" +"To add a keyboard config, you can use the button below, HOWEVER please note that most keyboards only support a limited amount of simultaneous keypresses and are thus inappropriate for multiplayer gameplay. (You can, however, connect multiple keyboards to the computer. Remember that everyone still needs different keybindings in this case.)" +msgstr "To add a new Gamepad/Joystick device, simply start SuperTuxKart with it connected and it will appear in the list.\n\nTo add a keyboard config, you can use the button below, HOWEVER please note that most keyboards only support a limited amount of simultaneous keypresses and are thus inappropriate for multiplayer gameplay. (You can, however, connect multiple keyboards to the computer. Remember that everyone still needs different keybindings in this case.)" + +#. I18N: In the 'add new input device' dialog +#: src/states_screens/dialogs/add_device_dialog.cpp:90 +msgid "Add Wiimote" +msgstr "Add Wiimote" + +#. I18N: In the 'add new input device' dialog +#: src/states_screens/dialogs/add_device_dialog.cpp:111 +msgid "Add Keyboard Configuration" +msgstr "Add Keyboard Configuration" + +#: src/states_screens/dialogs/change_password_dialog.cpp:134 +msgid "Current password invalid." +msgstr "Current password invalid." + +#: src/states_screens/dialogs/change_password_dialog.cpp:140 +#: src/states_screens/register_screen.cpp:289 +msgid "Password has to be between 8 and 30 characters long!" +msgstr "Password has to be between 8 and 30 characters long!" + +#: src/states_screens/dialogs/change_password_dialog.cpp:147 +#: src/states_screens/register_screen.cpp:273 +msgid "Passwords don't match!" +msgstr "Passwords don't match!" + +#: src/states_screens/dialogs/change_password_dialog.cpp:210 +msgid "Password successfully changed." +msgstr "Password successfully changed." + +#: src/states_screens/dialogs/change_password_dialog.cpp:235 +#: src/states_screens/dialogs/recovery_dialog.cpp:209 +#: src/states_screens/register_screen.cpp:354 +msgid "Validating info" +msgstr "Validating info" + +#. I18N: In the 'confirm resolution' dialog, that's shown when switching +#. resoluton +#: src/states_screens/dialogs/confirm_resolution_dialog.cpp:82 +#, c-format +msgid "Confirm resolution within %i second" +msgid_plural "Confirm resolution within %i seconds" +msgstr[0] "Confirm resolution within %i second" +msgstr[1] "Confirm resolution within %i seconds" + +#. I18N: Geometry level disabled : lowest level, no details +#. I18N: in the graphical options tooltip; +#. indicates a graphical feature is disabled +#: src/states_screens/dialogs/custom_video_settings.cpp:66 +#: src/states_screens/dialogs/custom_video_settings.cpp:72 +#: src/states_screens/dialogs/custom_video_settings.cpp:84 +#: src/states_screens/dialogs/custom_video_settings.cpp:101 +#: src/states_screens/dialogs/multitouch_settings_dialog.cpp:59 +#: src/states_screens/options_screen_video.cpp:454 +msgid "Disabled" +msgstr "Disabled" + +#. I18N: if only important animated scenery is enabled +#: src/states_screens/dialogs/custom_video_settings.cpp:67 +#: src/states_screens/options_screen_video.cpp:462 +msgid "Important only" +msgstr "Important only" + +#. I18N: animations setting (only karts with human players are animated) +#: src/states_screens/dialogs/custom_video_settings.cpp:74 +msgid "Human players only" +msgstr "Human players only" + +#: src/states_screens/dialogs/custom_video_settings.cpp:77 +msgid "Enabled for all" +msgstr "Enabled for all" + +#. I18N: Geometry level low : few details are displayed +#. I18N: in the graphical options tooltip; +#. indicates the rendered image quality is low +#: src/states_screens/dialogs/custom_video_settings.cpp:86 +#: src/states_screens/dialogs/custom_video_settings.cpp:95 +#: src/states_screens/dialogs/custom_video_settings.cpp:102 +#: src/states_screens/options_screen_video.cpp:469 +msgid "Low" +msgstr "Low" + +#. I18N: Geometry level high : everything is displayed +#. I18N: in the graphical options tooltip; +#. indicates the rendered image quality is high +#: src/states_screens/dialogs/custom_video_settings.cpp:88 +#: src/states_screens/dialogs/custom_video_settings.cpp:96 +#: src/states_screens/dialogs/custom_video_settings.cpp:103 +#: src/states_screens/options_screen_video.cpp:472 +msgid "High" +msgstr "High" + +#. I18N: in the graphical options tooltip; +#. indicates the rendered image quality is very low +#: src/states_screens/dialogs/custom_video_settings.cpp:94 +#: src/states_screens/options_screen_video.cpp:466 +msgid "Very Low" +msgstr "Very Low" + +#. I18N: in the graphical options tooltip; +#. indicates the rendered image quality is very high +#: src/states_screens/dialogs/custom_video_settings.cpp:97 +#: src/states_screens/options_screen_video.cpp:475 +msgid "Very High" +msgstr "Very High" + +#: src/states_screens/dialogs/message_dialog.cpp:129 +#: src/states_screens/edit_gp_screen.cpp:257 +#: src/states_screens/ghost_replay_selection.cpp:117 +msgid "No" +msgstr "No" + +#: src/states_screens/dialogs/multitouch_settings_dialog.cpp:60 +msgid "Tablet" +msgstr "Tablet" + +#: src/states_screens/dialogs/multitouch_settings_dialog.cpp:61 +msgid "Phone" +msgstr "Phone" + +#: src/states_screens/dialogs/recovery_dialog.cpp:121 +msgid "Username and/or email address invalid." +msgstr "Username and/or email address invalid." + +#: src/states_screens/dialogs/registration_dialog.cpp:42 +#, c-format +msgid "" +"Please read the terms and conditions for SuperTuxKart at '%s'. You must " +"agree to these terms in order to register an account for STK. By checking " +"the box below, you are confirming that you understand these terms. If you " +"have any questions or comments regarding these terms, one of the members of " +"the development team would gladly assist you." +msgstr "Please read the terms and conditions for SuperTuxKart at '%s'. You must agree to these terms in order to register an account for STK. By checking the box below, you are confirming that you understand these terms. If you have any questions or comments regarding these terms, one of the members of the development team would gladly assist you." + +#: src/states_screens/dialogs/select_challenge.cpp:52 +#, c-format +msgid "Required Rank: %i" +msgstr "Required Rank: %i" + +#: src/states_screens/dialogs/select_challenge.cpp:57 +#, c-format +msgid "Required Time: %i" +msgstr "Required Time: %i" + +#: src/states_screens/dialogs/select_challenge.cpp:63 +#, c-format +msgid "Required Nitro Points: %i" +msgstr "Required Nitro Points: %i" + +#: src/states_screens/dialogs/select_challenge.cpp:69 +#, c-format +msgid "Number of AI Karts: %i" +msgstr "Number of AI Karts: %i" + +#: src/states_screens/dialogs/select_challenge.cpp:149 +msgid "Nitro challenge" +msgstr "Nitro challenge" + +#: src/states_screens/dialogs/select_challenge.cpp:151 +#: src/states_screens/race_setup_screen.cpp:136 +msgid "Ghost replay race" +msgstr "Ghost replay race" + +#: src/states_screens/dialogs/server_info_dialog.cpp:75 +msgid "Server successfully created. You can now join it." +msgstr "Server successfully created. You can now join it." + +#: src/states_screens/dialogs/user_info_dialog.cpp:56 +msgid "Cancel Request" +msgstr "Cancel Request" + +#: src/states_screens/dialogs/user_info_dialog.cpp:154 +#: src/states_screens/dialogs/user_info_dialog.cpp:211 +msgid "Today" +msgstr "Today" + +#: src/states_screens/dialogs/user_info_dialog.cpp:158 +msgid "Friend request sent!" +msgstr "Friend request sent!" + +#: src/states_screens/dialogs/user_info_dialog.cpp:215 +msgid "Friend request accepted!" +msgstr "Friend request accepted!" + +#: src/states_screens/dialogs/user_info_dialog.cpp:267 +msgid "Friend request declined!" +msgstr "Friend request declined!" + +#: src/states_screens/dialogs/user_info_dialog.cpp:313 +msgid "Friend removed!" +msgstr "Friend removed!" + +#: src/states_screens/dialogs/user_info_dialog.cpp:364 +msgid "Friend request cancelled!" +msgstr "Friend request cancelled!" + +#: src/states_screens/dialogs/user_info_dialog.cpp:474 +msgid "Processing" +msgstr "Processing" + +#: src/states_screens/dialogs/vote_dialog.cpp:171 +msgid "Fetching last vote" +msgstr "Fetching last vote" + +#: src/states_screens/dialogs/vote_dialog.cpp:190 +msgid "You can adapt your previous rating by clicking the stars beneath." +msgstr "You can adapt your previous rating by clicking the stars beneath." + +#: src/states_screens/dialogs/vote_dialog.cpp:195 +msgid "" +"You have not yet voted for this addon. Select your desired rating by " +"clicking the stars beneath" +msgstr "You have not yet voted for this addon. Select your desired rating by clicking the stars beneath" + +#: src/states_screens/dialogs/vote_dialog.cpp:230 +msgid "Vote successful! You can now close the window." +msgstr "Vote successful! You can now close the window." + +#: src/states_screens/dialogs/vote_dialog.cpp:247 +msgid "Performing vote" +msgstr "Performing vote" + +#: src/states_screens/easter_egg_screen.cpp:270 +#: src/states_screens/tracks_and_gp_screen.cpp:292 +#: src/states_screens/tracks_screen.cpp:241 +msgid "Random Track" +msgstr "Random Track" + +#: src/states_screens/edit_gp_screen.cpp:66 +#: src/states_screens/ghost_replay_selection.cpp:77 +msgid "Track" +msgstr "Track" + +#: src/states_screens/edit_gp_screen.cpp:67 +#: src/states_screens/ghost_replay_selection.cpp:81 +msgid "Laps" +msgstr "Laps" + +#: src/states_screens/edit_gp_screen.cpp:68 +msgid "Reversed" +msgstr "Reversed" + +#: src/states_screens/edit_gp_screen.cpp:124 +#: src/states_screens/ghost_replay_selection.cpp:177 +#: src/states_screens/grand_prix_editor_screen.cpp:112 +#, c-format +msgid "Are you sure you want to remove '%s'?" +msgstr "Are you sure you want to remove '%s'?" + +#: src/states_screens/edit_gp_screen.cpp:141 +msgid "Do you want to save your changes?" +msgstr "Do you want to save your changes?" + +#. I18N: Indicate that the grand prix is modified and not saved +#: src/states_screens/edit_gp_screen.cpp:286 +#, c-format +msgid "%s (+)" +msgstr "%s (+)" + +#: src/states_screens/edit_gp_screen.cpp:325 +msgid "An error occurred while trying to save your grand prix." +msgstr "An error occurred while trying to save your grand prix." + +#: src/states_screens/edit_track_screen.cpp:235 +msgid "Select a track" +msgstr "Select a track" + +#: src/states_screens/feature_unlocked.cpp:201 +#, c-format +msgid "You completed the easy challenge! Points earned on this level: %i/%i" +msgstr "You completed the easy challenge! Points earned on this level: %i/%i" + +#: src/states_screens/feature_unlocked.cpp:205 +#, c-format +msgid "" +"You completed the intermediate challenge! Points earned on this level: %i/%i" +msgstr "You completed the intermediate challenge! Points earned on this level: %i/%i" + +#: src/states_screens/feature_unlocked.cpp:209 +#, c-format +msgid "" +"You completed the difficult challenge! Points earned on this level: %i/%i" +msgstr "You completed the difficult challenge! Points earned on this level: %i/%i" + +#: src/states_screens/feature_unlocked.cpp:494 +msgid "Challenge Completed" +msgstr "Challenge Completed" + +#: src/states_screens/feature_unlocked.cpp:531 +msgid "You unlocked track %0" +msgstr "You unlocked track %0" + +#: src/states_screens/feature_unlocked.cpp:569 +msgid "You unlocked grand prix %0" +msgstr "You unlocked grand prix %0" + +#: src/states_screens/ghost_replay_selection.cpp:82 +msgid "Finish Time" +msgstr "Finish Time" + +#: src/states_screens/ghost_replay_selection.cpp:83 +msgid "User" +msgstr "User" + +#: src/states_screens/gp_info_screen.cpp:74 +msgid "Default" +msgstr "Default" + +#. I18N: if no kart animations are enabled +#: src/states_screens/gp_info_screen.cpp:75 +#: src/states_screens/options_screen_video.cpp:460 +msgid "None" +msgstr "None" + +#: src/states_screens/gp_info_screen.cpp:77 +msgid "Random" +msgstr "Random" + +#: src/states_screens/gp_info_screen.cpp:154 +#: src/states_screens/gp_info_screen.cpp:179 +msgid "Reload" +msgstr "Reload" + +#: src/states_screens/grand_prix_cutscene.cpp:75 +#: src/states_screens/grand_prix_editor_screen.cpp:101 +#: src/states_screens/grand_prix_editor_screen.cpp:118 +msgid "Please enter the name of the grand prix" +msgstr "Please enter the name of the grand prix" + +#: src/states_screens/grand_prix_editor_screen.cpp:169 +msgid "Please select a Grand Prix" +msgstr "Please select a Grand Prix" + +#: src/states_screens/grand_prix_editor_screen.cpp:338 +msgid "User defined" +msgstr "User defined" + +#: src/states_screens/grand_prix_editor_screen.cpp:351 +msgid "Name is empty." +msgstr "Name is empty." + +#: src/states_screens/grand_prix_editor_screen.cpp:359 +msgid "Another grand prix with this name already exists." +msgstr "Another grand prix with this name already exists." + +#: src/states_screens/grand_prix_editor_screen.cpp:365 +msgid "Name is too long." +msgstr "Name is too long." + +#. I18N: when failing a GP +#: src/states_screens/grand_prix_lose.cpp:155 +msgid "Better luck next time!" +msgstr "Better luck next time!" + +#: src/states_screens/grand_prix_win.cpp:166 +#: src/states_screens/race_result_gui.cpp:194 +msgid "You completed a challenge!" +msgstr "You completed a challenge!" + +#: src/states_screens/grand_prix_win.cpp:322 +msgid "You completed the Grand Prix!" +msgstr "You completed the Grand Prix!" + +#: src/states_screens/kart_selection.cpp:843 +#: src/states_screens/kart_selection.cpp:1499 +msgid "Random Kart" +msgstr "Random Kart" + +#: src/states_screens/kart_selection.cpp:859 +msgid "Locked" +msgstr "Locked" + +#: src/states_screens/kart_selection.cpp:961 +msgid "" +"Everyone:\n" +"Press the 'Select' button to join the game" +msgstr "Everyone:\nPress the 'Select' button to join the game" + +#: src/states_screens/main_menu_screen.cpp:510 +msgid "" +"You can not play online without internet access. If you want to play online," +" go to options, select tab 'User Interface', and edit \"Connect to the " +"Internet\"." +msgstr "You can not play online without internet access. If you want to play online, go to options, select tab 'User Interface', and edit \"Connect to the Internet\"." + +#: src/states_screens/main_menu_screen.cpp:534 +msgid "" +"You can not download addons without internet access. If you want to download" +" addons, go to options, select tab 'User Interface', and edit \"Connect to " +"the Internet\"." +msgstr "You can not download addons without internet access. If you want to download addons, go to options, select tab 'User Interface', and edit \"Connect to the Internet\"." + +#: src/states_screens/main_menu_screen.cpp:566 +msgid "The add-ons module is currently disabled in the Options screen" +msgstr "The add-ons module is currently disabled in the Options screen" + +#: src/states_screens/main_menu_screen.cpp:578 +msgid "Please wait while the add-ons are loading" +msgstr "Please wait while the add-ons are loading" + +#: src/states_screens/online_profile_achievements.cpp:79 +msgid "Progress" +msgstr "Progress" + +#: src/states_screens/online_profile_achievements.cpp:131 +#: src/states_screens/online_profile_achievements.cpp:171 +msgid "Fetching achievements" +msgstr "Fetching achievements" + +#: src/states_screens/online_profile_base.cpp:117 +#: src/states_screens/online_profile_base.cpp:127 +msgid "Your profile" +msgstr "Your profile" + +#: src/states_screens/online_profile_base.cpp:120 +#, c-format +msgid "%s's profile" +msgstr "%s's profile" + +#: src/states_screens/online_profile_friends.cpp:75 +msgid "Since" +msgstr "Since" + +#: src/states_screens/online_profile_friends.cpp:76 +msgid "Status" +msgstr "Status" + +#: src/states_screens/online_profile_friends.cpp:96 +#: src/states_screens/online_profile_friends.cpp:247 +msgid "Fetching friends" +msgstr "Fetching friends" + +#: src/states_screens/online_profile_friends.cpp:218 +msgid "New Request" +msgstr "New Request" + +#: src/states_screens/online_profile_friends.cpp:219 +msgid "Pending" +msgstr "Pending" + +#: src/states_screens/online_profile_friends.cpp:223 +msgid "Offline" +msgstr "Offline" + +#: src/states_screens/online_user_search.cpp:207 +#: src/states_screens/online_user_search.cpp:271 +msgid "Searching" +msgstr "Searching" + +#: src/states_screens/options_screen_device.cpp:71 +msgid "Action" +msgstr "Action" + +#: src/states_screens/options_screen_device.cpp:72 +msgid "Key binding" +msgstr "Key binding" + +#. I18N: button to disable a gamepad configuration +#: src/states_screens/options_screen_device.cpp:96 +#: src/states_screens/options_screen_device.cpp:579 +msgid "Disable Device" +msgstr "Disable Device" + +#. I18N: button to enable a gamepad configuration +#: src/states_screens/options_screen_device.cpp:98 +#: src/states_screens/options_screen_device.cpp:580 +msgid "Enable Device" +msgstr "Enable Device" + +#. I18N: Key binding section +#: src/states_screens/options_screen_device.cpp:137 +msgid "Game Keys" +msgstr "Game Keys" + +#. I18N: Key binding section +#: src/states_screens/options_screen_device.cpp:151 +msgid "Menu Keys" +msgstr "Menu Keys" + +#. I18N: Key binding name +#: src/states_screens/options_screen_device.cpp:218 +msgid "Steer Left" +msgstr "Steer Left" + +#. I18N: Key binding name +#: src/states_screens/options_screen_device.cpp:221 +msgid "Steer Right" +msgstr "Steer Right" + +#. I18N: Key binding name +#: src/states_screens/options_screen_device.cpp:224 +msgid "Accelerate" +msgstr "Accelerate" + +#. I18N: Key binding name +#: src/states_screens/options_screen_device.cpp:227 +msgid "Brake" +msgstr "Brake" + +#. I18N: Key binding name +#: src/states_screens/options_screen_device.cpp:230 +msgid "Fire" +msgstr "Fire" + +#. I18N: Key binding name +#: src/states_screens/options_screen_device.cpp:233 +msgid "Nitro" +msgstr "Nitro" + +#. I18N: Key binding name +#: src/states_screens/options_screen_device.cpp:236 +msgid "Skidding" +msgstr "Skidding" + +#. I18N: Key binding name +#: src/states_screens/options_screen_device.cpp:239 +msgid "Look Back" +msgstr "Look Back" + +#. I18N: Key binding name +#: src/states_screens/options_screen_device.cpp:242 +msgid "Rescue" +msgstr "Rescue" + +#. I18N: Key binding name +#: src/states_screens/options_screen_device.cpp:245 +msgid "Pause Game" +msgstr "Pause Game" + +#. I18N: Key binding name +#: src/states_screens/options_screen_device.cpp:250 +msgid "Up" +msgstr "Up" + +#. I18N: Key binding name +#: src/states_screens/options_screen_device.cpp:253 +msgid "Down" +msgstr "Down" + +#. I18N: Key binding name +#: src/states_screens/options_screen_device.cpp:256 +msgid "Left" +msgstr "Left" + +#. I18N: Key binding name +#: src/states_screens/options_screen_device.cpp:259 +msgid "Right" +msgstr "Right" + +#. I18N: Key binding name +#: src/states_screens/options_screen_device.cpp:262 +msgid "Select" +msgstr "Select" + +#. I18N: Key binding name +#: src/states_screens/options_screen_device.cpp:265 +msgid "Cancel/Back" +msgstr "Cancel/Back" + +#: src/states_screens/options_screen_device.cpp:360 +msgid "* A blue item means a conflict with another configuration" +msgstr "* A blue item means a conflict with another configuration" + +#: src/states_screens/options_screen_device.cpp:365 +msgid "* A red item means a conflict in the current configuration" +msgstr "* A red item means a conflict in the current configuration" + +#: src/states_screens/options_screen_device.cpp:471 +msgid "" +"Warning: The 'Shift' is not a recommended key. When 'Shift' is pressed down," +" all keys that contain a character that is different in upper-case will stop" +" working." +msgstr "Warning: The 'Shift' is not a recommended key. When 'Shift' is pressed down, all keys that contain a character that is different in upper-case will stop working." + +#. I18N: shown before deleting an input configuration +#: src/states_screens/options_screen_device.cpp:567 +msgid "Are you sure you want to permanently delete this configuration?" +msgstr "Are you sure you want to permanently delete this configuration?" + +#: src/states_screens/options_screen_input.cpp:100 +#, c-format +msgid "Keyboard %i" +msgstr "Keyboard %i" + +#: src/states_screens/options_screen_input.cpp:138 +msgid "Touch Device" +msgstr "Touch Device" + +#: src/states_screens/options_screen_ui.cpp:159 +msgid "" +"In multiplayer mode, players can select handicapped (more difficult) " +"profiles on the kart selection screen" +msgstr "In multiplayer mode, players can select handicapped (more difficult) profiles on the kart selection screen" + +#. I18N: in the language choice, to select the same language as the OS +#: src/states_screens/options_screen_ui.cpp:191 +msgid "System Language" +msgstr "System Language" + +#. I18N: custom video settings +#: src/states_screens/options_screen_video.cpp:433 +msgid "Custom" +msgstr "Custom" + +#. I18N: if some kart animations are enabled +#: src/states_screens/options_screen_video.cpp:458 +msgid "Me Only" +msgstr "Me Only" + +#. I18N: in graphical options +#. tooltip = tooltip + L"\n" + _("Pixel shaders: %s", +#. UserConfigParams::m_pixel_shaders ? enabled : disabled); +#. I18N: in graphical options +#: src/states_screens/options_screen_video.cpp:481 +#, c-format +msgid "Animated Scenery: %s" +msgstr "Animated Scenery: %s" + +#. I18N: in graphical options +#: src/states_screens/options_screen_video.cpp:487 +#, c-format +msgid "Weather Effects: %s" +msgstr "Weather Effects: %s" + +#. I18N: in graphical options +#: src/states_screens/options_screen_video.cpp:490 +#, c-format +msgid "Animated Characters: %s" +msgstr "Animated Characters: %s" + +#. I18N: in graphical options +#: src/states_screens/options_screen_video.cpp:495 +#, c-format +msgid "Dynamic lights: %s" +msgstr "Dynamic lights: %s" + +#. I18N: in graphical options +#: src/states_screens/options_screen_video.cpp:498 +#, c-format +msgid "Motion blur: %s" +msgstr "Motion blur: %s" + +#. I18N: in graphical options +#: src/states_screens/options_screen_video.cpp:501 +#, c-format +msgid "Anti-aliasing: %s" +msgstr "Anti-aliasing: %s" + +#. I18N: in graphical options +#: src/states_screens/options_screen_video.cpp:504 +#, c-format +msgid "Ambient occlusion: %s" +msgstr "Ambient occlusion: %s" + +#: src/states_screens/options_screen_video.cpp:508 +#, c-format +msgid "Shadows: %s" +msgstr "Shadows: %s" + +#: src/states_screens/options_screen_video.cpp:510 +#, c-format +msgid "Shadows: %i" +msgstr "Shadows: %i" + +#. I18N: in graphical options +#: src/states_screens/options_screen_video.cpp:513 +#, c-format +msgid "Bloom: %s" +msgstr "Bloom: %s" + +#. I18N: in graphical options +#: src/states_screens/options_screen_video.cpp:517 +#, c-format +msgid "Glow (outlines): %s" +msgstr "Glow (outlines): %s" + +#. I18N: in graphical options +#: src/states_screens/options_screen_video.cpp:521 +#, c-format +msgid "Light shaft (God rays): %s" +msgstr "Light shaft (God rays): %s" + +#. I18N: in graphical options +#: src/states_screens/options_screen_video.cpp:525 +#, c-format +msgid "Depth of field: %s" +msgstr "Depth of field: %s" + +#. I18N: in graphical options +#: src/states_screens/options_screen_video.cpp:529 +#, c-format +msgid "Global illumination: %s" +msgstr "Global illumination: %s" + +#: src/states_screens/options_screen_video.cpp:534 +#, c-format +msgid "Rendered image quality: %s" +msgstr "Rendered image quality: %s" + +#: src/states_screens/race_gui.cpp:358 src/states_screens/race_gui.cpp:360 +msgid "Challenge Failed" +msgstr "Challenge Failed" + +#. I18N: as in "ready, set, go", shown at the beginning of the race +#: src/states_screens/race_gui_base.cpp:65 +msgid "Ready!" +msgstr "Ready!" + +#. I18N: as in "ready, set, go", shown at the beginning of the race +#: src/states_screens/race_gui_base.cpp:67 +msgid "Set!" +msgstr "Set!" + +#. I18N: as in "ready, set, go", shown at the beginning of the race +#: src/states_screens/race_gui_base.cpp:69 +msgid "Go!" +msgstr "Go!" + +#. I18N: Shown when a goal is scored +#: src/states_screens/race_gui_base.cpp:71 +msgid "GOAL!" +msgstr "GOAL!" + +#. I18N: string used to show the author of the music. (e.g. "Sunny Song" by +#. "John Doe") +#: src/states_screens/race_gui_base.cpp:517 +msgid "by" +msgstr "by" + +#: src/states_screens/race_gui_base.cpp:626 +msgid "Collect nitro!" +msgstr "Collect nitro!" + +#: src/states_screens/race_gui_base.cpp:628 +msgid "Follow the leader!" +msgstr "Follow the leader!" + +#. I18N: When some GlobalPlayerIcons are hidden, write "Top 10" to show it +#: src/states_screens/race_gui_base.cpp:806 +#, c-format +msgid "Top %i" +msgstr "Top %i" + +#. I18N: Shown at the end of a race +#: src/states_screens/race_gui_overworld.cpp:143 +msgid "Lap" +msgstr "Lap" + +#: src/states_screens/race_gui_overworld.cpp:144 +msgid "Rank" +msgstr "Rank" + +#: src/states_screens/race_gui_overworld.cpp:518 +msgid "Press fire to start the tutorial" +msgstr "Press fire to start the tutorial" + +#: src/states_screens/race_gui_overworld.cpp:557 +msgid "Type: Grand Prix" +msgstr "Type: Grand Prix" + +#: src/states_screens/race_gui_overworld.cpp:594 +msgid "Press fire to start the challenge" +msgstr "Press fire to start the challenge" + +#: src/states_screens/race_result_gui.cpp:175 +msgid "Continue." +msgstr "Continue." + +#: src/states_screens/race_result_gui.cpp:178 +msgid "Quit the server." +msgstr "Quit the server." + +#: src/states_screens/race_result_gui.cpp:195 +msgid "You completed challenges!" +msgstr "You completed challenges!" + +#: src/states_screens/race_result_gui.cpp:208 +msgid "Abort Grand Prix" +msgstr "Abort Grand Prix" + +#: src/states_screens/race_result_gui.cpp:218 +msgid "Restart" +msgstr "Restart" + +#: src/states_screens/race_result_gui.cpp:224 +msgid "Back to challenge selection" +msgstr "Back to challenge selection" + +#: src/states_screens/race_result_gui.cpp:230 +msgid "Back to the menu" +msgstr "Back to the menu" + +#: src/states_screens/race_result_gui.cpp:372 +msgid "Do you really want to abort the Grand Prix?" +msgstr "Do you really want to abort the Grand Prix?" + +#: src/states_screens/race_result_gui.cpp:499 +#: src/states_screens/race_result_gui.cpp:865 +msgid "Eliminated" +msgstr "Eliminated" + +#: src/states_screens/race_result_gui.cpp:1012 +msgid "Red Team Wins" +msgstr "Red Team Wins" + +#: src/states_screens/race_result_gui.cpp:1016 +msgid "Blue Team Wins" +msgstr "Blue Team Wins" + +#: src/states_screens/race_result_gui.cpp:1021 +msgid "It's a draw" +msgstr "It's a draw" + +#. I18N: indicates a player that scored in their own goal in result screen +#: src/states_screens/race_result_gui.cpp:1098 +#: src/states_screens/race_result_gui.cpp:1154 +msgid "(Own Goal)" +msgstr "(Own Goal)" + +#: src/states_screens/race_result_gui.cpp:1220 +#, c-format +msgid "Track %i/%i" +msgstr "Track %i/%i" + +#: src/states_screens/race_result_gui.cpp:1304 +msgid "Grand Prix progress:" +msgstr "Grand Prix progress:" + +#: src/states_screens/race_result_gui.cpp:1346 +msgid "Highscores" +msgstr "Highscores" + +#: src/states_screens/race_result_gui.cpp:1432 +#, c-format +msgid "Difficulty: %s" +msgstr "Difficulty: %s" + +#: src/states_screens/race_result_gui.cpp:1440 +#, c-format +msgid "Best lap time: %s" +msgstr "Best lap time: %s" + +#: src/states_screens/race_setup_screen.cpp:87 +msgid "All blows allowed, so catch weapons and make clever use of them!" +msgstr "All blows allowed, so catch weapons and make clever use of them!" + +#: src/states_screens/race_setup_screen.cpp:94 +msgid "Contains no powerups, so only your driving skills matter!" +msgstr "Contains no powerups, so only your driving skills matter!" + +#. I18N: short definition for follow-the-leader game mode +#: src/states_screens/race_setup_screen.cpp:107 +msgid "Keep up with the leader kart but don't overtake it!" +msgstr "Keep up with the leader kart but don't overtake it!" + +#: src/states_screens/race_setup_screen.cpp:114 +msgid "Hit others with weapons until they lose all their lives." +msgstr "Hit others with weapons until they lose all their lives." + +#: src/states_screens/race_setup_screen.cpp:119 +msgid "Push the ball into the opposite cage to score goals." +msgstr "Push the ball into the opposite cage to score goals." + +#: src/states_screens/race_setup_screen.cpp:129 +msgid "Explore tracks to find all hidden eggs" +msgstr "Explore tracks to find all hidden eggs" + +#: src/states_screens/race_setup_screen.cpp:137 +msgid "Race against ghost karts and try to beat them!" +msgstr "Race against ghost karts and try to beat them!" + +#: src/states_screens/register_screen.cpp:218 +#: src/states_screens/register_screen.cpp:225 +#, c-format +msgid "Could not create player '%s'." +msgstr "Could not create player '%s'." + +#: src/states_screens/register_screen.cpp:277 +msgid "Emails don't match!" +msgstr "Emails don't match!" + +#: src/states_screens/register_screen.cpp:281 +msgid "Online username has to be between 3 and 30 characters long!" +msgstr "Online username has to be between 3 and 30 characters long!" + +#: src/states_screens/register_screen.cpp:285 +msgid "Online username must not start with a number!" +msgstr "Online username must not start with a number!" + +#: src/states_screens/register_screen.cpp:293 +msgid "Email has to be between 5 and 254 characters long!" +msgstr "Email has to be between 5 and 254 characters long!" + +#: src/states_screens/register_screen.cpp:299 +msgid "Email is invalid!" +msgstr "Email is invalid!" + +#: src/states_screens/register_screen.cpp:362 +msgid "" +"You will receive an email with further instructions regarding account " +"activation. Please be patient and be sure to check your spam folder." +msgstr "You will receive an email with further instructions regarding account activation. Please be patient and be sure to check your spam folder." + +#: src/states_screens/register_screen.cpp:402 +#: src/states_screens/user_screen.cpp:338 +msgid "Internet access is disabled, please enable it in the options" +msgstr "Internet access is disabled, please enable it in the options" + +#: src/states_screens/server_selection.cpp:79 +#: src/states_screens/server_selection.cpp:247 +msgid "Fetching servers" +msgstr "Fetching servers" + +#. I18N: track group name +#: src/states_screens/tracks_and_gp_screen.cpp:144 +msgid "all" +msgstr "all" + +#: src/states_screens/tracks_and_gp_screen.cpp:195 +msgid "Locked!" +msgstr "Locked!" + +#: src/states_screens/tracks_and_gp_screen.cpp:278 +#: src/states_screens/tracks_screen.cpp:227 +msgid "Locked: solve active challenges to gain access to more!" +msgstr "Locked: solve active challenges to gain access to more!" + +#: src/states_screens/tracks_screen.cpp:194 +msgid "Only official tracks are supported." +msgstr "Only official tracks are supported." + +#. I18N: when showing who is the author of track '%s' +#. I18N: (place %s where the name of the author should appear) +#: src/states_screens/track_info_screen.cpp:112 +#, c-format +msgid "Track by %s" +msgstr "Track by %s" + +#. I18N: the max players supported by an arena. +#: src/states_screens/track_info_screen.cpp:120 +#, c-format +msgid "Max players supported: %d" +msgstr "Max players supported: %d" + +#. I18N: In the track info screen +#: src/states_screens/track_info_screen.cpp:213 +msgid "Drive in reverse" +msgstr "Drive in reverse" + +#. I18N: In the track info screen +#: src/states_screens/track_info_screen.cpp:218 +msgid "Random item location" +msgstr "Random item location" + +#: src/states_screens/user_screen.cpp:111 +msgid "Exit game" +msgstr "Exit game" + +#: src/states_screens/user_screen.cpp:484 +msgid "You need to enter a password." +msgstr "You need to enter a password." + +#: src/states_screens/user_screen.cpp:505 +#, c-format +msgid "Logging out '%s'" +msgstr "Logging out '%s'" + +#: src/states_screens/user_screen.cpp:506 +#, c-format +msgid "Logging in '%s'" +msgstr "Logging in '%s'" + +#. I18N: In the player info dialog (when deleting) +#: src/states_screens/user_screen.cpp:595 +#, c-format +msgid "Do you really want to delete player '%s' ?" +msgstr "Do you really want to delete player '%s' ?" + +#. I18N: Format for dates (%d = day, %m = month, %Y = year). See +#. http://www.cplusplus.com/reference/ctime/strftime/ for more info about date +#. formats. +#: src/utils/time.cpp:50 +msgid "%d/%m/%Y" +msgstr "%d/%m/%Y" + +#. I18N: Do NOT literally translate this string!! Please enter Y as the +#. translation if your language is a RTL (right-to-left) language, +#. N (or nothing) otherwise +#: src/utils/translation.cpp:376 +msgid " Is this a RTL language?" +msgstr " Is this a RTL language?" + +#: ../stk-assets/tracks/overworld/scripting.as:15 +msgid "Complete all challenges to unlock the big door!" +msgstr "Complete all challenges to unlock the big door!" + +#: ../stk-assets/tracks/overworld/scripting.as:63 +msgid "" +"You need more points\n" +"to enter this challenge!\n" +"Check the minimap for\n" +"available challenges." +msgstr "You need more points\nto enter this challenge!\nCheck the minimap for\navailable challenges." + +#: ../stk-assets/tracks/tutorial/scripting.as:21 +#, c-format +msgid "Accelerate with <%s>, and steer with <%s> and <%s>." +msgstr "Accelerate with <%s>, and steer with <%s> and <%s>." + +#: ../stk-assets/tracks/tutorial/scripting.as:37 +#: ../stk-assets/tracks/tutorial/triggers.as:38 +#, c-format +msgid "" +"Collect gift boxes, and fire the weapon with <%s> to blow away these boxes!" +msgstr "Collect gift boxes, and fire the weapon with <%s> to blow away these boxes!" + +#: ../stk-assets/tracks/tutorial/scripting.as:43 +#: ../stk-assets/tracks/tutorial/triggers.as:44 +#, c-format +msgid "" +"Press <%s> to look behind. Fire the weapon with <%s> while pressing <%s> to " +"fire behind!" +msgstr "Press <%s> to look behind. Fire the weapon with <%s> while pressing <%s> to fire behind!" + +#: ../stk-assets/tracks/tutorial/scripting.as:53 +#: ../stk-assets/tracks/tutorial/triggers.as:54 +#, c-format +msgid "Use the nitro you collected by pressing <%s>!" +msgstr "Use the nitro you collected by pressing <%s>!" + +#: ../stk-assets/tracks/tutorial/scripting.as:58 +msgid "Collect nitro bottles (we will use them after the curve)." +msgstr "Collect nitro bottles (we will use them after the curve)." + +#: ../stk-assets/tracks/tutorial/scripting.as:63 +#, c-format +msgid "Oops! When you're in trouble, press <%s> to be rescued." +msgstr "Oops! When you're in trouble, press <%s> to be rescued." + +#: ../stk-assets/tracks/tutorial/scripting.as:69 +#: ../stk-assets/tracks/tutorial/triggers.as:70 +#, c-format +msgid "" +"Accelerate and press the <%s> key while turning to skid. Skidding for a " +"short while can help you turn faster to take sharp turns." +msgstr "Accelerate and press the <%s> key while turning to skid. Skidding for a short while can help you turn faster to take sharp turns." + +#: ../stk-assets/tracks/tutorial/scripting.as:77 +#: ../stk-assets/tracks/tutorial/triggers.as:78 +msgid "" +"Note that if you manage to skid for several seconds, you will receive a " +"bonus speedup as a reward!" +msgstr "Note that if you manage to skid for several seconds, you will receive a bonus speedup as a reward!" + +#: ../stk-assets/tracks/tutorial/scripting.as:82 +#: ../stk-assets/tracks/tutorial/triggers.as:83 +msgid "You are now ready to race. Good luck!" +msgstr "You are now ready to race. Good luck!" + +#: ../stk-assets/tracks/tutorial/triggers.as:28 +#, c-format +msgid "Accelerate with <%s> and steer with <%s> and <%s>" +msgstr "Accelerate with <%s> and steer with <%s> and <%s>" + +#: ../stk-assets/tracks/tutorial/triggers.as:59 +msgid "Collect nitro bottles (we will use them after the curve)" +msgstr "Collect nitro bottles (we will use them after the curve)" + +#: ../stk-assets/tracks/tutorial/triggers.as:64 +#, c-format +msgid "Oops! When you're in trouble, press <%s> to be rescued" +msgstr "Oops! When you're in trouble, press <%s> to be rescued" diff --git a/data/po/en_AU.po b/data/po/en_AU.po index 8cdf3848f..fc26e2834 100644 --- a/data/po/en_AU.po +++ b/data/po/en_AU.po @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: SuperTuxKart\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2017-10-04 20:58-0400\n" -"PO-Revision-Date: 2017-10-24 10:06+0000\n" +"PO-Revision-Date: 2017-11-13 00:19+0000\n" "Last-Translator: Auria \n" "Language-Team: English (Australia) (http://www.transifex.com/supertuxkart/supertuxkart/language/en_AU/)\n" "MIME-Version: 1.0\n" @@ -3020,7 +3020,7 @@ msgstr "" #: src/states_screens/credits.cpp:180 msgid "translator-credits" -msgstr "Launchpad Contributions:\nDawid Gan https://launchpad.net/~deveee\nJackson Doak https://launchpad.net/~noskcaj" +msgstr "Launchpad Contributions:\n Dawid Gan https://launchpad.net/~deveee\n Jackson Doak https://launchpad.net/~noskcaj" #: src/states_screens/dialogs/addons_loading.cpp:97 msgid "Update" diff --git a/data/po/en_GB.po b/data/po/en_GB.po index b75cd0cf7..b8dd885ad 100644 --- a/data/po/en_GB.po +++ b/data/po/en_GB.po @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: SuperTuxKart\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2017-10-04 20:58-0400\n" -"PO-Revision-Date: 2017-10-24 10:06+0000\n" +"PO-Revision-Date: 2017-11-13 00:19+0000\n" "Last-Translator: Auria \n" "Language-Team: English (United Kingdom) (http://www.transifex.com/supertuxkart/supertuxkart/language/en_GB/)\n" "MIME-Version: 1.0\n" @@ -3020,7 +3020,7 @@ msgstr "" #: src/states_screens/credits.cpp:180 msgid "translator-credits" -msgstr "Launchpad Contributions:\nAndi Chandler https://launchpad.net/~bing\nMichael Torpey https://launchpad.net/~mctorpey\nSTK-team https://launchpad.net/~stk" +msgstr "Launchpad Contributions:\n Andi Chandler https://launchpad.net/~bing\n Michael Torpey https://launchpad.net/~mctorpey\n STK-team https://launchpad.net/~stk" #: src/states_screens/dialogs/addons_loading.cpp:97 msgid "Update" diff --git a/data/po/eo.po b/data/po/eo.po index a9b735932..3f583772f 100644 --- a/data/po/eo.po +++ b/data/po/eo.po @@ -13,7 +13,7 @@ msgstr "" "Project-Id-Version: SuperTuxKart\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2017-10-04 20:58-0400\n" -"PO-Revision-Date: 2017-10-24 10:06+0000\n" +"PO-Revision-Date: 2017-11-13 00:19+0000\n" "Last-Translator: Auria \n" "Language-Team: Esperanto (http://www.transifex.com/supertuxkart/supertuxkart/language/eo/)\n" "MIME-Version: 1.0\n" @@ -3024,7 +3024,7 @@ msgstr "La maksimuma nombro de ludistoj estu inter 2 kaj 12." #: src/states_screens/credits.cpp:180 msgid "translator-credits" -msgstr "Launchpad Contributions:\nJonas Marx, 2017\nRobin van der Vliet, 2015\nRubén https://launchpad.net/~sleepwalkdroid\nSTK-team https://launchpad.net/~stk\nÉfrit https://launchpad.net/~efrit\nЛюбомир Василев, 2016\nЛюбомир Василев, 2016-2017" +msgstr "Launchpad Contributions:\n Rubén https://launchpad.net/~sleepwalkdroid\n STK-team https://launchpad.net/~stk\n Éfrit https://launchpad.net/~efrit" #: src/states_screens/dialogs/addons_loading.cpp:97 msgid "Update" diff --git a/data/po/es.po b/data/po/es.po index 13e6ff8f0..053e78f75 100644 --- a/data/po/es.po +++ b/data/po/es.po @@ -12,7 +12,7 @@ msgstr "" "Project-Id-Version: SuperTuxKart\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2017-10-04 20:58-0400\n" -"PO-Revision-Date: 2017-10-24 10:06+0000\n" +"PO-Revision-Date: 2017-11-13 00:19+0000\n" "Last-Translator: Veronica Sanchez\n" "Language-Team: Spanish (http://www.transifex.com/supertuxkart/supertuxkart/language/es/)\n" "MIME-Version: 1.0\n" @@ -3023,7 +3023,7 @@ msgstr "El número máximo de jugadores debe estar entre 2 y 12." #: src/states_screens/credits.cpp:180 msgid "translator-credits" -msgstr "Launchpad Contributions:\nAdolfo Jayme https://launchpad.net/~fitojb\nAlejandro Pérez https://launchpad.net/~alexperezalonso\nAlvaro Ortiz https://launchpad.net/~kirtash1197\nCaArRi https://launchpad.net/~caarri91\nDavid Ballesteros Mayo https://launchpad.net/~dividio\nDawid Gan https://launchpad.net/~deveee\nDiegoJ https://launchpad.net/~diegojromerolopez\nEduardo Battaglia https://launchpad.net/~eduardo-battaglia\nelhoir https://launchpad.net/~jfarroyo82\nEugenio M. Vigo https://launchpad.net/~evigo\nFelipe Hommen https://launchpad.net/~felihommen\nJonay https://launchpad.net/~jonay-santana\nJose https://launchpad.net/~jose-medina-moreno\nJosé Luis Bandala Pérez https://launchpad.net/~luis449bp\njuanman https://launchpad.net/~juanmalbye\nLeo Juszkiewicz https://launchpad.net/~juszr\nLinuxNerdo https://launchpad.net/~catastro1\nLouis DC https://launchpad.net/~1109558-y\nMarc Coll Carrillo https://launchpad.net/~marc-coll-carrillo\nMarc Coll Carrillo, 2015-2017\nMariano Agüero https://launchpad.net/~nero1000000\nMorgan w c. https://launchpad.net/~bunk-v\nraven2286 https://launchpad.net/~r-casola\nsimon https://launchpad.net/~sianhulo\nSimón Roca https://launchpad.net/~simonaaf\nSTK-team https://launchpad.net/~stk\nTae-Wong SEO https://launchpad.net/~seotaewong40\nVeronica Sanchez, 2017\nVPablo https://launchpad.net/~villumar\nWilliam Beltrán, 2016\nWilliam Beltrán, 2017\nzer berros https://launchpad.net/~cerverros\nÁngel https://launchpad.net/~pikapikan" +msgstr "Launchpad Contributions:\n Adolfo Jayme https://launchpad.net/~fitojb\n Alejandro Pérez https://launchpad.net/~alexperezalonso\n Alvaro Ortiz https://launchpad.net/~kirtash1197\n CaArRi https://launchpad.net/~caarri91\n David Ballesteros Mayo https://launchpad.net/~dividio\n Dawid Gan https://launchpad.net/~deveee\n DiegoJ https://launchpad.net/~diegojromerolopez\n Eduardo Battaglia https://launchpad.net/~eduardo-battaglia\n Eugenio M. Vigo https://launchpad.net/~evigo\n Felipe Hommen https://launchpad.net/~felihommen\n Jonay https://launchpad.net/~jonay-santana\n Jose https://launchpad.net/~jose-medina-moreno\n José Luis Bandala Pérez https://launchpad.net/~luis449bp\n Leo Juszkiewicz https://launchpad.net/~juszr\n LinuxNerdo https://launchpad.net/~catastro1\n Louis DC https://launchpad.net/~1109558-y\n Marc Coll Carrillo https://launchpad.net/~marc-coll-carrillo\n Mariano Agüero https://launchpad.net/~nero1000000\n Morgan w c. https://launchpad.net/~bunk-v\n STK-team https://launchpad.net/~stk\n Simón Roca https://launchpad.net/~simonaaf\n Tae-Wong SEO https://launchpad.net/~seotaewong40\n VPablo https://launchpad.net/~villumar\n elhoir https://launchpad.net/~jfarroyo82\n juanman https://launchpad.net/~juanmalbye\n raven2286 https://launchpad.net/~r-casola\n simon https://launchpad.net/~sianhulo\n zer berros https://launchpad.net/~cerverros\n Ángel https://launchpad.net/~pikapikan" #: src/states_screens/dialogs/addons_loading.cpp:97 msgid "Update" diff --git a/data/po/eu.po b/data/po/eu.po index 3acf5d1d9..0029c8e55 100644 --- a/data/po/eu.po +++ b/data/po/eu.po @@ -14,7 +14,7 @@ msgstr "" "Project-Id-Version: SuperTuxKart\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2017-10-04 20:58-0400\n" -"PO-Revision-Date: 2017-10-24 10:06+0000\n" +"PO-Revision-Date: 2017-11-13 00:19+0000\n" "Last-Translator: Ander Elortondo\n" "Language-Team: Basque (http://www.transifex.com/supertuxkart/supertuxkart/language/eu/)\n" "MIME-Version: 1.0\n" @@ -3025,7 +3025,7 @@ msgstr "Gehienezko jokalari kopuruak 2 eta 12 artean egon behar du." #: src/states_screens/credits.cpp:180 msgid "translator-credits" -msgstr "Launchpad Contributions:\nAmy Smile Kerkhof https://launchpad.net/~amy\nAnder Elortondo https://launchpad.net/~ander-elor\nAnder Elortondo, 2016-2017\nAsier Iturralde Sarasola https://launchpad.net/~asier-iturralde\nAsier Iturralde Sarasola, 2015\nJan Mees https://launchpad.net/~jmees001\nManex Agirrezabal, 2015\nMikel Iturbe Urretxa https://launchpad.net/~mik-iturbe\nMikel Olasagasti Uranga, 2015\nSTK-team https://launchpad.net/~stk\nUrtzi Odriozola, 2017" +msgstr "Launchpad Contributions:\n Amy Smile Kerkhof https://launchpad.net/~amy\n Ander Elortondo https://launchpad.net/~ander-elor\n Asier Iturralde Sarasola https://launchpad.net/~asier-iturralde\n Jan Mees https://launchpad.net/~jmees001\n Mikel Iturbe Urretxa https://launchpad.net/~mik-iturbe\n STK-team https://launchpad.net/~stk" #: src/states_screens/dialogs/addons_loading.cpp:97 msgid "Update" diff --git a/data/po/fa.po b/data/po/fa.po index 503981e13..cafbd77a2 100644 --- a/data/po/fa.po +++ b/data/po/fa.po @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: SuperTuxKart\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2017-10-04 20:58-0400\n" -"PO-Revision-Date: 2017-10-24 10:06+0000\n" +"PO-Revision-Date: 2017-11-13 00:19+0000\n" "Last-Translator: Auria \n" "Language-Team: Persian (http://www.transifex.com/supertuxkart/supertuxkart/language/fa/)\n" "MIME-Version: 1.0\n" @@ -3015,7 +3015,7 @@ msgstr "" #: src/states_screens/credits.cpp:180 msgid "translator-credits" -msgstr "Launchpad Contributions:\nDanial Behzadi https://launchpad.net/~dani.behzi\nDawid Gan https://launchpad.net/~deveee\nnava https://launchpad.net/~nava.a" +msgstr "Launchpad Contributions:\n Danial Behzadi https://launchpad.net/~dani.behzi\n Dawid Gan https://launchpad.net/~deveee\n nava https://launchpad.net/~nava.a" #: src/states_screens/dialogs/addons_loading.cpp:97 msgid "Update" diff --git a/data/po/fi.po b/data/po/fi.po index 6cab37bcc..8fd59c1a9 100644 --- a/data/po/fi.po +++ b/data/po/fi.po @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: SuperTuxKart\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2017-10-04 20:58-0400\n" -"PO-Revision-Date: 2017-10-24 10:06+0000\n" +"PO-Revision-Date: 2017-11-13 00:19+0000\n" "Last-Translator: Auria \n" "Language-Team: Finnish (http://www.transifex.com/supertuxkart/supertuxkart/language/fi/)\n" "MIME-Version: 1.0\n" @@ -4147,7 +4147,3 @@ msgstr "Kerää nitropulloja (voit käyttää niitä mutkan jälkeen)" #, c-format msgid "Oops! When you're in trouble, press <%s> to be rescued" msgstr "Hupsis! Kun joudut pulaan, paina <%s> pelastuaksesi tilanteesta" - -#: src/states_screens/credits.cpp:209 -msgid "translator-credits" -msgstr "Launchpad Contributions:\nJiri Grönroos, 2015-2017" diff --git a/data/po/fr.po b/data/po/fr.po index 2114676a5..d5dbffb14 100644 --- a/data/po/fr.po +++ b/data/po/fr.po @@ -15,7 +15,7 @@ msgstr "" "Project-Id-Version: SuperTuxKart\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2017-10-04 20:58-0400\n" -"PO-Revision-Date: 2017-10-24 10:06+0000\n" +"PO-Revision-Date: 2017-11-13 00:19+0000\n" "Last-Translator: Sylvain St-Amand \n" "Language-Team: French (http://www.transifex.com/supertuxkart/supertuxkart/language/fr/)\n" "MIME-Version: 1.0\n" @@ -3026,7 +3026,7 @@ msgstr "Le nombre maximum de joueurs doit être compris entre 2 et 12." #: src/states_screens/credits.cpp:180 msgid "translator-credits" -msgstr "Launchpad Contributions:\nadrien vigneron, 2015\nAlexis Lavaud https://launchpad.net/~alexislavaud191\nAudiger Jeremy https://launchpad.net/~tankypon\nAuria https://launchpad.net/~auria-mg\nAuria, 2015-2017\nBaptiste Fontaine https://launchpad.net/~bfontaine\ndevnoname120, 2015\nFlorent (LSc) https://launchpad.net/~lorkscorguar\nJuju Croco https://launchpad.net/~juju-croco\nKalsan https://launchpad.net/~info-kalsan\nlondumas https://launchpad.net/~helion331990\nLouis-Philippe Breton https://launchpad.net/~bf5man\nMarwane K. https://launchpad.net/~marwane-ka\nmath07 https://launchpad.net/~mathlaprise\nMax Perkins https://launchpad.net/~maxperkinstoki\nMCMic https://launchpad.net/~come-bernigaud\nnad0, 2015\nNicolas Delvaux https://launchpad.net/~malizor\nnoname120 https://launchpad.net/~devnoname120\nOtourly https://launchpad.net/~otourly\nSTK-team https://launchpad.net/~stk\nSyl https://launchpad.net/~syl-\nSylvain St-Amand, 2016-2017\nThomas P T https://launchpad.net/~thomaspt\ntipiak https://launchpad.net/~tipiak\nxapantu https://launchpad.net/~xapantu\nxemard.nicolas https://launchpad.net/~xemard.nicolas\nÉfrit https://launchpad.net/~efrit\nÉfrit, 2015\nÉfrit, 2015" +msgstr "Launchpad Contributions:\n Alexis Lavaud https://launchpad.net/~alexislavaud191\n Audiger Jeremy https://launchpad.net/~tankypon\n Auria https://launchpad.net/~auria-mg\n Baptiste Fontaine https://launchpad.net/~bfontaine\n Florent (LSc) https://launchpad.net/~lorkscorguar\n Juju Croco https://launchpad.net/~juju-croco\n Kalsan https://launchpad.net/~info-kalsan\n Louis-Philippe Breton https://launchpad.net/~bf5man\n MCMic https://launchpad.net/~come-bernigaud\n Marwane K. https://launchpad.net/~marwane-ka\n Max Perkins https://launchpad.net/~maxperkinstoki\n Nicolas Delvaux https://launchpad.net/~malizor\n Otourly https://launchpad.net/~otourly\n STK-team https://launchpad.net/~stk\n Syl https://launchpad.net/~syl-\n Thomas P T https://launchpad.net/~thomaspt\n londumas https://launchpad.net/~helion331990\n math07 https://launchpad.net/~mathlaprise\n noname120 https://launchpad.net/~devnoname120\n tipiak https://launchpad.net/~tipiak\n xapantu https://launchpad.net/~xapantu\n xemard.nicolas https://launchpad.net/~xemard.nicolas\n Éfrit https://launchpad.net/~efrit" #: src/states_screens/dialogs/addons_loading.cpp:97 msgid "Update" diff --git a/data/po/fr_CA.po b/data/po/fr_CA.po index 3ec520a18..454f3f5c6 100644 --- a/data/po/fr_CA.po +++ b/data/po/fr_CA.po @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: SuperTuxKart\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2017-10-04 20:58-0400\n" -"PO-Revision-Date: 2017-10-24 10:06+0000\n" +"PO-Revision-Date: 2017-11-13 00:19+0000\n" "Last-Translator: Auria \n" "Language-Team: French (Canada) (http://www.transifex.com/supertuxkart/supertuxkart/language/fr_CA/)\n" "MIME-Version: 1.0\n" @@ -3020,7 +3020,7 @@ msgstr "" #: src/states_screens/credits.cpp:180 msgid "translator-credits" -msgstr "Launchpad Contributions:\nAuria https://launchpad.net/~auria-mg\nDawid Gan https://launchpad.net/~deveee\nSylvain St-Amand, 2016" +msgstr "Launchpad Contributions:\n Auria https://launchpad.net/~auria-mg\n Dawid Gan https://launchpad.net/~deveee" #: src/states_screens/dialogs/addons_loading.cpp:97 msgid "Update" diff --git a/data/po/ga.po b/data/po/ga.po index fa47a1c8f..0b9816cbb 100644 --- a/data/po/ga.po +++ b/data/po/ga.po @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: SuperTuxKart\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2017-10-04 20:58-0400\n" -"PO-Revision-Date: 2017-10-24 10:06+0000\n" +"PO-Revision-Date: 2017-11-13 00:19+0000\n" "Last-Translator: Auria \n" "Language-Team: Irish (http://www.transifex.com/supertuxkart/supertuxkart/language/ga/)\n" "MIME-Version: 1.0\n" @@ -3035,7 +3035,7 @@ msgstr "" #: src/states_screens/credits.cpp:180 msgid "translator-credits" -msgstr "Launchpad Contributions:\nAaron Kearns https://launchpad.net/~ajkearns6\nAaron Kearns, 2017\nDaithí Mac an Aircinn https://launchpad.net/~dmaa60" +msgstr "Launchpad Contributions:\n Aaron Kearns https://launchpad.net/~ajkearns6\n Daithí Mac an Aircinn https://launchpad.net/~dmaa60" #: src/states_screens/dialogs/addons_loading.cpp:97 msgid "Update" diff --git a/data/po/gd.po b/data/po/gd.po index c0d9aa15e..cd09fb84f 100644 --- a/data/po/gd.po +++ b/data/po/gd.po @@ -11,7 +11,7 @@ msgstr "" "Project-Id-Version: SuperTuxKart\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2017-10-04 20:58-0400\n" -"PO-Revision-Date: 2017-10-24 10:06+0000\n" +"PO-Revision-Date: 2017-11-13 00:19+0000\n" "Last-Translator: GunChleoc\n" "Language-Team: Gaelic, Scottish (http://www.transifex.com/supertuxkart/supertuxkart/language/gd/)\n" "MIME-Version: 1.0\n" @@ -290,7 +290,7 @@ msgstr "Sgàilean" #. I18N: ./data/gui/custom_video_settings.stkgui #. I18N: Video settings msgid "Image-based lighting" -msgstr "Soillseachadh stèidhichte air dealbhan" +msgstr "Soillseachadh le taic dhealbhan" #. I18N: ./data/gui/custom_video_settings.stkgui #. I18N: Video settings @@ -645,7 +645,7 @@ msgid "" "Collecting nitro allows you to get speed boosts whenever you wish by " "pressing the appropriate key. You can see your current level of nitro in the" " bar at the right of the game screen." -msgstr "Ma thogas tu naidhtreo, gheibh thu neartachadh air an astar agad nuair a thogras tu is cha leig thu leas ach an iuchair iomchaidh a bhrùthadh. Chì thu cò mheud naidhtreo a th’ agad sa bhàr ri taobh dheas an sgrìn." +msgstr "Ma thogas tu naidhtreo, gheibh thu neartachadh air an luaths agad nuair a thogras tu is cha leig thu leas ach an iuchair iomchaidh a bhrùthadh. Chì thu cò mheud naidhtreo a th’ agad sa bhàr taobh deas na sgrìn." #. I18N: ./data/gui/help1.stkgui #. I18N: In the help menu @@ -678,7 +678,7 @@ msgstr "BubbleGum - dìon thu fhèin le sgiath no cleachd fear a’ coimhead air #. I18N: ./data/gui/help2.stkgui msgid "" "Cake - thrown at the closest rival, best on short ranges and long straights." -msgstr "Cèic - tilg air an fharpaiseach as fhaisge e, as fhearr air amasan faisg ort no air slighean dìreach." +msgstr "Cèic - tilg air an fharpaiseach as fhaisge e, tha i as fhearr air amasan faisg ort no air slighean dìreach." #. I18N: ./data/gui/help2.stkgui msgid "" @@ -700,7 +700,7 @@ msgstr "Paraisiut - cuir maille air a h-uile cart air do bheulaibh." msgid "" "Swapper - gift boxes are transformed into bananas and vice versa for a short" " time." -msgstr "Suaipear - thèid bogsaichean tìodhlaic ’nan bananathan is taobh mu seach fad greiseag." +msgstr "Suaipear - thèid bogsaichean tìodhlaic ’nam bananathan is taobh mu seach fad greiseag." #. I18N: ./data/gui/help2.stkgui msgid "" @@ -721,7 +721,7 @@ msgstr "Tha iomadh modh-geama aig SuperTuxKart" msgid "" "Regular Race: All blows allowed, so catch weapons and make clever use of " "them!" -msgstr "Rèis àbhaisteach: tha a h-uile buille ceadaichte, mar sin tog airm is cleachd gu glic iad!" +msgstr "Rèis àbhaisteach: Tha gach buille ceadaichte, mar sin tog airm is cleachd gu glic iad!" #. I18N: ./data/gui/help3.stkgui #. I18N: In the help menu @@ -736,7 +736,7 @@ msgid "" "Follow the leader: Run for second place, as the last kart will be " "disqualified every time the counter hits zero. Beware: going in front of the" " leader will get you eliminated too!" -msgstr "Lean an toisiche: feuch an crìochnaich thu air an dàrna àite on a thèid an cart mu dheireadh a dhì-chòireachadh gach turas a ruigeas an cunntair a neoni. Thoir an aire: thèid do ruaig cuideachd ma thèid thu seachad air an toisiche!" +msgstr "Lean an toisiche: Feuch an crìochnaich thu air an dàrna àite on a thèid an cart mu dheireadh a dhì-chòireachadh gach turas a ruigeas an cunntair a neoni. Thoir an aire: thèid do ruaig cuideachd ma thèid thu seachad air an toisiche!" #. I18N: ./data/gui/help3.stkgui #. I18N: In the help menu @@ -752,7 +752,7 @@ msgstr "Ball-coise: Cleachd a’ chart agad gus am bàla a bhrùthadh dhan tadha #. I18N: ./data/gui/help3.stkgui #. I18N: In the help menu msgid "Egg hunt: Explore tracks to find all hidden eggs." -msgstr "Lorg uighean: rùraich slighean gus a h-uile ugh am falach a lorg." +msgstr "Lorg uighean: Rùraich slighean gus a h-uile ugh am falach a lorg." #. I18N: ./data/gui/help3.stkgui #. I18N: In the help menu @@ -761,7 +761,7 @@ msgid "" "instead of playing a single race, you play many in a row. The better you " "rank, the more points you get. In the end, the player with the most points " "wins the cup." -msgstr "* Faodaidh tu a’ mhòrchuid dhe na modhan-geama seo a chluiche ann an dòigh Grand Prix cuideachd: an àite a bhith a’ cluiche rèis a-mhàin, cluichidh tu sreath dhiubh. Mar as fhearr an rang agad, ’s ann as motha na puingean a gheibh thu. Aig deireadh an latha, ’s e an cluicheadair aig a bheil na puingean as motha a bhuannaicheas a’ chuach." +msgstr "* Faodaidh tu a’ mhòrchuid dhe na modhan-geama seo a chluiche ann an dòigh Grand Prix cuideachd: Seach a bhith a’ cluiche rèis a-mhàin, cluichidh tu sreath dhiubh. Mar as fhearr an rang agad, ’s ann as motha na puingean a gheibh thu. Mu dheireadh thall, ’s e an cluicheadair aig a bheil na puingean as motha a bhuannaicheas a’ chuach." #. I18N: ./data/gui/help4.stkgui msgid "SuperTuxKart can be played in multiplayer mode on the same computer" @@ -780,7 +780,7 @@ msgid "" "keyboard(s), however each player will need a different set of keys, and keep" " in mind that most keyboards are not appropriate for multiplayer gameplay " "because they do not support large number of keypresses." -msgstr "Sa chiad dol a-mach, bidh feum agad air barrachd air aon uidheam ion-chuir (’s e iomadh pada-geama no joysticks an dòigh as fhearr gus cluiche le daoine eile). Rach gu sgrìn nan roghainnean ion-chuir is suidhich na padaichean-geama. ’S urrainn dhut cluiche air meur-chlàr(an) cuideachd, ach bidh feum air buidheann dhe dh’iuchraichean eadar-dhealaichte airson gach cluicheadair. Thoir an aire nach eil a’ mhòrchuid dhe na meur-chlàran freagarrach airson geama ioma-chluicheadair on nach cuir iad taic ri brùthadh air àireamh mhòr de dh’iuchraichean." +msgstr "Sa chiad dol a-mach, bidh feum agad air barrachd air aon uidheam ion-chuir (’s e iomadh pada-geama no joysticks an dòigh as fhearr gus cluiche le daoine eile). Rach gu sgrìn nan roghainnean ion-chuir is suidhich na padaichean-geama. ’S urrainn dhut cluiche air meur-chlàr(an) cuideachd, ach bidh feum air buidheann dhe dh’iuchraichean eadar-dhealaichte airson gach cluicheadair. Thoir an aire nach eil a’ mhòrchuid dhe na meur-chlàran freagarrach airson geama ioma-chluicheadair o nach cuir iad taic ri brùthadh air àireamh mhòr de dh’iuchraichean." #. I18N: ./data/gui/help4.stkgui #. I18N: In the help menu @@ -807,14 +807,14 @@ msgstr "Acair – cuiridh e maille air a’ chart." #. I18N: ./data/gui/help5.stkgui #. I18N: In the help menu msgid "Parachute - slows down the kart less than the anchor." -msgstr "Paraisiut – cuiridh nas lugha de mhaille a’ cart na chuireas an acair." +msgstr "Paraisiut – cuiridh e nas lugha de mhaille air a’ chart na chuireas an acair." #. I18N: ./data/gui/help5.stkgui #. I18N: In the help menu msgid "" "Bomb - detonates after a short amount of time to throw the kart up in the " "air. Bump into another kart to transfer the bomb to another player." -msgstr "Boma – spreadhaidh e às dèidh greis ’s thèid a’ chart a thilg dhan adhair. Buail ri cart eile gus am boma a chur air cluicheadair eile." +msgstr "Boma – spreadhaidh e às dèidh greis ’s thèid a’ chart a thilgeil dhan adhair. Buail ri cart eile gus am boma a chur air cluicheadair eile." #. I18N: ./data/gui/karts.stkgui #. I18N: In the kart selection (player setup) screen @@ -1433,7 +1433,7 @@ msgstr "An comas" #. I18N: ./data/gui/options_audio.stkgui #. I18N: In the audio options screen msgid "Volume" -msgstr "Àirde fuaime" +msgstr "Àirde na fuaime" #. I18N: ./data/gui/options_audio.stkgui #. I18N: In the audio options screen @@ -1540,7 +1540,7 @@ msgstr "Cuir stadastaireachd a’ Bh-chr gun ainm" #. I18N: ./data/gui/options_ui.stkgui #. I18N: In the ui settings msgid "Enable per-player handicaps" -msgstr "Cuir ana-cothrom air cluicheadairean an comas" +msgstr "Cuir ana-cothrom nan cluicheadairean air" #. I18N: ./data/gui/options_ui.stkgui #. I18N: In the ui settings @@ -2078,7 +2078,7 @@ msgstr "Tha %s deiseil" #. I18N: Unbound key binding #: src/input/binding.cpp:90 msgid "[none]" -msgstr "[gin]" +msgstr "[chan eil gin]" #. I18N: input configuration screen: mouse button #: src/input/binding.cpp:114 @@ -3032,7 +3032,7 @@ msgstr "Feumaidh an àireamh as motha de chluicheadairean a bhith eadar 2 is 12. #: src/states_screens/credits.cpp:180 msgid "translator-credits" -msgstr "Launchpad Contributions:\nDawid Gan https://launchpad.net/~deveee\nGunChleoc https://launchpad.net/~gunchleoc\nGunChleoc, 2012-2015\nGunChleoc, 2015-2017\nSTK-team https://launchpad.net/~stk" +msgstr "Launchpad Contributions:\n Dawid Gan https://launchpad.net/~deveee\n GunChleoc https://launchpad.net/~gunchleoc\n STK-team https://launchpad.net/~stk" #: src/states_screens/dialogs/addons_loading.cpp:97 msgid "Update" @@ -3150,7 +3150,7 @@ msgstr "À comas" #: src/states_screens/dialogs/custom_video_settings.cpp:67 #: src/states_screens/options_screen_video.cpp:462 msgid "Important only" -msgstr "Beòthachaidhean cudromach a-mhàin" +msgstr "Beòthachaidhean cudromach" #. I18N: animations setting (only karts with human players are animated) #: src/states_screens/dialogs/custom_video_settings.cpp:74 @@ -3401,7 +3401,7 @@ msgstr "Bun-roghainn" #: src/states_screens/gp_info_screen.cpp:75 #: src/states_screens/options_screen_video.cpp:460 msgid "None" -msgstr "Gin" +msgstr "Chan eil gin" #: src/states_screens/gp_info_screen.cpp:77 msgid "Random" @@ -3929,7 +3929,7 @@ msgstr "Duilgheas: %s" #: src/states_screens/race_result_gui.cpp:1440 #, c-format msgid "Best lap time: %s" -msgstr "Ùine na cuairte as fhearr: %s" +msgstr "A’ chuairt as fhearr: %s" #: src/states_screens/race_setup_screen.cpp:87 msgid "All blows allowed, so catch weapons and make clever use of them!" diff --git a/data/po/gl.po b/data/po/gl.po index 623e899e3..381b995ec 100644 --- a/data/po/gl.po +++ b/data/po/gl.po @@ -12,7 +12,7 @@ msgstr "" "Project-Id-Version: SuperTuxKart\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2017-10-04 20:58-0400\n" -"PO-Revision-Date: 2017-10-24 10:06+0000\n" +"PO-Revision-Date: 2017-11-13 00:19+0000\n" "Last-Translator: Auria \n" "Language-Team: Galician (http://www.transifex.com/supertuxkart/supertuxkart/language/gl/)\n" "MIME-Version: 1.0\n" @@ -3023,7 +3023,7 @@ msgstr "O número máximo de xogadores debe estar entre 2 e 12." #: src/states_screens/credits.cpp:180 msgid "translator-credits" -msgstr "Launchpad Contributions:\nAdrián Chaves Fernández https://launchpad.net/~gallaecio\nAdrián Chaves Fernández, 2010\nAdrián Chaves Fernández, 2010,2015\nAdrián Chaves Fernández, 2010-2011,2013\nAdrián Chaves Fernández, 2015-2016\nAuria https://launchpad.net/~auria-mg\nMiguel Anxo Bouzada https://launchpad.net/~mbouzada\nTrutxo64 https://launchpad.net/~celestino-freire" +msgstr "Launchpad Contributions:\n Adrián Chaves Fernández https://launchpad.net/~gallaecio\n Auria https://launchpad.net/~auria-mg\n Miguel Anxo Bouzada https://launchpad.net/~mbouzada\n Trutxo64 https://launchpad.net/~celestino-freire" #: src/states_screens/dialogs/addons_loading.cpp:97 msgid "Update" diff --git a/data/po/he.po b/data/po/he.po index b70e90797..342cedeec 100644 --- a/data/po/he.po +++ b/data/po/he.po @@ -7,7 +7,7 @@ # Capri , 2015 # FIRST AUTHOR , 2010 # GenghisKhan , 2015-2016 -# Liran , 2016 +# Liran , 2016-2017 # Yevgney Sliosarenko, 2015 # ‫רואי לוי‬‎ , 2016 msgid "" @@ -15,8 +15,8 @@ msgstr "" "Project-Id-Version: SuperTuxKart\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2017-10-04 20:58-0400\n" -"PO-Revision-Date: 2017-10-24 10:06+0000\n" -"Last-Translator: Auria \n" +"PO-Revision-Date: 2017-11-13 00:19+0000\n" +"Last-Translator: Liran \n" "Language-Team: Hebrew (http://www.transifex.com/supertuxkart/supertuxkart/language/he/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -942,7 +942,7 @@ msgstr "" #. I18N: ./data/gui/multitouch_settings.stkgui #. I18N: In the multitouch settings screen msgid "Sensitivity" -msgstr "" +msgstr "רגישות" #. I18N: ./data/gui/multitouch_settings.stkgui msgid "Restore defaults" @@ -3026,7 +3026,7 @@ msgstr "המספר המרבי של שחקנים חייב להיות בין 2 ל1 #: src/states_screens/credits.cpp:180 msgid "translator-credits" -msgstr "Launchpad Contributions:\nAsael https://launchpad.net/~asaelr\nAuria https://launchpad.net/~auria-mg\nBLooperZ, 2016-2017\nCapri, 2015\nDdorda https://launchpad.net/~ddorda\nGenghisKhan https://launchpad.net/~genghiskhan\nGenghisKhan, 2015-2016\nJorge Mariano https://launchpad.net/~jmariano\nLeo Juszkiewicz https://launchpad.net/~juszr\nLiran, 2016\nNiv Baehr https://launchpad.net/~rzil\nReuma Mordechai https://launchpad.net/~reumamordechai\nShai Shapira https://launchpad.net/~shayshap\nShimi Chen https://launchpad.net/~shimi-chen\nSTK-team https://launchpad.net/~stk\nYaron https://launchpad.net/~sh-yaron\nYevgney Sliosarenko, 2015\n‫רואי לוי‬‎, 2016" +msgstr "Launchpad Contributions:\n Asael https://launchpad.net/~asaelr\n Auria https://launchpad.net/~auria-mg\n Ddorda https://launchpad.net/~ddorda\n GenghisKhan https://launchpad.net/~genghiskhan\n Jorge Mariano https://launchpad.net/~jmariano\n Leo Juszkiewicz https://launchpad.net/~juszr\n Niv Baehr https://launchpad.net/~rzil\n Reuma Mordechai https://launchpad.net/~reumamordechai\n STK-team https://launchpad.net/~stk\n Shai Shapira https://launchpad.net/~shayshap\n Shimi Chen https://launchpad.net/~shimi-chen\n Yaron https://launchpad.net/~sh-yaron" #: src/states_screens/dialogs/addons_loading.cpp:97 msgid "Update" diff --git a/data/po/hi.po b/data/po/hi.po index cf3ed5531..2aec6ec12 100644 --- a/data/po/hi.po +++ b/data/po/hi.po @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: SuperTuxKart\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2017-10-04 20:58-0400\n" -"PO-Revision-Date: 2017-10-24 10:06+0000\n" +"PO-Revision-Date: 2017-11-13 00:19+0000\n" "Last-Translator: Auria \n" "Language-Team: Hindi (http://www.transifex.com/supertuxkart/supertuxkart/language/hi/)\n" "MIME-Version: 1.0\n" @@ -3020,7 +3020,7 @@ msgstr "" #: src/states_screens/credits.cpp:180 msgid "translator-credits" -msgstr "Launchpad Contributions:\nAkela https://launchpad.net/~sdakela\nsid https://launchpad.net/~sidchat1\nSTK-team https://launchpad.net/~stk" +msgstr "Launchpad Contributions:\n Akela https://launchpad.net/~sdakela\n STK-team https://launchpad.net/~stk\n sid https://launchpad.net/~sidchat1" #: src/states_screens/dialogs/addons_loading.cpp:97 msgid "Update" diff --git a/data/po/hr.po b/data/po/hr.po index 57edbc4d8..29f4f69c0 100644 --- a/data/po/hr.po +++ b/data/po/hr.po @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: SuperTuxKart\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2017-10-04 20:58-0400\n" -"PO-Revision-Date: 2017-10-24 10:06+0000\n" +"PO-Revision-Date: 2017-11-13 00:19+0000\n" "Last-Translator: Auria \n" "Language-Team: Croatian (http://www.transifex.com/supertuxkart/supertuxkart/language/hr/)\n" "MIME-Version: 1.0\n" @@ -3025,7 +3025,7 @@ msgstr "" #: src/states_screens/credits.cpp:180 msgid "translator-credits" -msgstr "Launchpad Contributions:\nDavor Buday https://launchpad.net/~davor-buday-gmail\nDawid Gan https://launchpad.net/~deveee\ndboki89 https://launchpad.net/~dboki89\nIvan Putnik, 2010\nSTK-team https://launchpad.net/~stk\nstudent4 https://launchpad.net/~iputnik-msn" +msgstr "Launchpad Contributions:\n Davor Buday https://launchpad.net/~davor-buday-gmail\n Dawid Gan https://launchpad.net/~deveee\n STK-team https://launchpad.net/~stk\n dboki89 https://launchpad.net/~dboki89\n student4 https://launchpad.net/~iputnik-msn" #: src/states_screens/dialogs/addons_loading.cpp:97 msgid "Update" diff --git a/data/po/hu.po b/data/po/hu.po index 33e055416..4faf32668 100644 --- a/data/po/hu.po +++ b/data/po/hu.po @@ -12,7 +12,7 @@ msgstr "" "Project-Id-Version: SuperTuxKart\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2017-10-04 20:58-0400\n" -"PO-Revision-Date: 2017-10-24 10:06+0000\n" +"PO-Revision-Date: 2017-11-13 00:19+0000\n" "Last-Translator: Balázs Úr \n" "Language-Team: Hungarian (http://www.transifex.com/supertuxkart/supertuxkart/language/hu/)\n" "MIME-Version: 1.0\n" @@ -3023,7 +3023,7 @@ msgstr "A játékosok legnagyobb számának 2 és 12 között kell lennie." #: src/states_screens/credits.cpp:180 msgid "translator-credits" -msgstr "Launchpad Contributions:\nBalint https://launchpad.net/~lbekefi\nBalázs Úr, 2016-2017\nBangó Máté, 2016\nGyönki Bendegúz https://launchpad.net/~gyonkibendeguz\nJacob https://launchpad.net/~jacob11\nJf. Tasz https://launchpad.net/~jftatsz\nMolditz György https://launchpad.net/~molditz\nPapp Bence https://launchpad.net/~sclegnrbs\nSTK-team https://launchpad.net/~stk\nViktor Busanszki, 2015\nÚr Balázs https://launchpad.net/~urbalazs" +msgstr "Launchpad Contributions:\n Balint https://launchpad.net/~lbekefi\n Gyönki Bendegúz https://launchpad.net/~gyonkibendeguz\n Jacob https://launchpad.net/~jacob11\n Jf. Tasz https://launchpad.net/~jftatsz\n Molditz György https://launchpad.net/~molditz\n Papp Bence https://launchpad.net/~sclegnrbs\n STK-team https://launchpad.net/~stk\n Úr Balázs https://launchpad.net/~urbalazs" #: src/states_screens/dialogs/addons_loading.cpp:97 msgid "Update" diff --git a/data/po/hy.po b/data/po/hy.po index c2d5e5a78..a2d4a3d78 100644 --- a/data/po/hy.po +++ b/data/po/hy.po @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: SuperTuxKart\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2017-10-04 20:58-0400\n" -"PO-Revision-Date: 2017-10-24 10:06+0000\n" +"PO-Revision-Date: 2017-11-13 00:19+0000\n" "Last-Translator: Auria \n" "Language-Team: Armenian (http://www.transifex.com/supertuxkart/supertuxkart/language/hy/)\n" "MIME-Version: 1.0\n" @@ -3020,7 +3020,7 @@ msgstr "" #: src/states_screens/credits.cpp:180 msgid "translator-credits" -msgstr "Launchpad Contributions:\nAram Palyan https://launchpad.net/~ararat-info" +msgstr "Launchpad Contributions:\n Aram Palyan https://launchpad.net/~ararat-info" #: src/states_screens/dialogs/addons_loading.cpp:97 msgid "Update" diff --git a/data/po/ia.po b/data/po/ia.po new file mode 100644 index 000000000..219133671 --- /dev/null +++ b/data/po/ia.po @@ -0,0 +1,4148 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: SuperTuxKart\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-10-04 20:58-0400\n" +"PO-Revision-Date: 2017-11-13 00:19+0000\n" +"Last-Translator: Auria \n" +"Language-Team: Interlingua (http://www.transifex.com/supertuxkart/supertuxkart/language/ia/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ia\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. I18N: ./data/achievements.xml +msgid "Christoffel Columbus" +msgstr "" + +#. I18N: ./data/achievements.xml +msgid "Play every official track at least once." +msgstr "" + +#. I18N: ./data/achievements.xml +msgid "Strike!" +msgstr "" + +#. I18N: ./data/achievements.xml +msgid "Hit 10 karts with a bowling-ball." +msgstr "" + +#. I18N: ./data/achievements.xml +msgid "Arch Enemy" +msgstr "" + +#. I18N: ./data/achievements.xml +msgid "Hit the same kart at least 5 times in one race." +msgstr "" + +#. I18N: ./data/achievements.xml +msgid "Marathoner" +msgstr "" + +#. I18N: ./data/achievements.xml +msgid "Make a race with 5 laps or more." +msgstr "" + +#. I18N: ./data/achievements.xml +msgid "Skid-row" +msgstr "" + +#. I18N: ./data/achievements.xml +msgid "Make 5 skidding in a single lap." +msgstr "" + +#. I18N: ./data/achievements.xml +msgid "Gold driver" +msgstr "" + +#. I18N: ./data/achievements.xml +msgid "Win against at least 3 opponents in all single player modes." +msgstr "" + +#. I18N: ./data/achievements.xml +msgid "Powerup Love" +msgstr "" + +#. I18N: ./data/achievements.xml +msgid "Use 10 or more powerups in a race." +msgstr "" + +#. I18N: ./data/achievements.xml +msgid "Unstoppable" +msgstr "" + +#. I18N: ./data/achievements.xml +msgid "Win 5 single races in a row." +msgstr "" + +#. I18N: ./data/achievements.xml +msgid "Banana Lover" +msgstr "" + +#. I18N: ./data/achievements.xml +msgid "Collect at least 5 bananas in one race." +msgstr "" + +#. I18N: ./data/achievements.xml +msgid "It's secret" +msgstr "" + +#. I18N: ./data/achievements.xml +msgid "Really ... a secret." +msgstr "" + +#. I18N: ./data/achievements.xml +msgid "Mosquito Hunter" +msgstr "" + +#. I18N: ./data/achievements.xml +msgid "" +"Take your opponents for mosquitos! With the swatter, squash at least 5 of " +"them in a race." +msgstr "" + +#. I18N: ./data/grandprix/1_penguinplayground.grandprix +msgid "Penguin Playground" +msgstr "" + +#. I18N: ./data/grandprix/2_offthebeatentrack.grandprix +msgid "Off the beaten track" +msgstr "" + +#. I18N: ./data/grandprix/3_tothemoonandback.grandprix +msgid "To the moon and back" +msgstr "" + +#. I18N: ./data/grandprix/4_atworldsend.grandprix +msgid "At World's End" +msgstr "" + +#. I18N: ./data/gui/addons_loading.stkgui +#. I18N: Add-on screen action +msgid "Install" +msgstr "" + +#. I18N: ./data/gui/addons_loading.stkgui +#. I18N: Add-on screen action +msgid "Uninstall" +msgstr "" + +#. I18N: ./data/gui/addons_loading.stkgui +#. I18N: Add-on screen action +#. I18N: ./data/gui/ghost_replay_info_dialog.stkgui +#. I18N: Ghost replay info action +#. I18N: name of buttons on gamepads +#: src/input/gamepad_config.cpp:216 +#: src/states_screens/dialogs/addons_loading.cpp:285 +msgid "Back" +msgstr "" + +#. I18N: ./data/gui/addons_screen.stkgui +msgid "SuperTuxKart Addons" +msgstr "" + +#. I18N: ./data/gui/addons_screen.stkgui +#. I18N: In addons screen, in the filtering bar, to enable a filter that will +#. show only recently updated items +msgid "Updated" +msgstr "" + +#. I18N: ./data/gui/addons_screen.stkgui +#. I18N: In addons screen, in the filtering bar, to enable a filter that will +#. show only items with good rating +msgid "Rating >=" +msgstr "" + +#. I18N: ./data/gui/addons_screen.stkgui +#. I18N: In the addons screen +msgid "Karts" +msgstr "" + +#. I18N: ./data/gui/addons_screen.stkgui +#. I18N: In the addons screen +#. I18N: ./data/gui/gp_info.stkgui +#. I18N: In the grand prix info screen +msgid "Tracks" +msgstr "" + +#. I18N: ./data/gui/addons_screen.stkgui +#. I18N: In the addons screen +#. I18N: ./data/gui/arenas.stkgui +#. I18N: Section in arena tracks selection screen +msgid "Arenas" +msgstr "" + +#. I18N: ./data/gui/arenas.stkgui +#. I18N: track group +#. I18N: ./data/gui/easter_egg.stkgui +#. I18N: track group +#: src/states_screens/grand_prix_editor_screen.cpp:337 +msgid "Standard" +msgstr "" + +#. I18N: ./data/gui/arenas.stkgui +#. I18N: track group +#. I18N: ./data/gui/easter_egg.stkgui +#. I18N: track group +#. I18N: arena group name +#. I18N: track group name +#. I18N: kart group name +#. I18N: track group name +#: src/states_screens/arenas_screen.cpp:83 +#: src/states_screens/easter_egg_screen.cpp:145 +#: src/states_screens/grand_prix_editor_screen.cpp:339 +#: src/states_screens/kart_selection.cpp:287 +#: src/states_screens/tracks_and_gp_screen.cpp:148 +msgid "Add-Ons" +msgstr "" + +#. I18N: ./data/gui/arenas.stkgui +#. I18N: track group +#. I18N: ./data/gui/easter_egg.stkgui +#. I18N: track group +#. I18N: Time filters for add-ons +#. I18N: name of the tab that will show arenas from all groups +#. I18N: name of the tab that will show tracks from all groups +#. I18N: if all kart animations are enabled +#. I18N: name of the tab that will show tracks from all groups +#: src/states_screens/addons_screen.cpp:49 +#: src/states_screens/arenas_screen.cpp:75 +#: src/states_screens/easter_egg_screen.cpp:137 +#: src/states_screens/edit_track_screen.cpp:147 +#: src/states_screens/gp_info_screen.cpp:76 +#: src/states_screens/grand_prix_editor_screen.cpp:336 +#: src/states_screens/kart_selection.cpp:279 +#: src/states_screens/options_screen_video.cpp:456 +#: src/states_screens/tracks_and_gp_screen.cpp:138 +#: src/states_screens/tracks_screen.cpp:141 +msgid "All" +msgstr "" + +#. I18N: ./data/gui/confirm_dialog.stkgui +#. I18N: In a 'are you sure?' dialog +#: src/states_screens/edit_gp_screen.cpp:257 +#: src/states_screens/ghost_replay_selection.cpp:117 +msgid "Yes" +msgstr "" + +#. I18N: ./data/gui/confirm_dialog.stkgui +#. I18N: In a 'are you sure?' dialog +#. I18N: ./data/gui/confirm_resolution_dialog.stkgui +#. I18N: In the 'confirm resolution' dialog, that's shown when switching +#. resoluton +#. I18N: ./data/gui/edit_track.stkgui +#. I18N: ./data/gui/general_text_field_dialog.stkgui +#. I18N: In the general textfield dialog +#. I18N: ./data/gui/online/create_server.stkgui +#. I18N: In the server creation screen +#. I18N: ./data/gui/online/recovery_input.stkgui +#. I18N: In the recovery dialog +#. I18N: ./data/gui/online/register.stkgui +#. I18N: In the registration dialog +#. I18N: ./data/gui/online/registration_terms.stkgui +#. I18N: In the registration dialog +#. I18N: ./data/gui/online/server_info_dialog.stkgui +#. I18N: In the server info dialog +#. I18N: ./data/gui/user_screen.stkgui +#. I18N: In the user screen +#. I18N: ./data/gui/user_screen_tab.stkgui +#. I18N: In the user screen +#: src/states_screens/dialogs/addons_loading.cpp:228 +#: src/states_screens/dialogs/add_device_dialog.cpp:128 +#: src/states_screens/user_screen.cpp:112 +msgid "Cancel" +msgstr "" + +#. I18N: ./data/gui/confirm_resolution_dialog.stkgui +#. I18N: In the 'confirm resolution' dialog, that's shown when switching +#. resoluton +msgid "Keep this resolution" +msgstr "" + +#. I18N: ./data/gui/credits.stkgui +#. I18N: Title in credits screen +msgid "Credits" +msgstr "" + +#. I18N: ./data/gui/custom_video_settings.stkgui +msgid "Graphics Settings" +msgstr "" + +#. I18N: ./data/gui/custom_video_settings.stkgui +#. I18N: Video settings +msgid "Advanced pipeline (lights, etc.)" +msgstr "" + +#. I18N: ./data/gui/custom_video_settings.stkgui +#. I18N: Video settings +msgid "Shadows" +msgstr "" + +#. I18N: ./data/gui/custom_video_settings.stkgui +#. I18N: Video settings +msgid "Image-based lighting" +msgstr "" + +#. I18N: ./data/gui/custom_video_settings.stkgui +#. I18N: Video settings +msgid "Bloom" +msgstr "" + +#. I18N: ./data/gui/custom_video_settings.stkgui +#. I18N: Video settings +msgid "Light shaft (God rays)" +msgstr "" + +#. I18N: ./data/gui/custom_video_settings.stkgui +#. I18N: Video settings +msgid "Ambient Occlusion" +msgstr "" + +#. I18N: ./data/gui/custom_video_settings.stkgui +#. I18N: Video settings +msgid "Global illumination" +msgstr "" + +#. I18N: ./data/gui/custom_video_settings.stkgui +#. I18N: Video settings +msgid "Glow (outlines)" +msgstr "" + +#. I18N: ./data/gui/custom_video_settings.stkgui +#. I18N: Video settings +msgid "Anti-aliasing" +msgstr "" + +#. I18N: ./data/gui/custom_video_settings.stkgui +#. I18N: Video settings +msgid "Motion blur" +msgstr "" + +#. I18N: ./data/gui/custom_video_settings.stkgui +#. I18N: Video settings +msgid "Depth of field" +msgstr "" + +#. I18N: ./data/gui/custom_video_settings.stkgui +#. I18N: Video settings +msgid "Weather Effects" +msgstr "" + +#. I18N: ./data/gui/custom_video_settings.stkgui +#. I18N: Video settings +msgid "Texture compression" +msgstr "" + +#. I18N: ./data/gui/custom_video_settings.stkgui +#. I18N: Video settings +msgid "Animated Scenery" +msgstr "" + +#. I18N: ./data/gui/custom_video_settings.stkgui +#. I18N: Video settings +msgid "Animated Characters" +msgstr "" + +#. I18N: ./data/gui/custom_video_settings.stkgui +#. I18N: Video settings +msgid "Rendered image quality" +msgstr "" + +#. I18N: ./data/gui/custom_video_settings.stkgui +#. I18N: Video settings +msgid "Geometry detail" +msgstr "" + +#. I18N: ./data/gui/custom_video_settings.stkgui +#. I18N: Video settings +msgid "* Restart STK to apply new settings" +msgstr "" + +#. I18N: ./data/gui/custom_video_settings.stkgui +#. I18N: ./data/gui/multitouch_settings.stkgui +msgid "Apply" +msgstr "" + +#. I18N: ./data/gui/easter_egg.stkgui +#. I18N: Section in easter egg tracks selection screen +#. I18N: ./data/gui/tracks.stkgui +#. I18N: In the track selection screen +#. I18N: ./data/gui/tracks_and_gp.stkgui +#. I18N: In the track and grand prix selection screen +msgid "All Tracks" +msgstr "" + +#. I18N: ./data/gui/edit_gp.stkgui +#. I18N: Title in edit grand prix screen +msgid "Edit Grand Prix" +msgstr "" + +#. I18N: ./data/gui/edit_gp.stkgui +#. I18N: Menu item +msgid "Move up" +msgstr "" + +#. I18N: ./data/gui/edit_gp.stkgui +#. I18N: Menu item +msgid "Move down" +msgstr "" + +#. I18N: ./data/gui/edit_gp.stkgui +#. I18N: Menu item +msgid "Add" +msgstr "" + +#. I18N: ./data/gui/edit_gp.stkgui +#. I18N: Menu item +#. I18N: ./data/gui/grand_prix_editor.stkgui +#. I18N: Menu item +msgid "Edit" +msgstr "" + +#. I18N: ./data/gui/edit_gp.stkgui +#. I18N: Menu item +#. I18N: ./data/gui/ghost_replay_info_dialog.stkgui +#. I18N: Ghost replay info action +#. I18N: ./data/gui/grand_prix_editor.stkgui +#. I18N: Menu item +#. I18N: ./data/gui/online/user_info_dialog.stkgui +#. I18N: User info dialog +msgid "Remove" +msgstr "" + +#. I18N: ./data/gui/edit_gp.stkgui +#. I18N: Menu item +msgid "Save" +msgstr "" + +#. I18N: ./data/gui/edit_track.stkgui +#. I18N: In the edit track screen +msgid "Number of laps:" +msgstr "" + +#. I18N: ./data/gui/edit_track.stkgui +#. I18N: In the edit track screen +msgid "Reverse:" +msgstr "" + +#. I18N: ./data/gui/edit_track.stkgui +#. I18N: ./data/gui/general_text_field_dialog.stkgui +#. I18N: In the general textfield dialog +#. I18N: ./data/gui/online/register.stkgui +#. I18N: In the registration dialog +#. I18N: ./data/gui/user_screen.stkgui +#. I18N: In the user screen +#. I18N: ./data/gui/user_screen_tab.stkgui +#. I18N: In the user screen +#: src/states_screens/dialogs/message_dialog.cpp:123 +#: src/states_screens/dialogs/message_dialog.cpp:135 +msgid "OK" +msgstr "" + +#. I18N: ./data/gui/feature_unlocked.stkgui +#. I18N: ./data/gui/grand_prix_lose.stkgui +#. I18N: ./data/gui/grand_prix_win.stkgui +#. I18N: ./data/gui/soccer_setup.stkgui +#. I18N: In soccer setup screen +#. I18N: ./data/gui/tutorial_message_dialog.stkgui +#. I18N: Button in tutorial +#: src/states_screens/race_result_gui.cpp:205 +msgid "Continue" +msgstr "" + +#. I18N: ./data/gui/ghost_replay_info_dialog.stkgui +#. I18N: Ghost replay info action +#. I18N: ./data/gui/track_info.stkgui +#. I18N: In the track info screen +msgid "Record the race for ghost replay" +msgstr "" + +#. I18N: ./data/gui/ghost_replay_info_dialog.stkgui +#. I18N: Ghost replay info action +msgid "Watch replay only" +msgstr "" + +#. I18N: ./data/gui/ghost_replay_info_dialog.stkgui +#. I18N: Ghost replay info screen action +#. I18N: ./data/gui/gp_info.stkgui +#. I18N: In the grand prix info screen +#. I18N: ./data/gui/online/networking_lobby.stkgui +#. I18N: In the network lobby +#. I18N: ./data/gui/track_info.stkgui +#. I18N: In the track info screen +msgid "Start Race" +msgstr "" + +#. I18N: ./data/gui/ghost_replay_selection.stkgui +#. I18N: In the ghost replay selection screen +msgid "Ghost Replay Selection" +msgstr "" + +#. I18N: ./data/gui/ghost_replay_selection.stkgui +#. I18N: In the ghost replay selection screen +msgid "Only show replays matching the current difficulty" +msgstr "" + +#. I18N: ./data/gui/ghost_replay_selection.stkgui +#. I18N: In the ghost replay selection screen +msgid "Record ghost replay" +msgstr "" + +#. I18N: ./data/gui/gp_info.stkgui +#. I18N: In the grand prix info screen +msgid "AI karts" +msgstr "" + +#. I18N: ./data/gui/gp_info.stkgui +#. I18N: In the grand prix info screen +#: src/states_screens/ghost_replay_selection.cpp:79 +msgid "Reverse" +msgstr "" + +#. I18N: ./data/gui/gp_info.stkgui +#. I18N: In the grand prix info screen +msgid "Track group" +msgstr "" + +#. I18N: ./data/gui/gp_info.stkgui +#. I18N: In the grand prix info screen +#: src/states_screens/gp_info_screen.cpp:147 +msgid "Continue saved GP" +msgstr "" + +#. I18N: ./data/gui/grand_prix_editor.stkgui +#. I18N: Title in grand prix editor screen +msgid "Grand Prix editor" +msgstr "" + +#. I18N: ./data/gui/grand_prix_editor.stkgui +#. I18N: Menu item +msgid "New" +msgstr "" + +#. I18N: ./data/gui/grand_prix_editor.stkgui +#. I18N: Menu item +msgid "Copy" +msgstr "" + +#. I18N: ./data/gui/grand_prix_editor.stkgui +#. I18N: Menu item +#. I18N: ./data/gui/user_screen.stkgui +#. I18N: In the user screen +#. I18N: ./data/gui/user_screen_tab.stkgui +#. I18N: In the user screen +msgid "Rename" +msgstr "" + +#. I18N: ./data/gui/grand_prix_lose.stkgui +#. I18N: ./data/gui/grand_prix_win.stkgui +msgid "Save Grand Prix" +msgstr "" + +#. I18N: ./data/gui/help1.stkgui +#. I18N: ./data/gui/help2.stkgui +#. I18N: ./data/gui/help3.stkgui +#. I18N: ./data/gui/help4.stkgui +#. I18N: ./data/gui/help5.stkgui +msgid "SuperTuxKart Help" +msgstr "" + +#. I18N: ./data/gui/help1.stkgui +#. I18N: Tab in help menu +#. I18N: ./data/gui/help2.stkgui +#. I18N: Tab in help menu +#. I18N: ./data/gui/help3.stkgui +#. I18N: Tab in help menu +#. I18N: ./data/gui/help4.stkgui +#. I18N: Tab in help menu +#. I18N: ./data/gui/help5.stkgui +#. I18N: Tab in help menu +#. I18N: ./data/gui/multitouch_settings.stkgui +#. I18N: In the multitouch settings screen +msgid "General" +msgstr "" + +#. I18N: ./data/gui/help1.stkgui +#. I18N: Tab in help menu +#. I18N: ./data/gui/help2.stkgui +#. I18N: Tab in help menu +#. I18N: ./data/gui/help3.stkgui +#. I18N: Tab in help menu +#. I18N: ./data/gui/help4.stkgui +#. I18N: Tab in help menu +#. I18N: ./data/gui/help5.stkgui +#. I18N: Tab in help menu +msgid "Weapons" +msgstr "" + +#. I18N: ./data/gui/help1.stkgui +#. I18N: Tab in help menu +#. I18N: ./data/gui/help2.stkgui +#. I18N: Tab in help menu +#. I18N: ./data/gui/help3.stkgui +#. I18N: Tab in help menu +#. I18N: ./data/gui/help4.stkgui +#. I18N: Tab in help menu +#. I18N: ./data/gui/help5.stkgui +#. I18N: Tab in help menu +msgid "Game Modes" +msgstr "" + +#. I18N: ./data/gui/help1.stkgui +#. I18N: Tab in help menu +#. I18N: ./data/gui/help2.stkgui +#. I18N: Tab in help menu +#. I18N: ./data/gui/help3.stkgui +#. I18N: Tab in help menu +#. I18N: ./data/gui/help4.stkgui +#. I18N: Tab in help menu +#. I18N: ./data/gui/help5.stkgui +#. I18N: Tab in help menu +msgid "Multi-player" +msgstr "" + +#. I18N: ./data/gui/help1.stkgui +#. I18N: Tab in help menu +#. I18N: ./data/gui/help2.stkgui +#. I18N: Tab in help menu +#. I18N: ./data/gui/help3.stkgui +#. I18N: Tab in help menu +#. I18N: ./data/gui/help4.stkgui +#. I18N: Tab in help menu +#. I18N: ./data/gui/help5.stkgui +#. I18N: Tab in help menu +msgid "Bananas" +msgstr "" + +#. I18N: ./data/gui/help1.stkgui +msgid "Start the tutorial" +msgstr "" + +#. I18N: ./data/gui/help1.stkgui +#. I18N: In the help menu +msgid "Collect blue boxes. They will give you weapons or other powerups." +msgstr "" + +#. I18N: ./data/gui/help1.stkgui +#. I18N: In the help menu +#: ../stk-assets/tracks/tutorial/scripting.as:32 +#: ../stk-assets/tracks/tutorial/triggers.as:16 +msgid "Avoid bananas!" +msgstr "" + +#. I18N: ./data/gui/help1.stkgui +#. I18N: In the help menu +msgid "" +"Collecting nitro allows you to get speed boosts whenever you wish by " +"pressing the appropriate key. You can see your current level of nitro in the" +" bar at the right of the game screen." +msgstr "" + +#. I18N: ./data/gui/help1.stkgui +#. I18N: In the help menu +msgid "" +"If you see a button with a lock like this one, you need to complete a " +"challenge to unlock it." +msgstr "" + +#. I18N: ./data/gui/help1.stkgui +#. I18N: in the help menu +msgid "The 'skidding' key allows you to skid in sharp turns and get a boost." +msgstr "" + +#. I18N: ./data/gui/help1.stkgui +#. I18N: in the help screen +msgid "* Current key bindings can be seen/changed in menu Options" +msgstr "" + +#. I18N: ./data/gui/help2.stkgui +#. I18N: In the help menu +msgid "To help you win, there are some powerups you can collect:" +msgstr "" + +#. I18N: ./data/gui/help2.stkgui +msgid "" +"BubbleGum - protect yourself with a shield, or use while looking back to " +"leave a sticky pink puddle behind you." +msgstr "" + +#. I18N: ./data/gui/help2.stkgui +msgid "" +"Cake - thrown at the closest rival, best on short ranges and long straights." +msgstr "" + +#. I18N: ./data/gui/help2.stkgui +msgid "" +"Plunger - throw straight to pull an opponent back, or throw while looking " +"back to make one lose sight." +msgstr "" + +#. I18N: ./data/gui/help2.stkgui +msgid "" +"Bowling Ball - bounces off walls. If you are looking back, it will be thrown" +" backwards." +msgstr "" + +#. I18N: ./data/gui/help2.stkgui +msgid "Parachute - slows down all karts in a better position." +msgstr "" + +#. I18N: ./data/gui/help2.stkgui +msgid "" +"Swapper - gift boxes are transformed into bananas and vice versa for a short" +" time." +msgstr "" + +#. I18N: ./data/gui/help2.stkgui +msgid "" +"Basket Ball - bounces after the leader, and might squash and slow down karts" +" down on the way." +msgstr "" + +#. I18N: ./data/gui/help2.stkgui +msgid "Swatter - will squash karts close by, slowing them down." +msgstr "" + +#. I18N: ./data/gui/help3.stkgui +msgid "SuperTuxKart features several game modes" +msgstr "" + +#. I18N: ./data/gui/help3.stkgui +#. I18N: In the help menu +msgid "" +"Regular Race: All blows allowed, so catch weapons and make clever use of " +"them!" +msgstr "" + +#. I18N: ./data/gui/help3.stkgui +#. I18N: In the help menu +msgid "" +"Time Trial: Contains no powerups, so only your driving skills matter! This " +"mode allows you to record the race for replaying." +msgstr "" + +#. I18N: ./data/gui/help3.stkgui +#. I18N: In the help menu +msgid "" +"Follow the leader: Run for second place, as the last kart will be " +"disqualified every time the counter hits zero. Beware: going in front of the" +" leader will get you eliminated too!" +msgstr "" + +#. I18N: ./data/gui/help3.stkgui +#. I18N: In the help menu +msgid "" +"3 Strikes Battle: Hit others with weapons until they lose all their lives." +msgstr "" + +#. I18N: ./data/gui/help3.stkgui +#. I18N: In the help menu +msgid "Soccer: Use your kart to push the ball into the goal." +msgstr "" + +#. I18N: ./data/gui/help3.stkgui +#. I18N: In the help menu +msgid "Egg hunt: Explore tracks to find all hidden eggs." +msgstr "" + +#. I18N: ./data/gui/help3.stkgui +#. I18N: In the help menu +msgid "" +"* Most of these game modes can also be played in a Grand Prix fashion: " +"instead of playing a single race, you play many in a row. The better you " +"rank, the more points you get. In the end, the player with the most points " +"wins the cup." +msgstr "" + +#. I18N: ./data/gui/help4.stkgui +msgid "SuperTuxKart can be played in multiplayer mode on the same computer" +msgstr "" + +#. I18N: ./data/gui/help4.stkgui +msgid "(network play is not yet available)" +msgstr "" + +#. I18N: ./data/gui/help4.stkgui +#. I18N: In the help menu +msgid "" +"First, you will need several input devices (having multiple gamepads or " +"joysticks is the best way to play with several people). Go in the input " +"configuration screen and setup the gamepads. It is also possible to play on " +"keyboard(s), however each player will need a different set of keys, and keep" +" in mind that most keyboards are not appropriate for multiplayer gameplay " +"because they do not support large number of keypresses." +msgstr "" + +#. I18N: ./data/gui/help4.stkgui +#. I18N: In the help menu +msgid "" +"When input devices are configured, you are ready to play. Select the " +"'multiplayer race' icon in the main menu. When it is time to choose a kart, " +"each player can press on the 'fire' key of their gamepad or keyboard to join" +" the game. Each player can use their input device to select their kart. The " +"game continues when everyone selected their kart. Note that the mouse may " +"not be used for this operation." +msgstr "" + +#. I18N: ./data/gui/help5.stkgui +msgid "" +"Hitting a banana can result in one of the following being attached to the " +"kart:" +msgstr "" + +#. I18N: ./data/gui/help5.stkgui +#. I18N: In the help menu +msgid "Anchor - slows down the kart." +msgstr "" + +#. I18N: ./data/gui/help5.stkgui +#. I18N: In the help menu +msgid "Parachute - slows down the kart less than the anchor." +msgstr "" + +#. I18N: ./data/gui/help5.stkgui +#. I18N: In the help menu +msgid "" +"Bomb - detonates after a short amount of time to throw the kart up in the " +"air. Bump into another kart to transfer the bomb to another player." +msgstr "" + +#. I18N: ./data/gui/karts.stkgui +#. I18N: In the kart selection (player setup) screen +#. I18N: ./data/gui/karts_online.stkgui +#. I18N: In the kart selection (player setup) screen +msgid "Choose a Kart" +msgstr "" + +#. I18N: ./data/gui/main_menu.stkgui +#. I18N: Main menu button +msgid "Story Mode" +msgstr "" + +#. I18N: ./data/gui/main_menu.stkgui +#. I18N: Main menu button +msgid "Singleplayer" +msgstr "" + +#. I18N: ./data/gui/main_menu.stkgui +#. I18N: Main menu button +msgid "Multiplayer" +msgstr "" + +#. I18N: ./data/gui/main_menu.stkgui +#. I18N: Main menu button +#. I18N: ./data/gui/user_screen.stkgui +#. I18N: In the user screen +#. I18N: ./data/gui/user_screen_tab.stkgui +#. I18N: In the user screen +#: src/states_screens/main_menu_screen.cpp:78 +#: src/states_screens/online_profile_friends.cpp:222 +msgid "Online" +msgstr "" + +#. I18N: ./data/gui/main_menu.stkgui +#. I18N: Main menu button +msgid "Addons" +msgstr "" + +#. I18N: ./data/gui/main_menu.stkgui +#. I18N: In the main screen +#. I18N: ./data/gui/overworld_dialog.stkgui +#. I18N: In the in-game dialog +#. I18N: ./data/gui/race_paused_dialog.stkgui +#. I18N: Race paused button +msgid "Options" +msgstr "" + +#. I18N: ./data/gui/main_menu.stkgui +#. I18N: In the main screen +#. I18N: ./data/gui/overworld_dialog.stkgui +#. I18N: In the in-game dialog +#. I18N: ./data/gui/race_paused_dialog.stkgui +#. I18N: Race paused button +msgid "Help" +msgstr "" + +#. I18N: ./data/gui/main_menu.stkgui +#. I18N: In the main screen +#: src/states_screens/race_gui_overworld.cpp:511 +msgid "Tutorial" +msgstr "" + +#. I18N: ./data/gui/main_menu.stkgui +#. I18N: In the main screen +#. I18N: ./data/gui/online/profile_achievements_tab.stkgui +#. I18N: Section in the profile screen +#: src/states_screens/online_profile_base.cpp:112 +msgid "Achievements" +msgstr "" + +#. I18N: ./data/gui/main_menu.stkgui +#. I18N: In the main screen +msgid "Grand Prix Editor" +msgstr "" + +#. I18N: ./data/gui/main_menu.stkgui +#. I18N: In the main screen +msgid "About" +msgstr "" + +#. I18N: ./data/gui/main_menu.stkgui +#. I18N: In the main screen +msgid "Quit" +msgstr "" + +#. I18N: ./data/gui/multitouch_settings.stkgui +msgid "Touch Device Settings" +msgstr "" + +#. I18N: ./data/gui/multitouch_settings.stkgui +#. I18N: In the multitouch settings screen +msgid "Device enabled" +msgstr "" + +#. I18N: ./data/gui/multitouch_settings.stkgui +#. I18N: In the multitouch settings screen +msgid "Inverted buttons" +msgstr "" + +#. I18N: ./data/gui/multitouch_settings.stkgui +#. I18N: In the multitouch settings screen +msgid "Buttons scale" +msgstr "" + +#. I18N: ./data/gui/multitouch_settings.stkgui +#. I18N: In the multitouch settings screen +msgid "Accelerometer" +msgstr "" + +#. I18N: ./data/gui/multitouch_settings.stkgui +#. I18N: In the multitouch settings screen +msgid "Advanced" +msgstr "" + +#. I18N: ./data/gui/multitouch_settings.stkgui +#. I18N: In the multitouch settings screen +msgid "Deadzone" +msgstr "" + +#. I18N: ./data/gui/multitouch_settings.stkgui +#. I18N: In the multitouch settings screen +msgid "Sensitivity" +msgstr "" + +#. I18N: ./data/gui/multitouch_settings.stkgui +msgid "Restore defaults" +msgstr "" + +#. I18N: ./data/gui/online/change_password.stkgui +#. I18N: In the change password dialog +msgid "Password Change" +msgstr "" + +#. I18N: ./data/gui/online/change_password.stkgui +#. I18N: In the change password dialog +msgid "Current Password" +msgstr "" + +#. I18N: ./data/gui/online/change_password.stkgui +#. I18N: In the change password dialog +msgid "New Password" +msgstr "" + +#. I18N: ./data/gui/online/change_password.stkgui +#. I18N: In the change password dialog +#. I18N: ./data/gui/online/register.stkgui +#. I18N: In the registration dialog +msgid "Confirm" +msgstr "" + +#. I18N: ./data/gui/online/change_password.stkgui +#. I18N: In the change password dialog +#. I18N: ./data/gui/online/recovery_input.stkgui +#. I18N: In the recovery dialog +msgid "Submit" +msgstr "" + +#. I18N: ./data/gui/online/change_password.stkgui +#. I18N: In the change password dialog +#. I18N: ./data/gui/online/guest_login.stkgui +#. I18N: In the login dialog +#. I18N: ./data/gui/online/notification_dialog.stkgui +#. I18N: User info dialog +#. I18N: ./data/gui/online/recovery_info.stkgui +#. I18N: In the recovery dialog +#. I18N: ./data/gui/online/user_info_dialog.stkgui +#. I18N: User info dialog +#. I18N: ./data/gui/online/vote_dialog.stkgui +#. I18N: Vote dialog +msgid "Close" +msgstr "" + +#. I18N: ./data/gui/online/create_server.stkgui +#. I18N: In the server creation screen +msgid "Server Creation" +msgstr "" + +#. I18N: ./data/gui/online/create_server.stkgui +#. I18N: In the server creation screen +#. I18N: ./data/gui/online/lobby_settings.stkgui +#. I18N: In the lobby settings screen +msgid "Name of the server" +msgstr "" + +#. I18N: ./data/gui/online/create_server.stkgui +#. I18N: In the server creation screen +#. I18N: ./data/gui/online/lobby_settings.stkgui +#. I18N: In the lobby settings screen +msgid "Max. number of players" +msgstr "" + +#. I18N: ./data/gui/online/create_server.stkgui +#. I18N: In the server creation screen +msgid "Password (optional)" +msgstr "" + +#. I18N: ./data/gui/online/create_server.stkgui +#. I18N: In the server creation screen +#: src/states_screens/ghost_replay_selection.cpp:80 +#: src/states_screens/server_selection.cpp:104 +msgid "Difficulty" +msgstr "" + +#. I18N: ./data/gui/online/create_server.stkgui +#. I18N: Difficulty +#. I18N: ./data/gui/race_setup.stkgui +#. I18N: Difficulty +#. I18N: ./data/gui/select_challenge.stkgui +#. I18N: Difficulty +#: src/race/race_manager.hpp:546 +#: src/states_screens/ghost_replay_selection.cpp:121 +msgid "Novice" +msgstr "" + +#. I18N: ./data/gui/online/create_server.stkgui +#. I18N: Difficulty +#. I18N: ./data/gui/race_setup.stkgui +#. I18N: Difficulty +#. I18N: ./data/gui/select_challenge.stkgui +#. I18N: Difficulty +#: src/race/race_manager.hpp:547 +#: src/states_screens/ghost_replay_selection.cpp:121 +msgid "Intermediate" +msgstr "" + +#. I18N: ./data/gui/online/create_server.stkgui +#. I18N: Difficulty +#. I18N: ./data/gui/race_setup.stkgui +#. I18N: Difficulty +#. I18N: ./data/gui/select_challenge.stkgui +#. I18N: Difficulty +#: src/race/race_manager.hpp:548 +#: src/states_screens/ghost_replay_selection.cpp:120 +msgid "Expert" +msgstr "" + +#. I18N: ./data/gui/online/create_server.stkgui +#. I18N: Difficulty +#. I18N: ./data/gui/race_setup.stkgui +#. I18N: Difficulty +#: src/race/race_manager.hpp:549 +#: src/states_screens/ghost_replay_selection.cpp:119 +msgid "SuperTux" +msgstr "" + +#. I18N: ./data/gui/online/create_server.stkgui +#. I18N: In the server creation screen +#: src/states_screens/server_selection.cpp:105 +msgid "Game mode" +msgstr "" + +#. I18N: ./data/gui/online/create_server.stkgui +#. I18N: Multiplayer game mode +#. I18N: Game mode +#: src/race/race_manager.hpp:175 +msgid "Normal Race" +msgstr "" + +#. I18N: ./data/gui/online/create_server.stkgui +#. I18N: Multiplayer game mode +#. I18N: Game mode +#: src/race/race_manager.hpp:177 +msgid "Time Trial" +msgstr "" + +#. I18N: ./data/gui/online/create_server.stkgui +#. I18N: In the server creation screen +msgid "Create" +msgstr "" + +#. I18N: ./data/gui/online/guest_login.stkgui +#. I18N: ./data/gui/user_screen.stkgui +#. I18N: Used as a verb, appears on the main menu (login button) +#: src/states_screens/main_menu_screen.cpp:80 +msgid "Login" +msgstr "" + +#. I18N: ./data/gui/online/guest_login.stkgui +#. I18N: Tab in login menu +msgid "Sign In" +msgstr "" + +#. I18N: ./data/gui/online/guest_login.stkgui +#. I18N: Tab in login menu +msgid "Sign In As Guest" +msgstr "" + +#. I18N: ./data/gui/online/guest_login.stkgui +#. I18N: Tab in login menu +msgid "Register" +msgstr "" + +#. I18N: ./data/gui/online/guest_login.stkgui +#. I18N: In the login dialog +msgid "Guest Log in" +msgstr "" + +#. I18N: ./data/gui/online/guest_login.stkgui +#. I18N: In the login dialog +msgid "" +"Logging in as a guest allows you to participate in online races, but it does" +" not allow you to vote for addons, or collect any achievements while being " +"online." +msgstr "" + +#. I18N: ./data/gui/online/guest_login.stkgui +#. I18N: In the login dialog +msgid "Log In" +msgstr "" + +#. I18N: ./data/gui/online/lobby_settings.stkgui +#. I18N: In the lobby settings screen +msgid "Lobby Settings" +msgstr "" + +#. I18N: ./data/gui/online/networking_lobby.stkgui +#. I18N: In networking lobby +msgid "Lobby" +msgstr "" + +#. I18N: ./data/gui/online/networking_lobby.stkgui +#. I18N: In the networking lobby +#. I18N: ./data/gui/online/server_info_dialog.stkgui +#. I18N: In the networking lobby +msgid "Server name:" +msgstr "" + +#. I18N: ./data/gui/online/networking_lobby.stkgui +#. I18N: In the networking lobby +#. I18N: ./data/gui/online/server_info_dialog.stkgui +#. I18N: In the networking lobby +msgid "Difficulty:" +msgstr "" + +#. I18N: ./data/gui/online/networking_lobby.stkgui +#. I18N: In the networking lobby +#. I18N: ./data/gui/online/server_info_dialog.stkgui +#. I18N: In the networking lobby +msgid "Game mode:" +msgstr "" + +#. I18N: ./data/gui/online/networking_lobby.stkgui +#. I18N: In the networking lobby +msgid "Exit" +msgstr "" + +#. I18N: ./data/gui/online/notification_dialog.stkgui +#. I18N: User info dialog +#. I18N: ./data/gui/online/user_info_dialog.stkgui +#. I18N: User info dialog +msgid "View" +msgstr "" + +#. I18N: ./data/gui/online/profile_achievements.stkgui +#. I18N: ./data/gui/online/profile_achievements_tab.stkgui +#. I18N: ./data/gui/online/profile_friends.stkgui +#. I18N: ./data/gui/online/profile_overview.stkgui +#. I18N: ./data/gui/online/profile_servers.stkgui +#. I18N: ./data/gui/online/profile_settings.stkgui +msgid "..." +msgstr "" + +#. I18N: ./data/gui/online/profile_friends.stkgui +#. I18N: Section in the profile screen +#: src/states_screens/online_profile_base.cpp:111 +msgid "Friends" +msgstr "" + +#. I18N: ./data/gui/online/profile_friends.stkgui +#. I18N: In the profile screen +msgid "Look for more friends:" +msgstr "" + +#. I18N: ./data/gui/online/profile_friends.stkgui +#. I18N: ./data/gui/online/user_search.stkgui +msgid "Search" +msgstr "" + +#. I18N: ./data/gui/online/profile_overview.stkgui +#. I18N: Section in the profile screen +msgid "Overview" +msgstr "" + +#. I18N: ./data/gui/online/profile_servers.stkgui +#. I18N: Section in the profile screen +#: src/states_screens/online_profile_base.cpp:110 +msgid "Servers" +msgstr "" + +#. I18N: ./data/gui/online/profile_servers.stkgui +msgid "Local Networking" +msgstr "" + +#. I18N: ./data/gui/online/profile_servers.stkgui +#. I18N: In the online multiplayer screen +msgid "Find Server" +msgstr "" + +#. I18N: ./data/gui/online/profile_servers.stkgui +#. I18N: In the online multiplayer screen +#: src/states_screens/create_server_screen.cpp:83 +msgid "Create Server" +msgstr "" + +#. I18N: ./data/gui/online/profile_servers.stkgui +msgid "Global Networking" +msgstr "" + +#. I18N: ./data/gui/online/profile_servers.stkgui +#. I18N: In the online multiplayer screen +msgid "Quick Play" +msgstr "" + +#. I18N: ./data/gui/online/profile_settings.stkgui +#. I18N: Section in the profile screen +#: src/states_screens/online_profile_base.cpp:113 +msgid "Account Settings" +msgstr "" + +#. I18N: ./data/gui/online/profile_settings.stkgui +#. I18N: In the online account settings screen +msgid "Password:" +msgstr "" + +#. I18N: ./data/gui/online/profile_settings.stkgui +msgid "Change" +msgstr "" + +#. I18N: ./data/gui/online/recovery_info.stkgui +#. I18N: In the recovery dialog +#. I18N: ./data/gui/online/recovery_input.stkgui +#. I18N: In the recovery dialog +msgid "Account Recovery" +msgstr "" + +#. I18N: ./data/gui/online/recovery_info.stkgui +#. I18N: In the recovery dialog +msgid "" +"You will receive an email with further instructions on how to reset your " +"password. Please be patient and be sure to check your spam folder." +msgstr "" + +#. I18N: ./data/gui/online/recovery_input.stkgui +msgid "" +"Fill in the username and email address you supplied at registration to be " +"able to reset your password." +msgstr "" + +#. I18N: ./data/gui/online/recovery_input.stkgui +#. I18N: In the recovery dialog +#. I18N: ./data/gui/user_screen.stkgui +#. I18N: In the user screen +#. I18N: ./data/gui/user_screen_tab.stkgui +#. I18N: In the user screen +#: src/states_screens/online_profile_friends.cpp:72 +#: src/states_screens/online_user_search.cpp:73 +msgid "Username" +msgstr "" + +#. I18N: ./data/gui/online/recovery_input.stkgui +#. I18N: In the recovery dialog +#. I18N: ./data/gui/online/register.stkgui +#. I18N: In the registration dialog +msgid "Email" +msgstr "" + +#. I18N: ./data/gui/online/register.stkgui +#. I18N: In the registration dialog +msgid "Create User" +msgstr "" + +#. I18N: ./data/gui/online/register.stkgui +#. I18N: Section in the register screen +msgid "New Online Account" +msgstr "" + +#. I18N: ./data/gui/online/register.stkgui +#. I18N: Section in the register screen +msgid "Existing Online Account" +msgstr "" + +#. I18N: ./data/gui/online/register.stkgui +#. I18N: Section in the register screen +msgid "Offline Account" +msgstr "" + +#. I18N: ./data/gui/online/register.stkgui +#. I18N: In the registration dialog +msgid "Local Name" +msgstr "" + +#. I18N: ./data/gui/online/register.stkgui +#. I18N: In the registration dialog +msgid "Online Username" +msgstr "" + +#. I18N: ./data/gui/online/register.stkgui +#. I18N: In the registration dialog +#. I18N: ./data/gui/user_screen.stkgui +#. I18N: In the user screen +#. I18N: ./data/gui/user_screen_tab.stkgui +#. I18N: In the registration dialog +msgid "Password" +msgstr "" + +#. I18N: ./data/gui/online/register.stkgui +#. I18N: In the registration dialog +msgid "" +"You can play without creating an online account by selecting an offline " +"account. Though then you can not connect to friends, vote for addons etc. " +"Please read our privacy statement at http://privacy.supertuxkart.net" +msgstr "" + +#. I18N: ./data/gui/online/registration_terms.stkgui +#. I18N: In the registration dialog +msgid "Terms and Agreement" +msgstr "" + +#. I18N: ./data/gui/online/registration_terms.stkgui +#. I18N: In the registration dialog +msgid "I agree to the above terms and am 13 years or older. " +msgstr "" + +#. I18N: ./data/gui/online/registration_terms.stkgui +#. I18N: In the registration dialog +#. I18N: ./data/gui/online/user_info_dialog.stkgui +#. I18N: User info dialog +msgid "Accept" +msgstr "" + +#. I18N: ./data/gui/online/server_info_dialog.stkgui +#. I18N: In the server info dialog +msgid "Server Info" +msgstr "" + +#. I18N: ./data/gui/online/server_info_dialog.stkgui +#. I18N: In the server info dialog +msgid "Join" +msgstr "" + +#. I18N: ./data/gui/online/server_selection.stkgui +msgid "Server Selection" +msgstr "" + +#. I18N: ./data/gui/online/user_info_dialog.stkgui +#. I18N: User info dialog' dialog +msgid "User Info" +msgstr "" + +#. I18N: ./data/gui/online/user_info_dialog.stkgui +#. I18N: User info dialog +#: src/states_screens/online_profile_achievements.cpp:73 +#: src/states_screens/server_selection.cpp:102 +msgid "Name" +msgstr "" + +#. I18N: ./data/gui/online/user_info_dialog.stkgui +#. I18N: User info dialog +msgid "Add Friend" +msgstr "" + +#. I18N: ./data/gui/online/user_info_dialog.stkgui +#. I18N: User info dialog +msgid "Decline" +msgstr "" + +#. I18N: ./data/gui/online/user_search.stkgui +msgid "User search" +msgstr "" + +#. I18N: ./data/gui/online/vote_dialog.stkgui +#. I18N: In the vote dialog +msgid "Vote" +msgstr "" + +#. I18N: ./data/gui/online/waiting_for_others.stkgui +#. I18N: Networking screen +msgid "Waiting for the others..." +msgstr "" + +#. I18N: ./data/gui/options_audio.stkgui +#. I18N: ./data/gui/options_device.stkgui +#. I18N: ./data/gui/options_input.stkgui +#. I18N: ./data/gui/options_players.stkgui +#. I18N: ./data/gui/options_ui.stkgui +#. I18N: ./data/gui/options_video.stkgui +#. I18N: ./data/gui/user_screen_tab.stkgui +msgid "SuperTuxKart Options" +msgstr "" + +#. I18N: ./data/gui/options_audio.stkgui +#. I18N: Section in the settings menu +#: src/states_screens/options_screen_device.cpp:86 +#: src/states_screens/options_screen_input.cpp:151 +#: src/states_screens/options_screen_ui.cpp:123 +#: src/states_screens/options_screen_video.cpp:238 +#: src/states_screens/user_screen.cpp:660 +msgid "Audio" +msgstr "" + +#. I18N: ./data/gui/options_audio.stkgui +#. I18N: In the audio options screen +msgid "Music" +msgstr "" + +#. I18N: ./data/gui/options_audio.stkgui +#. I18N: In the audio options screen +#. I18N: in the graphical options tooltip; +#. indicates a graphical feature is enabled +#: src/states_screens/dialogs/custom_video_settings.cpp:68 +#: src/states_screens/options_screen_video.cpp:451 +msgid "Enabled" +msgstr "" + +#. I18N: ./data/gui/options_audio.stkgui +#. I18N: In the audio options screen +msgid "Volume" +msgstr "" + +#. I18N: ./data/gui/options_audio.stkgui +#. I18N: In the audio options screen +msgid "Sound Effects" +msgstr "" + +#. I18N: ./data/gui/options_device.stkgui +#. I18N: Section in the settings menu +#. I18N: ./data/gui/options_input.stkgui +#. I18N: Section in the settings menu +#: src/states_screens/options_screen_audio.cpp:68 +#: src/states_screens/options_screen_ui.cpp:125 +#: src/states_screens/options_screen_video.cpp:241 +#: src/states_screens/user_screen.cpp:662 +msgid "Controls" +msgstr "" + +#. I18N: ./data/gui/options_device.stkgui +#. I18N: In the input configuration screen +#: src/states_screens/options_screen_device.cpp:111 +msgid "Delete Configuration" +msgstr "" + +#. I18N: ./data/gui/options_device.stkgui +#. I18N: In the input configuration screen +msgid "Back to device list" +msgstr "" + +#. I18N: ./data/gui/options_input.stkgui +#. I18N: In the input configuration screen +msgid "Press enter or double-click on a device to configure it" +msgstr "" + +#. I18N: ./data/gui/options_input.stkgui +#. I18N: In the input configuration screen +msgid "Add a device" +msgstr "" + +#. I18N: ./data/gui/options_input.stkgui +#. I18N: In the input configuration screen +msgid "" +"* Which config to use will be inferred from which 'Select' key is pressed to" +" join the game." +msgstr "" + +#. I18N: ./data/gui/options_players.stkgui +#. I18N: Section in the settings menu +#. I18N: ./data/gui/user_screen_tab.stkgui +#. I18N: Section in the settings menu +#: src/states_screens/ghost_replay_selection.cpp:78 +#: src/states_screens/options_screen_audio.cpp:67 +#: src/states_screens/options_screen_device.cpp:88 +#: src/states_screens/options_screen_input.cpp:153 +#: src/states_screens/options_screen_ui.cpp:124 +#: src/states_screens/options_screen_video.cpp:240 +#: src/states_screens/server_selection.cpp:103 +msgid "Players" +msgstr "" + +#. I18N: ./data/gui/options_players.stkgui +msgid "You are playing as" +msgstr "" + +#. I18N: ./data/gui/options_players.stkgui +#. I18N: In the player configuration screen +msgid "Press enter or double-click on a player to edit their settings" +msgstr "" + +#. I18N: ./data/gui/options_players.stkgui +#. I18N: In the player configuration screen +msgid "Add Player" +msgstr "" + +#. I18N: ./data/gui/options_ui.stkgui +#. I18N: Section in the settings menu +#: src/states_screens/options_screen_audio.cpp:66 +#: src/states_screens/options_screen_device.cpp:87 +#: src/states_screens/options_screen_input.cpp:152 +#: src/states_screens/options_screen_video.cpp:239 +#: src/states_screens/user_screen.cpp:661 +msgid "User Interface" +msgstr "" + +#. I18N: ./data/gui/options_ui.stkgui +#. I18N: In the ui settings +msgid "Skin" +msgstr "" + +#. I18N: ./data/gui/options_ui.stkgui +#. I18N: In the ui settings +msgid "Display FPS" +msgstr "" + +#. I18N: ./data/gui/options_ui.stkgui +#. I18N: In the ui settings +msgid "Always show login screen" +msgstr "" + +#. I18N: ./data/gui/options_ui.stkgui +#. I18N: In the ui settings +msgid "Send anonymous HW statistics" +msgstr "" + +#. I18N: ./data/gui/options_ui.stkgui +#. I18N: In the ui settings +msgid "Enable per-player handicaps" +msgstr "" + +#. I18N: ./data/gui/options_ui.stkgui +#. I18N: In the ui settings +msgid "Connect to the Internet" +msgstr "" + +#. I18N: ./data/gui/options_video.stkgui +#. I18N: Section in the settings menu +#: src/states_screens/options_screen_audio.cpp:65 +#: src/states_screens/options_screen_device.cpp:85 +#: src/states_screens/options_screen_input.cpp:150 +#: src/states_screens/options_screen_ui.cpp:122 +#: src/states_screens/user_screen.cpp:659 +msgid "Graphics" +msgstr "" + +#. I18N: ./data/gui/options_video.stkgui +#. I18N: In the video settings +msgid "Graphical Effects Level" +msgstr "" + +#. I18N: ./data/gui/options_video.stkgui +#. I18N: In the video settings +msgid "Custom settings..." +msgstr "" + +#. I18N: ./data/gui/options_video.stkgui +#. I18N: In the video settings +msgid "Vertical Sync (requires restart)" +msgstr "" + +#. I18N: ./data/gui/options_video.stkgui +#. I18N: In the video settings +msgid "Resolution" +msgstr "" + +#. I18N: ./data/gui/options_video.stkgui +#. I18N: In the video settings +msgid "Fullscreen" +msgstr "" + +#. I18N: ./data/gui/options_video.stkgui +#. I18N: In the video settings +msgid "Remember window location" +msgstr "" + +#. I18N: ./data/gui/options_video.stkgui +#. I18N: In the video settings +msgid "Apply new resolution" +msgstr "" + +#. I18N: ./data/gui/overworld_dialog.stkgui +#. I18N: ./data/gui/race_paused_dialog.stkgui +msgid "Paused" +msgstr "" + +#. I18N: ./data/gui/overworld_dialog.stkgui +#. I18N: In the in-game dialog +msgid "Back to Game" +msgstr "" + +#. I18N: ./data/gui/overworld_dialog.stkgui +#. I18N: In the in-game dialog +msgid "Select kart" +msgstr "" + +#. I18N: ./data/gui/overworld_dialog.stkgui +#. I18N: In the in-game dialog +msgid "Back to menu" +msgstr "" + +#. I18N: ./data/gui/press_a_key_dialog.stkgui +msgid "Press a key" +msgstr "" + +#. I18N: ./data/gui/press_a_key_dialog.stkgui +#. I18N: When configuring input +msgid "Assign to ESC key" +msgstr "" + +#. I18N: ./data/gui/press_a_key_dialog.stkgui +#. I18N: When configuring input +msgid "Assign nothing" +msgstr "" + +#. I18N: ./data/gui/press_a_key_dialog.stkgui +#. I18N: When configuring input +msgid "Press ESC to cancel" +msgstr "" + +#. I18N: ./data/gui/race_paused_dialog.stkgui +#. I18N: Race paused button +msgid "Back to Race" +msgstr "" + +#. I18N: ./data/gui/race_paused_dialog.stkgui +#. I18N: Race paused button +#: src/states_screens/race_result_gui.cpp:228 +msgid "Setup New Race" +msgstr "" + +#. I18N: ./data/gui/race_paused_dialog.stkgui +#. I18N: Race paused button +msgid "Restart Race" +msgstr "" + +#. I18N: ./data/gui/race_paused_dialog.stkgui +#. I18N: Race paused button +msgid "Give Up Race" +msgstr "" + +#. I18N: ./data/gui/race_paused_dialog.stkgui +#. I18N: Race paused button +msgid "Exit Race" +msgstr "" + +#. I18N: ./data/gui/race_setup.stkgui +#. I18N: ./data/gui/select_challenge.stkgui +#. I18N: ./data/gui/soccer_setup.stkgui +msgid "Race Setup" +msgstr "" + +#. I18N: ./data/gui/race_setup.stkgui +msgid "Select a difficulty" +msgstr "" + +#. I18N: ./data/gui/race_setup.stkgui +msgid "Select a game mode" +msgstr "" + +#. I18N: ./data/gui/select_challenge.stkgui +#. I18N: Type of race, in a challenge +msgid "Type:" +msgstr "" + +#. I18N: ./data/gui/soccer_setup.stkgui +#. I18N: In soccer setup screen +msgid "Number of goals to win" +msgstr "" + +#. I18N: ./data/gui/soccer_setup.stkgui +#. I18N: In soccer setup screen +msgid "Maximum time (min.)" +msgstr "" + +#. I18N: ./data/gui/soccer_setup.stkgui +#. I18N: In soccer setup screen +msgid "Game type (Goals limit / Time limit)" +msgstr "" + +#. I18N: ./data/gui/soccer_setup.stkgui +#. I18N: In soccer setup screen +msgid "Use left/right to choose your team and press fire" +msgstr "" + +#. I18N: ./data/gui/soccer_setup.stkgui +#. I18N: In soccer setup screen +msgid "Red Team" +msgstr "" + +#. I18N: ./data/gui/soccer_setup.stkgui +#. I18N: In soccer setup screen +msgid "Blue Team" +msgstr "" + +#. I18N: ./data/gui/tracks_and_gp.stkgui +#. I18N: In the track and grand prix selection screen +#: src/states_screens/dialogs/select_challenge.cpp:147 +msgid "Grand Prix" +msgstr "" + +#. I18N: ./data/gui/track_info.stkgui +msgid "= Highscores =" +msgstr "" + +#. I18N: ./data/gui/track_info.stkgui +#. I18N: for empty highscores entries +#: src/states_screens/track_info_screen.cpp:322 +msgid "(Empty)" +msgstr "" + +#. I18N: ./data/gui/track_info.stkgui +#. I18N: In the track info screen +msgid "Number of laps" +msgstr "" + +#. I18N: ./data/gui/track_info.stkgui +#. I18N: In the track info screen +msgid "Number of AI karts" +msgstr "" + +#. I18N: ./data/gui/user_screen.stkgui +#. I18N: In the user screen +#. I18N: ./data/gui/user_screen_tab.stkgui +#. I18N: In the user screen +msgid "Remember password" +msgstr "" + +#. I18N: ./data/gui/user_screen.stkgui +#. I18N: In the user screen +#. I18N: ./data/gui/user_screen_tab.stkgui +#. I18N: In the user screen +msgid "Add user" +msgstr "" + +#. I18N: ./data/gui/user_screen.stkgui +#. I18N: In the user screen +#. I18N: ./data/gui/user_screen_tab.stkgui +#. I18N: In the user screen +msgid "Delete" +msgstr "" + +#. I18N: ../stk-assets/tracks/abyss/track.xml +msgid "Antediluvian Abyss" +msgstr "" + +#. I18N: ../stk-assets/tracks/battleisland/track.xml +msgid "Battle Island" +msgstr "" + +#. I18N: ../stk-assets/tracks/candela_city/track.xml +msgid "Candela City" +msgstr "" + +#. I18N: ../stk-assets/tracks/cave/track.xml +msgid "Cave X" +msgstr "" + +#. I18N: ../stk-assets/tracks/cocoa_temple/track.xml +msgid "Cocoa Temple" +msgstr "" + +#. I18N: ../stk-assets/tracks/cornfield_crossing/track.xml +msgid "Cornfield Crossing" +msgstr "" + +#. I18N: ../stk-assets/tracks/fortmagma/track.xml +msgid "Fort Magma" +msgstr "" + +#. I18N: ../stk-assets/tracks/gran_paradiso_island/track.xml +msgid "Gran Paradiso Island" +msgstr "" + +#. I18N: ../stk-assets/tracks/greenvalley/track.xml +msgid "Green Valley" +msgstr "" + +#. I18N: ../stk-assets/tracks/hacienda/track.xml +msgid "Hacienda" +msgstr "" + +#. I18N: ../stk-assets/tracks/icy_soccer_field/track.xml +msgid "Icy Soccer Field" +msgstr "" + +#. I18N: Cutscene subtitle from ../stk-assets/tracks/introcutscene2/scene.xml +#. I18N: ../stk-assets/tracks/introcutscene2/scene.xml +msgid "What's wrong, little hippies? Your great gnu leader is missing?" +msgstr "" + +#. I18N: Cutscene subtitle from ../stk-assets/tracks/introcutscene2/scene.xml +#. I18N: ../stk-assets/tracks/introcutscene2/scene.xml +msgid "Oh yes, see, he's in my castle now and will be served for supper..." +msgstr "" + +#. I18N: Cutscene subtitle from ../stk-assets/tracks/introcutscene2/scene.xml +#. I18N: ../stk-assets/tracks/introcutscene2/scene.xml +msgid "But I'm a fair creature, so I'll make you a deal." +msgstr "" + +#. I18N: Cutscene subtitle from ../stk-assets/tracks/introcutscene2/scene.xml +#. I18N: ../stk-assets/tracks/introcutscene2/scene.xml +msgid "If you can beat me at racing, I will free the old codger." +msgstr "" + +#. I18N: Cutscene subtitle from ../stk-assets/tracks/introcutscene2/scene.xml +#. I18N: ../stk-assets/tracks/introcutscene2/scene.xml +msgid "" +" But you pathetic little twerps will never be able to beat me - King of the " +"Karts!" +msgstr "" + +#. I18N: ../stk-assets/tracks/lasdunasarena/track.xml +msgid "Las Dunas Arena" +msgstr "" + +#. I18N: ../stk-assets/tracks/lighthouse/track.xml +msgid "Around the lighthouse" +msgstr "" + +#. I18N: ../stk-assets/tracks/mansion/track.xml +msgid "Blackhill Mansion" +msgstr "" + +#. I18N: ../stk-assets/tracks/mines/track.xml +msgid "Old Mine" +msgstr "" + +#. I18N: ../stk-assets/tracks/minigolf/track.xml +msgid "Minigolf" +msgstr "" + +#. I18N: ../stk-assets/tracks/olivermath/track.xml +msgid "Oliver's Math Class" +msgstr "" + +#. I18N: ../stk-assets/tracks/sandtrack/track.xml +msgid "Shifting Sands" +msgstr "" + +#. I18N: ../stk-assets/tracks/scotland/track.xml +msgid "Nessie's pond" +msgstr "" + +#. I18N: ../stk-assets/tracks/snowmountain/track.xml +msgid "Northern Resort" +msgstr "" + +#. I18N: ../stk-assets/tracks/snowtuxpeak/track.xml +msgid "Snow Peak" +msgstr "" + +#. I18N: ../stk-assets/tracks/soccer_field/track.xml +msgid "Soccer field" +msgstr "" + +#. I18N: ../stk-assets/tracks/stadium/track.xml +msgid "The Stadium" +msgstr "" + +#. I18N: ../stk-assets/tracks/stk_enterprise/track.xml +msgid "STK Enterprise" +msgstr "" + +#. I18N: ../stk-assets/tracks/temple/track.xml +msgid "Temple" +msgstr "" + +#. I18N: ../stk-assets/tracks/volcano_island/track.xml +msgid "Volcan Island" +msgstr "" + +#. I18N: ../stk-assets/tracks/xr591/track.xml +msgid "XR591" +msgstr "" + +#. I18N: ../stk-assets/tracks/zengarden/track.xml +msgid "Zen Garden" +msgstr "" + +#. I18N: ../stk-assets/karts/adiumy/kart.xml +msgid "Adiumy" +msgstr "" + +#. I18N: ../stk-assets/karts/amanda/kart.xml +msgid "Amanda" +msgstr "" + +#. I18N: ../stk-assets/karts/beastie/kart.xml +msgid "Beastie" +msgstr "" + +#. I18N: ../stk-assets/karts/emule/kart.xml +msgid "Emule" +msgstr "" + +#. I18N: ../stk-assets/karts/gavroche/kart.xml +msgid "Gavroche" +msgstr "" + +#. I18N: ../stk-assets/karts/gnu/kart.xml +msgid "Gnu" +msgstr "" + +#. I18N: ../stk-assets/karts/hexley/kart.xml +msgid "Hexley" +msgstr "" + +#. I18N: ../stk-assets/karts/kiki/kart.xml +msgid "Kiki" +msgstr "" + +#. I18N: ../stk-assets/karts/konqi/kart.xml +msgid "Konqi" +msgstr "" + +#. I18N: ../stk-assets/karts/nolok/kart.xml +msgid "Nolok" +msgstr "" + +#. I18N: ../stk-assets/karts/pidgin/kart.xml +msgid "Pidgin" +msgstr "" + +#. I18N: ../stk-assets/karts/puffy/kart.xml +msgid "Puffy" +msgstr "" + +#. I18N: ../stk-assets/karts/sara_the_racer/kart.xml +msgid "Sara the Racer" +msgstr "" + +#. I18N: ../stk-assets/karts/sara_the_wizard/kart.xml +msgid "Sara the Wizard" +msgstr "" + +#. I18N: ../stk-assets/karts/suzanne/kart.xml +msgid "Suzanne" +msgstr "" + +#. I18N: ../stk-assets/karts/tux/kart.xml +msgid "Tux" +msgstr "" + +#. I18N: ../stk-assets/karts/wilber/kart.xml +msgid "Wilber" +msgstr "" + +#. I18N: ../stk-assets/karts/xue/kart.xml +msgid "Xue" +msgstr "" + +#: src/achievements/achievement.cpp:209 +#, c-format +msgid "Completed achievement \"%s\"." +msgstr "" + +#: src/addons/addons_manager.cpp:104 src/addons/news_manager.cpp:322 +msgid "Failed to connect to the SuperTuxKart add-ons server." +msgstr "" + +#: src/addons/news_manager.cpp:179 +#, c-format +msgid "Error downloading news: '%s'." +msgstr "" + +#. I18N: number of laps to race in a challenge +#: src/challenges/challenge_data.cpp:266 +#: src/states_screens/race_result_gui.cpp:1424 +#, c-format +msgid "Laps: %i" +msgstr "" + +#: src/challenges/challenge_data.cpp:272 +msgid "Follow the leader" +msgstr "" + +#: src/challenges/challenge_data.cpp:518 +#, c-format +msgid "New track '%s' now available" +msgstr "" + +#: src/challenges/challenge_data.cpp:522 +#, c-format +msgid "New game mode '%s' now available" +msgstr "" + +#: src/challenges/challenge_data.cpp:532 +#, c-format +msgid "New Grand Prix '%s' now available" +msgstr "" + +#: src/challenges/challenge_data.cpp:536 +#, c-format +msgid "New difficulty '%s' now available" +msgstr "" + +#: src/challenges/challenge_data.cpp:546 +#, c-format +msgid "New kart '%s' now available" +msgstr "" + +#: src/config/player_manager.cpp:91 +msgid "Currently not signed in" +msgstr "" + +#. I18N: Name of first guest player (without number) +#: src/config/player_manager.cpp:392 +msgid "Guest" +msgstr "" + +#. I18N: Name of further guest players, with a 1, 2, ... attached +#: src/config/player_manager.cpp:397 +#, c-format +msgid "Guest %d" +msgstr "" + +#: src/config/user_config.cpp:700 +msgid "" +"Your config file was malformed, so it was deleted and a new one will be " +"created." +msgstr "" + +#: src/config/user_config.cpp:711 +msgid "" +"Your config file was too old, so it was deleted and a new one will be " +"created." +msgstr "" + +#: src/graphics/irr_driver.cpp:535 +msgid "Video recording started." +msgstr "" + +#: src/graphics/irr_driver.cpp:541 +#, c-format +msgid "Video saved in \"%s\"." +msgstr "" + +#: src/graphics/irr_driver.cpp:545 +msgid "Encoding progress:" +msgstr "" + +#: src/graphics/irr_driver.cpp:1682 +#, c-format +msgid "FPS: %d/%d/%d - %d KTris" +msgstr "" + +#: src/guiengine/engine.cpp:1296 +msgid "Loading" +msgstr "" + +#. I18N: 'handicapped' indicates that per-player handicaps are +#. activated for this kart (i.e. it will drive slower) +#: src/guiengine/widgets/player_kart_widget.cpp:392 +#, c-format +msgid "%s (handicapped)" +msgstr "" + +#: src/guiengine/widgets/player_kart_widget.cpp:451 +#, c-format +msgid "%s is ready" +msgstr "" + +#. I18N: Unbound key binding +#: src/input/binding.cpp:90 +msgid "[none]" +msgstr "" + +#. I18N: input configuration screen: mouse button +#: src/input/binding.cpp:114 +msgctxt "input_key" +msgid "Left Mouse Button" +msgstr "" + +#. I18N: input configuration screen: mouse button +#: src/input/binding.cpp:116 +msgctxt "input_key" +msgid "Right Mouse Button" +msgstr "" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:118 +msgctxt "input_key" +msgid "Cancel" +msgstr "" + +#. I18N: input configuration screen: mouse button +#: src/input/binding.cpp:120 +msgctxt "input_key" +msgid "Middle Mouse Button" +msgstr "" + +#. I18N: input configuration screen: mouse button +#: src/input/binding.cpp:122 +msgctxt "input_key" +msgid "X1 Mouse Button" +msgstr "" + +#. I18N: input configuration screen: mouse button +#: src/input/binding.cpp:124 +msgctxt "input_key" +msgid "X2 Mouse Button" +msgstr "" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:126 +msgctxt "input_key" +msgid "Backspace" +msgstr "" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:128 +msgctxt "input_key" +msgid "Tab" +msgstr "" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:130 +msgctxt "input_key" +msgid "Clear" +msgstr "" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:132 +msgctxt "input_key" +msgid "Return" +msgstr "" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:134 +msgctxt "input_key" +msgid "Shift" +msgstr "" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:136 +msgctxt "input_key" +msgid "Control" +msgstr "" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:138 +msgctxt "input_key" +msgid "Alt/Menu" +msgstr "" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:140 +msgctxt "input_key" +msgid "Pause" +msgstr "" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:142 +msgctxt "input_key" +msgid "Caps Lock" +msgstr "" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:144 +msgctxt "input_key" +msgid "Kana" +msgstr "" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:146 +msgctxt "input_key" +msgid "Junja" +msgstr "" + +#. I18N: input configuration screen: keyboard key +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:149 +msgctxt "input_key" +msgid "Final" +msgstr "" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:151 +msgctxt "input_key" +msgid "Escape" +msgstr "" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:153 +msgctxt "input_key" +msgid "Convert" +msgstr "" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:155 +msgctxt "input_key" +msgid "Nonconvert" +msgstr "" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:157 +msgctxt "input_key" +msgid "Accept" +msgstr "" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:159 +msgctxt "input_key" +msgid "Modechange" +msgstr "" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:161 +msgctxt "input_key" +msgid "Space" +msgstr "" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:163 +msgctxt "input_key" +msgid "Page Up" +msgstr "" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:165 +msgctxt "input_key" +msgid "Page Down" +msgstr "" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:167 +msgctxt "input_key" +msgid "End" +msgstr "" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:169 +msgctxt "input_key" +msgid "Home" +msgstr "" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:171 +msgctxt "input_key" +msgid "Left" +msgstr "" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:173 +msgctxt "input_key" +msgid "Up" +msgstr "" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:175 +msgctxt "input_key" +msgid "Right" +msgstr "" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:177 +msgctxt "input_key" +msgid "Down" +msgstr "" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:179 +msgctxt "input_key" +msgid "Select" +msgstr "" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:181 +msgctxt "input_key" +msgid "Print" +msgstr "" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:183 +msgctxt "input_key" +msgid "Exec" +msgstr "" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:185 +msgctxt "input_key" +msgid "Print Screen" +msgstr "" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:187 +msgctxt "input_key" +msgid "Insert" +msgstr "" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:189 +msgctxt "input_key" +msgid "Delete" +msgstr "" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:191 +msgctxt "input_key" +msgid "Help" +msgstr "" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:229 +msgctxt "input_key" +msgid "Left Logo" +msgstr "" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:231 +msgctxt "input_key" +msgid "Right Logo" +msgstr "" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:233 +msgctxt "input_key" +msgid "Apps" +msgstr "" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:235 +msgctxt "input_key" +msgid "Sleep" +msgstr "" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:237 +msgctxt "input_key" +msgid "Numpad 0" +msgstr "" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:239 +msgctxt "input_key" +msgid "Numpad 1" +msgstr "" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:241 +msgctxt "input_key" +msgid "Numpad 2" +msgstr "" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:243 +msgctxt "input_key" +msgid "Numpad 3" +msgstr "" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:245 +msgctxt "input_key" +msgid "Numpad 4" +msgstr "" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:247 +msgctxt "input_key" +msgid "Numpad 5" +msgstr "" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:249 +msgctxt "input_key" +msgid "Numpad 6" +msgstr "" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:251 +msgctxt "input_key" +msgid "Numpad 7" +msgstr "" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:253 +msgctxt "input_key" +msgid "Numpad 8" +msgstr "" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:255 +msgctxt "input_key" +msgid "Numpad 9" +msgstr "" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:259 +msgctxt "input_key" +msgid "Separator" +msgstr "" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:261 +msgctxt "input_key" +msgid "- (Subtract)" +msgstr "" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:263 +msgctxt "input_key" +msgid "Decimal" +msgstr "" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:265 +msgctxt "input_key" +msgid "/ (Divide)" +msgstr "" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:291 +msgctxt "input_key" +msgid "Num Lock" +msgstr "" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:293 +msgctxt "input_key" +msgid "Scroll Lock" +msgstr "" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:295 +msgctxt "input_key" +msgid "Left Shift" +msgstr "" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:297 +msgctxt "input_key" +msgid "Right Shift" +msgstr "" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:299 +msgctxt "input_key" +msgid "Left Control" +msgstr "" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:301 +msgctxt "input_key" +msgid "Right Control" +msgstr "" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:303 +msgctxt "input_key" +msgid "Left Menu" +msgstr "" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:305 +msgctxt "input_key" +msgid "Right Menu" +msgstr "" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:311 +msgctxt "input_key" +msgid "Attn" +msgstr "" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:313 +msgctxt "input_key" +msgid "Crsel" +msgstr "" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:315 +msgctxt "input_key" +msgid "Exsel" +msgstr "" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:317 +msgctxt "input_key" +msgid "Ereof" +msgstr "" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:319 +msgctxt "input_key" +msgid "Play" +msgstr "" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:321 +msgctxt "input_key" +msgid "Zoom" +msgstr "" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:323 +msgctxt "input_key" +msgid "Pa1" +msgstr "" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:325 +msgctxt "input_key" +msgid "Oem Clear" +msgstr "" + +#. I18N: to appear in input configuration screen, for gamepad hats +#: src/input/binding.cpp:334 src/input/binding.cpp:339 +#, c-format +msgid "Gamepad hat %d" +msgstr "" + +#. I18N: to appear in input configuration screen, for gamepad axes +#: src/input/binding.cpp:346 +#, c-format +msgid "Axis %d %s" +msgstr "" + +#. I18N: to appear in input configuration screen, for gamepad axes +#: src/input/binding.cpp:353 +#, c-format +msgid "Axis %d inverted" +msgstr "" + +#. I18N: to appear in input configuration screen, for gamepad axes +#: src/input/binding.cpp:358 +#, c-format +msgid "Axis %d" +msgstr "" + +#. I18N: to appear in input configuration screen, for gamepad buttons +#: src/input/binding.cpp:366 +#, c-format +msgid "Gamepad button %d" +msgstr "" + +#. I18N: to appear in input configuration screen, for mouse (might not be used +#. at all) +#: src/input/binding.cpp:369 +#, c-format +msgid "Mouse button %d" +msgstr "" + +#. I18N: to appear in input configuration screen, for mouse (might not be used +#. at all) +#: src/input/binding.cpp:373 +#, c-format +msgid "Mouse axis %d %s" +msgstr "" + +#. I18N: shown when config file is too old +#: src/input/device_manager.cpp:543 +msgid "Please re-configure your key bindings." +msgstr "" + +#: src/input/device_manager.cpp:544 +msgid "Your input config file is not compatible with this version of STK." +msgstr "" + +#. I18N: Name of the black button on xbox controller +#: src/input/gamepad_config.cpp:167 +msgid "Black" +msgstr "" + +#. I18N: Name of the white button on xbox controller +#: src/input/gamepad_config.cpp:171 +msgid "White" +msgstr "" + +#. I18N: name of buttons on gamepads +#. I18N: name of stick on gamepads +#: src/input/gamepad_config.cpp:179 src/input/gamepad_config.cpp:239 +msgid "Left trigger" +msgstr "" + +#. I18N: name of buttons on gamepads +#. I18N: name of stick on gamepads +#: src/input/gamepad_config.cpp:181 src/input/gamepad_config.cpp:244 +msgid "Right thumb right" +msgstr "" + +#. I18N: name of buttons on gamepads +#. I18N: name of stick on gamepads +#: src/input/gamepad_config.cpp:183 src/input/gamepad_config.cpp:246 +msgid "Right thumb left" +msgstr "" + +#. I18N: name of buttons on gamepads +#. I18N: name of trigger on gamepads +#: src/input/gamepad_config.cpp:185 src/input/gamepad_config.cpp:240 +msgid "Right thumb down" +msgstr "" + +#. I18N: name of buttons on gamepads +#. I18N: name of stick on gamepads +#: src/input/gamepad_config.cpp:187 src/input/gamepad_config.cpp:242 +msgid "Right thumb up" +msgstr "" + +#. I18N: name of buttons on gamepads +#: src/input/gamepad_config.cpp:189 src/input/gamepad_config.cpp:248 +msgid "Right trigger" +msgstr "" + +#. I18N: name of buttons on gamepads +#: src/input/gamepad_config.cpp:191 src/input/gamepad_config.cpp:253 +msgid "DPad right" +msgstr "" + +#. I18N: name of buttons on gamepads +#: src/input/gamepad_config.cpp:193 src/input/gamepad_config.cpp:255 +msgid "DPad left" +msgstr "" + +#. I18N: name of buttons on gamepads +#: src/input/gamepad_config.cpp:195 src/input/gamepad_config.cpp:251 +msgid "DPad down" +msgstr "" + +#. I18N: name of buttons on gamepads +#. I18N: name of trigger on gamepads +#: src/input/gamepad_config.cpp:197 src/input/gamepad_config.cpp:249 +msgid "DPad up" +msgstr "" + +#. I18N: name of buttons on gamepads +#: src/input/gamepad_config.cpp:212 +msgid "Left bumper" +msgstr "" + +#. I18N: name of buttons on gamepads +#: src/input/gamepad_config.cpp:214 +msgid "Right bumper" +msgstr "" + +#. I18N: name of buttons on gamepads +#: src/input/gamepad_config.cpp:218 +msgid "Start" +msgstr "" + +#. I18N: name of buttons on gamepads +#: src/input/gamepad_config.cpp:220 +msgid "Left thumb button" +msgstr "" + +#. I18N: name of buttons on gamepads +#: src/input/gamepad_config.cpp:222 +msgid "Right thumb button" +msgstr "" + +#. I18N: name of stick on gamepads +#: src/input/gamepad_config.cpp:231 +msgid "Left thumb right" +msgstr "" + +#. I18N: name of stick on gamepads +#: src/input/gamepad_config.cpp:233 +msgid "Left thumb left" +msgstr "" + +#. I18N: name of stick on gamepads +#: src/input/gamepad_config.cpp:235 +msgid "Left thumb down" +msgstr "" + +#. I18N: name of stick on gamepads +#: src/input/gamepad_config.cpp:237 +msgid "Left thumb up" +msgstr "" + +#: src/input/input_manager.cpp:807 +#, c-format +msgid "Ignoring '%s'. You needed to join earlier to play!" +msgstr "" + +#: src/input/input_manager.cpp:837 +msgid "Only the Game Master may act at this point!" +msgstr "" + +#: src/input/wiimote_manager.cpp:388 +msgid "" +"Connect your wiimote to the Bluetooth manager, then click on Ok. Detailed " +"instructions at supertuxkart.net/Wiimote" +msgstr "" + +#: src/input/wiimote_manager.cpp:391 +msgid "" +"Press the buttons 1+2 simultaneously on your wiimote to put it in discovery " +"mode, then click on Ok. Detailed instructions at supertuxkart.net/Wiimote" +msgstr "" + +#: src/input/wiimote_manager.cpp:414 +#, c-format +msgid "Found %d wiimote" +msgid_plural "Found %d wiimotes" +msgstr[0] "" +msgstr[1] "" + +#: src/input/wiimote_manager.cpp:419 +msgid "Could not detect any wiimote :/" +msgstr "" + +#: src/karts/controller/local_player_controller.cpp:241 +msgid "Penalty time!!" +msgstr "" + +#: src/karts/controller/local_player_controller.cpp:243 +msgid "Don't accelerate before go" +msgstr "" + +#: src/karts/controller/spare_tire_ai.cpp:147 +msgid "You can have at most 3 lives!" +msgstr "" + +#: src/karts/controller/spare_tire_ai.cpp:153 +msgid "+1 life." +msgstr "" + +#: src/karts/kart.cpp:908 src/karts/kart.cpp:913 +msgid "You won the race!" +msgstr "" + +#: src/karts/kart.cpp:913 +msgid "You finished the race!" +msgstr "" + +#: src/main.cpp:1501 +msgid "" +"SuperTuxKart may connect to a server to download add-ons and notify you of " +"updates. We also collect anonymous hardware statistics to help with the " +"development of STK. Please read our privacy policy at " +"http://privacy.supertuxkart.net. Would you like this feature to be enabled? " +"(To change this setting at a later time, go to options, select tab 'User " +"Interface', and edit \"Connect to the Internet\" and \"Send anonymous HW " +"statistics\")." +msgstr "" + +#: src/main.cpp:1654 +msgid "Your screen resolution is too low to run STK." +msgstr "" + +#: src/main.cpp:1668 +msgid "" +"Your driver version is too old. Please install the latest video drivers." +msgstr "" + +#: src/main.cpp:1685 +#, c-format +msgid "" +"Your OpenGL version appears to be too old. Please verify if an update for " +"your video driver is available. SuperTuxKart requires %s or better." +msgstr "" + +#: src/modes/easter_egg_hunt.cpp:202 +#, c-format +msgid "Eggs: %d / %d" +msgstr "" + +#: src/modes/follow_the_leader.cpp:62 src/modes/follow_the_leader.cpp:285 +msgid "Leader" +msgstr "" + +#: src/modes/linear_world.cpp:287 +msgid "Final lap!" +msgstr "" + +#: src/modes/linear_world.cpp:314 +#, c-format +msgid "Lap %i" +msgstr "" + +#: src/modes/linear_world.cpp:369 +#, c-format +msgctxt "fastest_lap" +msgid "%s by %s" +msgstr "" + +#: src/modes/linear_world.cpp:374 +msgid "New fastest lap" +msgstr "" + +#: src/modes/linear_world.cpp:891 +msgid "WRONG WAY!" +msgstr "" + +#: src/modes/three_strikes_battle.cpp:664 +#, c-format +msgid "%i spare tire kart has been spawned!" +msgid_plural "%i spare tire karts have been spawned!" +msgstr[0] "" +msgstr[1] "" + +#: src/modes/world.cpp:1202 +msgid "You have been eliminated!" +msgstr "" + +#: src/modes/world.cpp:1205 +#, c-format +msgid "'%s' has been eliminated." +msgstr "" + +#: src/network/protocols/server_lobby.cpp:318 +#, c-format +msgid "Failed to register server: %s" +msgstr "" + +#: src/network/servers_manager.cpp:198 +msgid "No LAN server detected" +msgstr "" + +#: src/online/online_player_profile.cpp:419 +#, c-format +msgid "%s is now online." +msgstr "" + +#: src/online/online_player_profile.cpp:423 +#, c-format +msgid "%s and %s are now online." +msgstr "" + +#: src/online/online_player_profile.cpp:428 +#, c-format +msgid "%s, %s and %s are now online." +msgstr "" + +#. I18N: Only used for count > 3 +#: src/online/online_player_profile.cpp:434 +#, c-format +msgid "%d friend is now online." +msgid_plural "%d friends are now online." +msgstr[0] "" +msgstr[1] "" + +#: src/online/online_player_profile.cpp:471 +#, c-format +msgid "You have %d new friend request!" +msgid_plural "You have %d new friend requests!" +msgstr[0] "" +msgstr[1] "" + +#: src/online/online_player_profile.cpp:477 +msgid "You have a new friend request!" +msgstr "" + +#: src/online/xml_request.cpp:83 +msgid "" +"Unable to connect to the server. Check your internet connection or try again" +" later." +msgstr "" + +#: src/race/grand_prix_data.hpp:171 +msgid "Random Grand Prix" +msgstr "" + +#: src/race/highscore_manager.cpp:101 +msgid "" +"The highscore file was too old,\n" +"all highscores have been erased." +msgstr "" + +#. I18N: Game mode +#: src/race/race_manager.hpp:179 +msgid "Follow the Leader" +msgstr "" + +#. I18N: Game mode +#: src/race/race_manager.hpp:181 +msgid "3 Strikes Battle" +msgstr "" + +#. I18N: Game mode +#: src/race/race_manager.hpp:183 +msgid "Egg Hunt" +msgstr "" + +#. I18N: Game mode +#: src/race/race_manager.hpp:185 +msgid "Soccer" +msgstr "" + +#: src/replay/replay_recorder.cpp:183 +msgid "Incomplete replay file will not be saved." +msgstr "" + +#: src/replay/replay_recorder.cpp:219 +#, c-format +msgid "Replay saved in \"%s\"." +msgstr "" + +#: src/states_screens/addons_screen.cpp:50 +msgid "1 week" +msgstr "" + +#: src/states_screens/addons_screen.cpp:51 +msgid "2 weeks" +msgstr "" + +#: src/states_screens/addons_screen.cpp:52 +msgid "1 month" +msgstr "" + +#: src/states_screens/addons_screen.cpp:53 +msgid "3 months" +msgstr "" + +#: src/states_screens/addons_screen.cpp:54 +msgid "6 months" +msgstr "" + +#: src/states_screens/addons_screen.cpp:55 +msgid "9 months" +msgstr "" + +#: src/states_screens/addons_screen.cpp:56 +msgid "1 year" +msgstr "" + +#: src/states_screens/addons_screen.cpp:57 +msgid "2 years" +msgstr "" + +#: src/states_screens/addons_screen.cpp:115 +msgid "Add-on name" +msgstr "" + +#: src/states_screens/addons_screen.cpp:116 +msgid "Updated date" +msgstr "" + +#: src/states_screens/addons_screen.cpp:147 +msgid "" +"Access to the Internet is disabled. (To enable it, go to options and select " +"tab 'User Interface')" +msgstr "" + +#. I18N: as in: The Old Island by Johannes Sjolund +#: src/states_screens/addons_screen.cpp:343 +#, c-format +msgctxt "addons" +msgid "%s by %s" +msgstr "" + +#: src/states_screens/addons_screen.cpp:474 +msgid "Please wait while addons are updated" +msgstr "" + +#: src/states_screens/addons_screen.cpp:551 +#: src/states_screens/main_menu_screen.cpp:571 +msgid "" +"Sorry, an error occurred while contacting the add-ons website. Make sure you" +" are connected to the Internet and that SuperTuxKart is not blocked by a " +"firewall" +msgstr "" + +#. I18N: arena group name +#. I18N: track group name +#. I18N: kart group name +#. I18N: track group name +#: src/states_screens/arenas_screen.cpp:81 +#: src/states_screens/easter_egg_screen.cpp:143 +#: src/states_screens/kart_selection.cpp:285 +#: src/states_screens/tracks_and_gp_screen.cpp:146 +msgid "standard" +msgstr "" + +#: src/states_screens/arenas_screen.cpp:275 +#: src/states_screens/arenas_screen.cpp:327 +#: src/states_screens/easter_egg_screen.cpp:225 +#: src/states_screens/easter_egg_screen.cpp:256 +#: src/states_screens/kart_selection.cpp:864 +#: src/states_screens/kart_selection.cpp:1481 +#: src/states_screens/race_setup_screen.cpp:99 +msgid "Locked : solve active challenges to gain access to more!" +msgstr "" + +#: src/states_screens/arenas_screen.cpp:339 +msgid "Random Arena" +msgstr "" + +#: src/states_screens/arenas_screen.cpp:343 +#, c-format +msgid "%d arena unavailable in single player." +msgid_plural "%d arenas unavailable in single player." +msgstr[0] "" +msgstr[1] "" + +#: src/states_screens/create_server_screen.cpp:82 +msgid "Create LAN Server" +msgstr "" + +#: src/states_screens/create_server_screen.cpp:87 +#, c-format +msgid "%s's server" +msgstr "" + +#: src/states_screens/create_server_screen.cpp:154 +msgid "Creating server" +msgstr "" + +#: src/states_screens/create_server_screen.cpp:181 +msgid "Name has to be between 4 and 30 characters long!" +msgstr "" + +#: src/states_screens/create_server_screen.cpp:188 +msgid "The maxinum number of players has to be between 2 and 12." +msgstr "" + +#: src/states_screens/credits.cpp:180 +msgid "translator-credits" +msgstr "" + +#: src/states_screens/dialogs/addons_loading.cpp:97 +msgid "Update" +msgstr "" + +#: src/states_screens/dialogs/addons_loading.cpp:109 +#, c-format +msgid "Version: %d" +msgstr "" + +#: src/states_screens/dialogs/addons_loading.cpp:140 +msgid "featured" +msgstr "" + +#: src/states_screens/dialogs/addons_loading.cpp:166 +#, c-format +msgid "%s MB" +msgstr "" + +#: src/states_screens/dialogs/addons_loading.cpp:173 +#: src/states_screens/dialogs/addons_loading.cpp:177 +#, c-format +msgid "%s KB" +msgstr "" + +#: src/states_screens/dialogs/addons_loading.cpp:178 +#, c-format +msgid "Size: %s" +msgstr "" + +#: src/states_screens/dialogs/addons_loading.cpp:280 +msgid "Sorry, downloading the add-on failed" +msgstr "" + +#: src/states_screens/dialogs/addons_loading.cpp:361 +#, c-format +msgid "Problems installing the addon '%s'." +msgstr "" + +#: src/states_screens/dialogs/addons_loading.cpp:372 +#: src/states_screens/dialogs/addons_loading.cpp:409 +msgid "Try again" +msgstr "" + +#: src/states_screens/dialogs/addons_loading.cpp:398 +#, c-format +msgid "Problems removing the addon '%s'." +msgstr "" + +#: src/states_screens/dialogs/add_device_dialog.cpp:64 +msgid "" +"To add a new Gamepad/Joystick device, simply start SuperTuxKart with it connected and it will appear in the list.\n" +"\n" +"To add a keyboard config, you can use the button below, HOWEVER please note that most keyboards only support a limited amount of simultaneous keypresses and are thus inappropriate for multiplayer gameplay. (You can, however, connect multiple keyboards to the computer. Remember that everyone still needs different keybindings in this case.)" +msgstr "" + +#. I18N: In the 'add new input device' dialog +#: src/states_screens/dialogs/add_device_dialog.cpp:90 +msgid "Add Wiimote" +msgstr "" + +#. I18N: In the 'add new input device' dialog +#: src/states_screens/dialogs/add_device_dialog.cpp:111 +msgid "Add Keyboard Configuration" +msgstr "" + +#: src/states_screens/dialogs/change_password_dialog.cpp:134 +msgid "Current password invalid." +msgstr "" + +#: src/states_screens/dialogs/change_password_dialog.cpp:140 +#: src/states_screens/register_screen.cpp:289 +msgid "Password has to be between 8 and 30 characters long!" +msgstr "" + +#: src/states_screens/dialogs/change_password_dialog.cpp:147 +#: src/states_screens/register_screen.cpp:273 +msgid "Passwords don't match!" +msgstr "" + +#: src/states_screens/dialogs/change_password_dialog.cpp:210 +msgid "Password successfully changed." +msgstr "" + +#: src/states_screens/dialogs/change_password_dialog.cpp:235 +#: src/states_screens/dialogs/recovery_dialog.cpp:209 +#: src/states_screens/register_screen.cpp:354 +msgid "Validating info" +msgstr "" + +#. I18N: In the 'confirm resolution' dialog, that's shown when switching +#. resoluton +#: src/states_screens/dialogs/confirm_resolution_dialog.cpp:82 +#, c-format +msgid "Confirm resolution within %i second" +msgid_plural "Confirm resolution within %i seconds" +msgstr[0] "" +msgstr[1] "" + +#. I18N: Geometry level disabled : lowest level, no details +#. I18N: in the graphical options tooltip; +#. indicates a graphical feature is disabled +#: src/states_screens/dialogs/custom_video_settings.cpp:66 +#: src/states_screens/dialogs/custom_video_settings.cpp:72 +#: src/states_screens/dialogs/custom_video_settings.cpp:84 +#: src/states_screens/dialogs/custom_video_settings.cpp:101 +#: src/states_screens/dialogs/multitouch_settings_dialog.cpp:59 +#: src/states_screens/options_screen_video.cpp:454 +msgid "Disabled" +msgstr "" + +#. I18N: if only important animated scenery is enabled +#: src/states_screens/dialogs/custom_video_settings.cpp:67 +#: src/states_screens/options_screen_video.cpp:462 +msgid "Important only" +msgstr "" + +#. I18N: animations setting (only karts with human players are animated) +#: src/states_screens/dialogs/custom_video_settings.cpp:74 +msgid "Human players only" +msgstr "" + +#: src/states_screens/dialogs/custom_video_settings.cpp:77 +msgid "Enabled for all" +msgstr "" + +#. I18N: Geometry level low : few details are displayed +#. I18N: in the graphical options tooltip; +#. indicates the rendered image quality is low +#: src/states_screens/dialogs/custom_video_settings.cpp:86 +#: src/states_screens/dialogs/custom_video_settings.cpp:95 +#: src/states_screens/dialogs/custom_video_settings.cpp:102 +#: src/states_screens/options_screen_video.cpp:469 +msgid "Low" +msgstr "" + +#. I18N: Geometry level high : everything is displayed +#. I18N: in the graphical options tooltip; +#. indicates the rendered image quality is high +#: src/states_screens/dialogs/custom_video_settings.cpp:88 +#: src/states_screens/dialogs/custom_video_settings.cpp:96 +#: src/states_screens/dialogs/custom_video_settings.cpp:103 +#: src/states_screens/options_screen_video.cpp:472 +msgid "High" +msgstr "" + +#. I18N: in the graphical options tooltip; +#. indicates the rendered image quality is very low +#: src/states_screens/dialogs/custom_video_settings.cpp:94 +#: src/states_screens/options_screen_video.cpp:466 +msgid "Very Low" +msgstr "" + +#. I18N: in the graphical options tooltip; +#. indicates the rendered image quality is very high +#: src/states_screens/dialogs/custom_video_settings.cpp:97 +#: src/states_screens/options_screen_video.cpp:475 +msgid "Very High" +msgstr "" + +#: src/states_screens/dialogs/message_dialog.cpp:129 +#: src/states_screens/edit_gp_screen.cpp:257 +#: src/states_screens/ghost_replay_selection.cpp:117 +msgid "No" +msgstr "" + +#: src/states_screens/dialogs/multitouch_settings_dialog.cpp:60 +msgid "Tablet" +msgstr "" + +#: src/states_screens/dialogs/multitouch_settings_dialog.cpp:61 +msgid "Phone" +msgstr "" + +#: src/states_screens/dialogs/recovery_dialog.cpp:121 +msgid "Username and/or email address invalid." +msgstr "" + +#: src/states_screens/dialogs/registration_dialog.cpp:42 +#, c-format +msgid "" +"Please read the terms and conditions for SuperTuxKart at '%s'. You must " +"agree to these terms in order to register an account for STK. By checking " +"the box below, you are confirming that you understand these terms. If you " +"have any questions or comments regarding these terms, one of the members of " +"the development team would gladly assist you." +msgstr "" + +#: src/states_screens/dialogs/select_challenge.cpp:52 +#, c-format +msgid "Required Rank: %i" +msgstr "" + +#: src/states_screens/dialogs/select_challenge.cpp:57 +#, c-format +msgid "Required Time: %i" +msgstr "" + +#: src/states_screens/dialogs/select_challenge.cpp:63 +#, c-format +msgid "Required Nitro Points: %i" +msgstr "" + +#: src/states_screens/dialogs/select_challenge.cpp:69 +#, c-format +msgid "Number of AI Karts: %i" +msgstr "" + +#: src/states_screens/dialogs/select_challenge.cpp:149 +msgid "Nitro challenge" +msgstr "" + +#: src/states_screens/dialogs/select_challenge.cpp:151 +#: src/states_screens/race_setup_screen.cpp:136 +msgid "Ghost replay race" +msgstr "" + +#: src/states_screens/dialogs/server_info_dialog.cpp:75 +msgid "Server successfully created. You can now join it." +msgstr "" + +#: src/states_screens/dialogs/user_info_dialog.cpp:56 +msgid "Cancel Request" +msgstr "" + +#: src/states_screens/dialogs/user_info_dialog.cpp:154 +#: src/states_screens/dialogs/user_info_dialog.cpp:211 +msgid "Today" +msgstr "" + +#: src/states_screens/dialogs/user_info_dialog.cpp:158 +msgid "Friend request sent!" +msgstr "" + +#: src/states_screens/dialogs/user_info_dialog.cpp:215 +msgid "Friend request accepted!" +msgstr "" + +#: src/states_screens/dialogs/user_info_dialog.cpp:267 +msgid "Friend request declined!" +msgstr "" + +#: src/states_screens/dialogs/user_info_dialog.cpp:313 +msgid "Friend removed!" +msgstr "" + +#: src/states_screens/dialogs/user_info_dialog.cpp:364 +msgid "Friend request cancelled!" +msgstr "" + +#: src/states_screens/dialogs/user_info_dialog.cpp:474 +msgid "Processing" +msgstr "" + +#: src/states_screens/dialogs/vote_dialog.cpp:171 +msgid "Fetching last vote" +msgstr "" + +#: src/states_screens/dialogs/vote_dialog.cpp:190 +msgid "You can adapt your previous rating by clicking the stars beneath." +msgstr "" + +#: src/states_screens/dialogs/vote_dialog.cpp:195 +msgid "" +"You have not yet voted for this addon. Select your desired rating by " +"clicking the stars beneath" +msgstr "" + +#: src/states_screens/dialogs/vote_dialog.cpp:230 +msgid "Vote successful! You can now close the window." +msgstr "" + +#: src/states_screens/dialogs/vote_dialog.cpp:247 +msgid "Performing vote" +msgstr "" + +#: src/states_screens/easter_egg_screen.cpp:270 +#: src/states_screens/tracks_and_gp_screen.cpp:292 +#: src/states_screens/tracks_screen.cpp:241 +msgid "Random Track" +msgstr "" + +#: src/states_screens/edit_gp_screen.cpp:66 +#: src/states_screens/ghost_replay_selection.cpp:77 +msgid "Track" +msgstr "" + +#: src/states_screens/edit_gp_screen.cpp:67 +#: src/states_screens/ghost_replay_selection.cpp:81 +msgid "Laps" +msgstr "" + +#: src/states_screens/edit_gp_screen.cpp:68 +msgid "Reversed" +msgstr "" + +#: src/states_screens/edit_gp_screen.cpp:124 +#: src/states_screens/ghost_replay_selection.cpp:177 +#: src/states_screens/grand_prix_editor_screen.cpp:112 +#, c-format +msgid "Are you sure you want to remove '%s'?" +msgstr "" + +#: src/states_screens/edit_gp_screen.cpp:141 +msgid "Do you want to save your changes?" +msgstr "" + +#. I18N: Indicate that the grand prix is modified and not saved +#: src/states_screens/edit_gp_screen.cpp:286 +#, c-format +msgid "%s (+)" +msgstr "" + +#: src/states_screens/edit_gp_screen.cpp:325 +msgid "An error occurred while trying to save your grand prix." +msgstr "" + +#: src/states_screens/edit_track_screen.cpp:235 +msgid "Select a track" +msgstr "" + +#: src/states_screens/feature_unlocked.cpp:201 +#, c-format +msgid "You completed the easy challenge! Points earned on this level: %i/%i" +msgstr "" + +#: src/states_screens/feature_unlocked.cpp:205 +#, c-format +msgid "" +"You completed the intermediate challenge! Points earned on this level: %i/%i" +msgstr "" + +#: src/states_screens/feature_unlocked.cpp:209 +#, c-format +msgid "" +"You completed the difficult challenge! Points earned on this level: %i/%i" +msgstr "" + +#: src/states_screens/feature_unlocked.cpp:494 +msgid "Challenge Completed" +msgstr "" + +#: src/states_screens/feature_unlocked.cpp:531 +msgid "You unlocked track %0" +msgstr "" + +#: src/states_screens/feature_unlocked.cpp:569 +msgid "You unlocked grand prix %0" +msgstr "" + +#: src/states_screens/ghost_replay_selection.cpp:82 +msgid "Finish Time" +msgstr "" + +#: src/states_screens/ghost_replay_selection.cpp:83 +msgid "User" +msgstr "" + +#: src/states_screens/gp_info_screen.cpp:74 +msgid "Default" +msgstr "" + +#. I18N: if no kart animations are enabled +#: src/states_screens/gp_info_screen.cpp:75 +#: src/states_screens/options_screen_video.cpp:460 +msgid "None" +msgstr "" + +#: src/states_screens/gp_info_screen.cpp:77 +msgid "Random" +msgstr "" + +#: src/states_screens/gp_info_screen.cpp:154 +#: src/states_screens/gp_info_screen.cpp:179 +msgid "Reload" +msgstr "" + +#: src/states_screens/grand_prix_cutscene.cpp:75 +#: src/states_screens/grand_prix_editor_screen.cpp:101 +#: src/states_screens/grand_prix_editor_screen.cpp:118 +msgid "Please enter the name of the grand prix" +msgstr "" + +#: src/states_screens/grand_prix_editor_screen.cpp:169 +msgid "Please select a Grand Prix" +msgstr "" + +#: src/states_screens/grand_prix_editor_screen.cpp:338 +msgid "User defined" +msgstr "" + +#: src/states_screens/grand_prix_editor_screen.cpp:351 +msgid "Name is empty." +msgstr "" + +#: src/states_screens/grand_prix_editor_screen.cpp:359 +msgid "Another grand prix with this name already exists." +msgstr "" + +#: src/states_screens/grand_prix_editor_screen.cpp:365 +msgid "Name is too long." +msgstr "" + +#. I18N: when failing a GP +#: src/states_screens/grand_prix_lose.cpp:155 +msgid "Better luck next time!" +msgstr "" + +#: src/states_screens/grand_prix_win.cpp:166 +#: src/states_screens/race_result_gui.cpp:194 +msgid "You completed a challenge!" +msgstr "" + +#: src/states_screens/grand_prix_win.cpp:322 +msgid "You completed the Grand Prix!" +msgstr "" + +#: src/states_screens/kart_selection.cpp:843 +#: src/states_screens/kart_selection.cpp:1499 +msgid "Random Kart" +msgstr "" + +#: src/states_screens/kart_selection.cpp:859 +msgid "Locked" +msgstr "" + +#: src/states_screens/kart_selection.cpp:961 +msgid "" +"Everyone:\n" +"Press the 'Select' button to join the game" +msgstr "" + +#: src/states_screens/main_menu_screen.cpp:510 +msgid "" +"You can not play online without internet access. If you want to play online," +" go to options, select tab 'User Interface', and edit \"Connect to the " +"Internet\"." +msgstr "" + +#: src/states_screens/main_menu_screen.cpp:534 +msgid "" +"You can not download addons without internet access. If you want to download" +" addons, go to options, select tab 'User Interface', and edit \"Connect to " +"the Internet\"." +msgstr "" + +#: src/states_screens/main_menu_screen.cpp:566 +msgid "The add-ons module is currently disabled in the Options screen" +msgstr "" + +#: src/states_screens/main_menu_screen.cpp:578 +msgid "Please wait while the add-ons are loading" +msgstr "" + +#: src/states_screens/online_profile_achievements.cpp:79 +msgid "Progress" +msgstr "" + +#: src/states_screens/online_profile_achievements.cpp:131 +#: src/states_screens/online_profile_achievements.cpp:171 +msgid "Fetching achievements" +msgstr "" + +#: src/states_screens/online_profile_base.cpp:117 +#: src/states_screens/online_profile_base.cpp:127 +msgid "Your profile" +msgstr "" + +#: src/states_screens/online_profile_base.cpp:120 +#, c-format +msgid "%s's profile" +msgstr "" + +#: src/states_screens/online_profile_friends.cpp:75 +msgid "Since" +msgstr "" + +#: src/states_screens/online_profile_friends.cpp:76 +msgid "Status" +msgstr "" + +#: src/states_screens/online_profile_friends.cpp:96 +#: src/states_screens/online_profile_friends.cpp:247 +msgid "Fetching friends" +msgstr "" + +#: src/states_screens/online_profile_friends.cpp:218 +msgid "New Request" +msgstr "" + +#: src/states_screens/online_profile_friends.cpp:219 +msgid "Pending" +msgstr "" + +#: src/states_screens/online_profile_friends.cpp:223 +msgid "Offline" +msgstr "" + +#: src/states_screens/online_user_search.cpp:207 +#: src/states_screens/online_user_search.cpp:271 +msgid "Searching" +msgstr "" + +#: src/states_screens/options_screen_device.cpp:71 +msgid "Action" +msgstr "" + +#: src/states_screens/options_screen_device.cpp:72 +msgid "Key binding" +msgstr "" + +#. I18N: button to disable a gamepad configuration +#: src/states_screens/options_screen_device.cpp:96 +#: src/states_screens/options_screen_device.cpp:579 +msgid "Disable Device" +msgstr "" + +#. I18N: button to enable a gamepad configuration +#: src/states_screens/options_screen_device.cpp:98 +#: src/states_screens/options_screen_device.cpp:580 +msgid "Enable Device" +msgstr "" + +#. I18N: Key binding section +#: src/states_screens/options_screen_device.cpp:137 +msgid "Game Keys" +msgstr "" + +#. I18N: Key binding section +#: src/states_screens/options_screen_device.cpp:151 +msgid "Menu Keys" +msgstr "" + +#. I18N: Key binding name +#: src/states_screens/options_screen_device.cpp:218 +msgid "Steer Left" +msgstr "" + +#. I18N: Key binding name +#: src/states_screens/options_screen_device.cpp:221 +msgid "Steer Right" +msgstr "" + +#. I18N: Key binding name +#: src/states_screens/options_screen_device.cpp:224 +msgid "Accelerate" +msgstr "" + +#. I18N: Key binding name +#: src/states_screens/options_screen_device.cpp:227 +msgid "Brake" +msgstr "" + +#. I18N: Key binding name +#: src/states_screens/options_screen_device.cpp:230 +msgid "Fire" +msgstr "" + +#. I18N: Key binding name +#: src/states_screens/options_screen_device.cpp:233 +msgid "Nitro" +msgstr "" + +#. I18N: Key binding name +#: src/states_screens/options_screen_device.cpp:236 +msgid "Skidding" +msgstr "" + +#. I18N: Key binding name +#: src/states_screens/options_screen_device.cpp:239 +msgid "Look Back" +msgstr "" + +#. I18N: Key binding name +#: src/states_screens/options_screen_device.cpp:242 +msgid "Rescue" +msgstr "" + +#. I18N: Key binding name +#: src/states_screens/options_screen_device.cpp:245 +msgid "Pause Game" +msgstr "" + +#. I18N: Key binding name +#: src/states_screens/options_screen_device.cpp:250 +msgid "Up" +msgstr "" + +#. I18N: Key binding name +#: src/states_screens/options_screen_device.cpp:253 +msgid "Down" +msgstr "" + +#. I18N: Key binding name +#: src/states_screens/options_screen_device.cpp:256 +msgid "Left" +msgstr "" + +#. I18N: Key binding name +#: src/states_screens/options_screen_device.cpp:259 +msgid "Right" +msgstr "" + +#. I18N: Key binding name +#: src/states_screens/options_screen_device.cpp:262 +msgid "Select" +msgstr "" + +#. I18N: Key binding name +#: src/states_screens/options_screen_device.cpp:265 +msgid "Cancel/Back" +msgstr "" + +#: src/states_screens/options_screen_device.cpp:360 +msgid "* A blue item means a conflict with another configuration" +msgstr "" + +#: src/states_screens/options_screen_device.cpp:365 +msgid "* A red item means a conflict in the current configuration" +msgstr "" + +#: src/states_screens/options_screen_device.cpp:471 +msgid "" +"Warning: The 'Shift' is not a recommended key. When 'Shift' is pressed down," +" all keys that contain a character that is different in upper-case will stop" +" working." +msgstr "" + +#. I18N: shown before deleting an input configuration +#: src/states_screens/options_screen_device.cpp:567 +msgid "Are you sure you want to permanently delete this configuration?" +msgstr "" + +#: src/states_screens/options_screen_input.cpp:100 +#, c-format +msgid "Keyboard %i" +msgstr "" + +#: src/states_screens/options_screen_input.cpp:138 +msgid "Touch Device" +msgstr "" + +#: src/states_screens/options_screen_ui.cpp:159 +msgid "" +"In multiplayer mode, players can select handicapped (more difficult) " +"profiles on the kart selection screen" +msgstr "" + +#. I18N: in the language choice, to select the same language as the OS +#: src/states_screens/options_screen_ui.cpp:191 +msgid "System Language" +msgstr "" + +#. I18N: custom video settings +#: src/states_screens/options_screen_video.cpp:433 +msgid "Custom" +msgstr "" + +#. I18N: if some kart animations are enabled +#: src/states_screens/options_screen_video.cpp:458 +msgid "Me Only" +msgstr "" + +#. I18N: in graphical options +#. tooltip = tooltip + L"\n" + _("Pixel shaders: %s", +#. UserConfigParams::m_pixel_shaders ? enabled : disabled); +#. I18N: in graphical options +#: src/states_screens/options_screen_video.cpp:481 +#, c-format +msgid "Animated Scenery: %s" +msgstr "" + +#. I18N: in graphical options +#: src/states_screens/options_screen_video.cpp:487 +#, c-format +msgid "Weather Effects: %s" +msgstr "" + +#. I18N: in graphical options +#: src/states_screens/options_screen_video.cpp:490 +#, c-format +msgid "Animated Characters: %s" +msgstr "" + +#. I18N: in graphical options +#: src/states_screens/options_screen_video.cpp:495 +#, c-format +msgid "Dynamic lights: %s" +msgstr "" + +#. I18N: in graphical options +#: src/states_screens/options_screen_video.cpp:498 +#, c-format +msgid "Motion blur: %s" +msgstr "" + +#. I18N: in graphical options +#: src/states_screens/options_screen_video.cpp:501 +#, c-format +msgid "Anti-aliasing: %s" +msgstr "" + +#. I18N: in graphical options +#: src/states_screens/options_screen_video.cpp:504 +#, c-format +msgid "Ambient occlusion: %s" +msgstr "" + +#: src/states_screens/options_screen_video.cpp:508 +#, c-format +msgid "Shadows: %s" +msgstr "" + +#: src/states_screens/options_screen_video.cpp:510 +#, c-format +msgid "Shadows: %i" +msgstr "" + +#. I18N: in graphical options +#: src/states_screens/options_screen_video.cpp:513 +#, c-format +msgid "Bloom: %s" +msgstr "" + +#. I18N: in graphical options +#: src/states_screens/options_screen_video.cpp:517 +#, c-format +msgid "Glow (outlines): %s" +msgstr "" + +#. I18N: in graphical options +#: src/states_screens/options_screen_video.cpp:521 +#, c-format +msgid "Light shaft (God rays): %s" +msgstr "" + +#. I18N: in graphical options +#: src/states_screens/options_screen_video.cpp:525 +#, c-format +msgid "Depth of field: %s" +msgstr "" + +#. I18N: in graphical options +#: src/states_screens/options_screen_video.cpp:529 +#, c-format +msgid "Global illumination: %s" +msgstr "" + +#: src/states_screens/options_screen_video.cpp:534 +#, c-format +msgid "Rendered image quality: %s" +msgstr "" + +#: src/states_screens/race_gui.cpp:358 src/states_screens/race_gui.cpp:360 +msgid "Challenge Failed" +msgstr "" + +#. I18N: as in "ready, set, go", shown at the beginning of the race +#: src/states_screens/race_gui_base.cpp:65 +msgid "Ready!" +msgstr "" + +#. I18N: as in "ready, set, go", shown at the beginning of the race +#: src/states_screens/race_gui_base.cpp:67 +msgid "Set!" +msgstr "" + +#. I18N: as in "ready, set, go", shown at the beginning of the race +#: src/states_screens/race_gui_base.cpp:69 +msgid "Go!" +msgstr "" + +#. I18N: Shown when a goal is scored +#: src/states_screens/race_gui_base.cpp:71 +msgid "GOAL!" +msgstr "" + +#. I18N: string used to show the author of the music. (e.g. "Sunny Song" by +#. "John Doe") +#: src/states_screens/race_gui_base.cpp:517 +msgid "by" +msgstr "" + +#: src/states_screens/race_gui_base.cpp:626 +msgid "Collect nitro!" +msgstr "" + +#: src/states_screens/race_gui_base.cpp:628 +msgid "Follow the leader!" +msgstr "" + +#. I18N: When some GlobalPlayerIcons are hidden, write "Top 10" to show it +#: src/states_screens/race_gui_base.cpp:806 +#, c-format +msgid "Top %i" +msgstr "" + +#. I18N: Shown at the end of a race +#: src/states_screens/race_gui_overworld.cpp:143 +msgid "Lap" +msgstr "" + +#: src/states_screens/race_gui_overworld.cpp:144 +msgid "Rank" +msgstr "" + +#: src/states_screens/race_gui_overworld.cpp:518 +msgid "Press fire to start the tutorial" +msgstr "" + +#: src/states_screens/race_gui_overworld.cpp:557 +msgid "Type: Grand Prix" +msgstr "" + +#: src/states_screens/race_gui_overworld.cpp:594 +msgid "Press fire to start the challenge" +msgstr "" + +#: src/states_screens/race_result_gui.cpp:175 +msgid "Continue." +msgstr "" + +#: src/states_screens/race_result_gui.cpp:178 +msgid "Quit the server." +msgstr "" + +#: src/states_screens/race_result_gui.cpp:195 +msgid "You completed challenges!" +msgstr "" + +#: src/states_screens/race_result_gui.cpp:208 +msgid "Abort Grand Prix" +msgstr "" + +#: src/states_screens/race_result_gui.cpp:218 +msgid "Restart" +msgstr "" + +#: src/states_screens/race_result_gui.cpp:224 +msgid "Back to challenge selection" +msgstr "" + +#: src/states_screens/race_result_gui.cpp:230 +msgid "Back to the menu" +msgstr "" + +#: src/states_screens/race_result_gui.cpp:372 +msgid "Do you really want to abort the Grand Prix?" +msgstr "" + +#: src/states_screens/race_result_gui.cpp:499 +#: src/states_screens/race_result_gui.cpp:865 +msgid "Eliminated" +msgstr "" + +#: src/states_screens/race_result_gui.cpp:1012 +msgid "Red Team Wins" +msgstr "" + +#: src/states_screens/race_result_gui.cpp:1016 +msgid "Blue Team Wins" +msgstr "" + +#: src/states_screens/race_result_gui.cpp:1021 +msgid "It's a draw" +msgstr "" + +#. I18N: indicates a player that scored in their own goal in result screen +#: src/states_screens/race_result_gui.cpp:1098 +#: src/states_screens/race_result_gui.cpp:1154 +msgid "(Own Goal)" +msgstr "" + +#: src/states_screens/race_result_gui.cpp:1220 +#, c-format +msgid "Track %i/%i" +msgstr "" + +#: src/states_screens/race_result_gui.cpp:1304 +msgid "Grand Prix progress:" +msgstr "" + +#: src/states_screens/race_result_gui.cpp:1346 +msgid "Highscores" +msgstr "" + +#: src/states_screens/race_result_gui.cpp:1432 +#, c-format +msgid "Difficulty: %s" +msgstr "" + +#: src/states_screens/race_result_gui.cpp:1440 +#, c-format +msgid "Best lap time: %s" +msgstr "" + +#: src/states_screens/race_setup_screen.cpp:87 +msgid "All blows allowed, so catch weapons and make clever use of them!" +msgstr "" + +#: src/states_screens/race_setup_screen.cpp:94 +msgid "Contains no powerups, so only your driving skills matter!" +msgstr "" + +#. I18N: short definition for follow-the-leader game mode +#: src/states_screens/race_setup_screen.cpp:107 +msgid "Keep up with the leader kart but don't overtake it!" +msgstr "" + +#: src/states_screens/race_setup_screen.cpp:114 +msgid "Hit others with weapons until they lose all their lives." +msgstr "" + +#: src/states_screens/race_setup_screen.cpp:119 +msgid "Push the ball into the opposite cage to score goals." +msgstr "" + +#: src/states_screens/race_setup_screen.cpp:129 +msgid "Explore tracks to find all hidden eggs" +msgstr "" + +#: src/states_screens/race_setup_screen.cpp:137 +msgid "Race against ghost karts and try to beat them!" +msgstr "" + +#: src/states_screens/register_screen.cpp:218 +#: src/states_screens/register_screen.cpp:225 +#, c-format +msgid "Could not create player '%s'." +msgstr "" + +#: src/states_screens/register_screen.cpp:277 +msgid "Emails don't match!" +msgstr "" + +#: src/states_screens/register_screen.cpp:281 +msgid "Online username has to be between 3 and 30 characters long!" +msgstr "" + +#: src/states_screens/register_screen.cpp:285 +msgid "Online username must not start with a number!" +msgstr "" + +#: src/states_screens/register_screen.cpp:293 +msgid "Email has to be between 5 and 254 characters long!" +msgstr "" + +#: src/states_screens/register_screen.cpp:299 +msgid "Email is invalid!" +msgstr "" + +#: src/states_screens/register_screen.cpp:362 +msgid "" +"You will receive an email with further instructions regarding account " +"activation. Please be patient and be sure to check your spam folder." +msgstr "" + +#: src/states_screens/register_screen.cpp:402 +#: src/states_screens/user_screen.cpp:338 +msgid "Internet access is disabled, please enable it in the options" +msgstr "" + +#: src/states_screens/server_selection.cpp:79 +#: src/states_screens/server_selection.cpp:247 +msgid "Fetching servers" +msgstr "" + +#. I18N: track group name +#: src/states_screens/tracks_and_gp_screen.cpp:144 +msgid "all" +msgstr "" + +#: src/states_screens/tracks_and_gp_screen.cpp:195 +msgid "Locked!" +msgstr "" + +#: src/states_screens/tracks_and_gp_screen.cpp:278 +#: src/states_screens/tracks_screen.cpp:227 +msgid "Locked: solve active challenges to gain access to more!" +msgstr "" + +#: src/states_screens/tracks_screen.cpp:194 +msgid "Only official tracks are supported." +msgstr "" + +#. I18N: when showing who is the author of track '%s' +#. I18N: (place %s where the name of the author should appear) +#: src/states_screens/track_info_screen.cpp:112 +#, c-format +msgid "Track by %s" +msgstr "" + +#. I18N: the max players supported by an arena. +#: src/states_screens/track_info_screen.cpp:120 +#, c-format +msgid "Max players supported: %d" +msgstr "" + +#. I18N: In the track info screen +#: src/states_screens/track_info_screen.cpp:213 +msgid "Drive in reverse" +msgstr "" + +#. I18N: In the track info screen +#: src/states_screens/track_info_screen.cpp:218 +msgid "Random item location" +msgstr "" + +#: src/states_screens/user_screen.cpp:111 +msgid "Exit game" +msgstr "" + +#: src/states_screens/user_screen.cpp:484 +msgid "You need to enter a password." +msgstr "" + +#: src/states_screens/user_screen.cpp:505 +#, c-format +msgid "Logging out '%s'" +msgstr "" + +#: src/states_screens/user_screen.cpp:506 +#, c-format +msgid "Logging in '%s'" +msgstr "" + +#. I18N: In the player info dialog (when deleting) +#: src/states_screens/user_screen.cpp:595 +#, c-format +msgid "Do you really want to delete player '%s' ?" +msgstr "" + +#. I18N: Format for dates (%d = day, %m = month, %Y = year). See +#. http://www.cplusplus.com/reference/ctime/strftime/ for more info about date +#. formats. +#: src/utils/time.cpp:50 +msgid "%d/%m/%Y" +msgstr "" + +#. I18N: Do NOT literally translate this string!! Please enter Y as the +#. translation if your language is a RTL (right-to-left) language, +#. N (or nothing) otherwise +#: src/utils/translation.cpp:376 +msgid " Is this a RTL language?" +msgstr "" + +#: ../stk-assets/tracks/overworld/scripting.as:15 +msgid "Complete all challenges to unlock the big door!" +msgstr "" + +#: ../stk-assets/tracks/overworld/scripting.as:63 +msgid "" +"You need more points\n" +"to enter this challenge!\n" +"Check the minimap for\n" +"available challenges." +msgstr "" + +#: ../stk-assets/tracks/tutorial/scripting.as:21 +#, c-format +msgid "Accelerate with <%s>, and steer with <%s> and <%s>." +msgstr "" + +#: ../stk-assets/tracks/tutorial/scripting.as:37 +#: ../stk-assets/tracks/tutorial/triggers.as:38 +#, c-format +msgid "" +"Collect gift boxes, and fire the weapon with <%s> to blow away these boxes!" +msgstr "" + +#: ../stk-assets/tracks/tutorial/scripting.as:43 +#: ../stk-assets/tracks/tutorial/triggers.as:44 +#, c-format +msgid "" +"Press <%s> to look behind. Fire the weapon with <%s> while pressing <%s> to " +"fire behind!" +msgstr "" + +#: ../stk-assets/tracks/tutorial/scripting.as:53 +#: ../stk-assets/tracks/tutorial/triggers.as:54 +#, c-format +msgid "Use the nitro you collected by pressing <%s>!" +msgstr "" + +#: ../stk-assets/tracks/tutorial/scripting.as:58 +msgid "Collect nitro bottles (we will use them after the curve)." +msgstr "" + +#: ../stk-assets/tracks/tutorial/scripting.as:63 +#, c-format +msgid "Oops! When you're in trouble, press <%s> to be rescued." +msgstr "" + +#: ../stk-assets/tracks/tutorial/scripting.as:69 +#: ../stk-assets/tracks/tutorial/triggers.as:70 +#, c-format +msgid "" +"Accelerate and press the <%s> key while turning to skid. Skidding for a " +"short while can help you turn faster to take sharp turns." +msgstr "" + +#: ../stk-assets/tracks/tutorial/scripting.as:77 +#: ../stk-assets/tracks/tutorial/triggers.as:78 +msgid "" +"Note that if you manage to skid for several seconds, you will receive a " +"bonus speedup as a reward!" +msgstr "" + +#: ../stk-assets/tracks/tutorial/scripting.as:82 +#: ../stk-assets/tracks/tutorial/triggers.as:83 +msgid "You are now ready to race. Good luck!" +msgstr "" + +#: ../stk-assets/tracks/tutorial/triggers.as:28 +#, c-format +msgid "Accelerate with <%s> and steer with <%s> and <%s>" +msgstr "" + +#: ../stk-assets/tracks/tutorial/triggers.as:59 +msgid "Collect nitro bottles (we will use them after the curve)" +msgstr "" + +#: ../stk-assets/tracks/tutorial/triggers.as:64 +#, c-format +msgid "Oops! When you're in trouble, press <%s> to be rescued" +msgstr "" diff --git a/data/po/id.po b/data/po/id.po index 87c9e22da..23fbd429b 100644 --- a/data/po/id.po +++ b/data/po/id.po @@ -13,7 +13,7 @@ msgstr "" "Project-Id-Version: SuperTuxKart\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2017-10-04 20:58-0400\n" -"PO-Revision-Date: 2017-10-24 10:06+0000\n" +"PO-Revision-Date: 2017-11-13 00:19+0000\n" "Last-Translator: Christian \"crse\" Elbrianno\n" "Language-Team: Indonesian (http://www.transifex.com/supertuxkart/supertuxkart/language/id/)\n" "MIME-Version: 1.0\n" @@ -3019,7 +3019,7 @@ msgstr "" #: src/states_screens/credits.cpp:180 msgid "translator-credits" -msgstr "Launchpad Contributions:\nArief Setiadi Wibowo https://launchpad.net/~q-thrynx\nAziz Rahmad https://launchpad.net/~azayrahmad\nChristian "crse" Elbrianno, 2017\nChristian "crse" Elbrianno, 2017\nDawid Gan https://launchpad.net/~deveee\nEga Zulfikar https://launchpad.net/~ega-bulb\nIcho Y. Chandra https://launchpad.net/~project-zero\nIcho Yulian Chandra, 2016\nMuhammad Radifar https://launchpad.net/~m-radifar05\nRaja Sulaiman, 2017\nSTK-team https://launchpad.net/~stk" +msgstr "Launchpad Contributions:\n Arief Setiadi Wibowo https://launchpad.net/~q-thrynx\n Aziz Rahmad https://launchpad.net/~azayrahmad\n Dawid Gan https://launchpad.net/~deveee\n Ega Zulfikar https://launchpad.net/~ega-bulb\n Icho Y. Chandra https://launchpad.net/~project-zero\n Muhammad Radifar https://launchpad.net/~m-radifar05\n STK-team https://launchpad.net/~stk" #: src/states_screens/dialogs/addons_loading.cpp:97 msgid "Update" diff --git a/data/po/is.po b/data/po/is.po index 0e46624fd..1c480527b 100644 --- a/data/po/is.po +++ b/data/po/is.po @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: SuperTuxKart\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2017-10-04 20:58-0400\n" -"PO-Revision-Date: 2017-10-24 10:06+0000\n" +"PO-Revision-Date: 2017-11-13 00:19+0000\n" "Last-Translator: Auria \n" "Language-Team: Icelandic (http://www.transifex.com/supertuxkart/supertuxkart/language/is/)\n" "MIME-Version: 1.0\n" @@ -3020,7 +3020,7 @@ msgstr "" #: src/states_screens/credits.cpp:180 msgid "translator-credits" -msgstr "Launchpad Contributions:\nBenedikt Scheving-Thorsteinsson https://launchpad.net/~nammi-namm\nOlafur Skorrdal https://launchpad.net/~skorrdal\nSTK-team https://launchpad.net/~stk" +msgstr "Launchpad Contributions:\n Benedikt Scheving-Thorsteinsson https://launchpad.net/~nammi-namm\n Olafur Skorrdal https://launchpad.net/~skorrdal\n STK-team https://launchpad.net/~stk" #: src/states_screens/dialogs/addons_loading.cpp:97 msgid "Update" diff --git a/data/po/it.po b/data/po/it.po index be8f2419e..5e455a512 100644 --- a/data/po/it.po +++ b/data/po/it.po @@ -9,13 +9,14 @@ # Ioma Taani, 2016 # lorenzo mijorus , 2015 # Luca Argentieri , 2015 +# mattia_b89 , 2017 msgid "" msgstr "" "Project-Id-Version: SuperTuxKart\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2017-10-04 20:58-0400\n" -"PO-Revision-Date: 2017-10-24 10:06+0000\n" -"Last-Translator: Auria \n" +"PO-Revision-Date: 2017-11-13 00:19+0000\n" +"Last-Translator: mattia_b89 \n" "Language-Team: Italian (http://www.transifex.com/supertuxkart/supertuxkart/language/it/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -25,7 +26,7 @@ msgstr "" #. I18N: ./data/achievements.xml msgid "Christoffel Columbus" -msgstr "Cristofero Colombo" +msgstr "Cristoforo Colombo" #. I18N: ./data/achievements.xml msgid "Play every official track at least once." @@ -33,11 +34,11 @@ msgstr "Gioca almeno una volta in ogni pista ufficiale." #. I18N: ./data/achievements.xml msgid "Strike!" -msgstr "Strike!" +msgstr "Colpito!" #. I18N: ./data/achievements.xml msgid "Hit 10 karts with a bowling-ball." -msgstr "Coplisci 10 kart con una palla da bowling" +msgstr "Colpisci 10 kart con una palla da bowling." #. I18N: ./data/achievements.xml msgid "Arch Enemy" @@ -45,7 +46,7 @@ msgstr "Acerrimo nemico" #. I18N: ./data/achievements.xml msgid "Hit the same kart at least 5 times in one race." -msgstr "Colpisci lo stesso kart almeno 5 volte in una sola gara" +msgstr "Colpisci lo stesso kart almeno 5 volte in una sola gara." #. I18N: ./data/achievements.xml msgid "Marathoner" @@ -175,7 +176,7 @@ msgstr "Kart" #. I18N: ./data/gui/gp_info.stkgui #. I18N: In the grand prix info screen msgid "Tracks" -msgstr "Giri" +msgstr "Piste" #. I18N: ./data/gui/addons_screen.stkgui #. I18N: In the addons screen @@ -358,12 +359,12 @@ msgstr "Personaggi Animati" #. I18N: ./data/gui/custom_video_settings.stkgui #. I18N: Video settings msgid "Rendered image quality" -msgstr "" +msgstr "Qualità immagini renderizzate" #. I18N: ./data/gui/custom_video_settings.stkgui #. I18N: Video settings msgid "Geometry detail" -msgstr "" +msgstr "Dettagli geometrici" #. I18N: ./data/gui/custom_video_settings.stkgui #. I18N: Video settings @@ -624,11 +625,11 @@ msgstr "Multigiocatore" #. I18N: ./data/gui/help5.stkgui #. I18N: Tab in help menu msgid "Bananas" -msgstr "" +msgstr "Banane" #. I18N: ./data/gui/help1.stkgui msgid "Start the tutorial" -msgstr "" +msgstr "Inizia il tutorial" #. I18N: ./data/gui/help1.stkgui #. I18N: In the help menu @@ -800,24 +801,24 @@ msgstr "Quando i dispositivi di input sono configurati, si è pronti per giocare msgid "" "Hitting a banana can result in one of the following being attached to the " "kart:" -msgstr "" +msgstr "Colpire una banana può portare all'aggancio di uno dei seguenti al kart:" #. I18N: ./data/gui/help5.stkgui #. I18N: In the help menu msgid "Anchor - slows down the kart." -msgstr "" +msgstr "Ancora - rallenta il kart." #. I18N: ./data/gui/help5.stkgui #. I18N: In the help menu msgid "Parachute - slows down the kart less than the anchor." -msgstr "" +msgstr "Paracadute - rallenta il kart, meno che l'ancora." #. I18N: ./data/gui/help5.stkgui #. I18N: In the help menu msgid "" "Bomb - detonates after a short amount of time to throw the kart up in the " "air. Bump into another kart to transfer the bomb to another player." -msgstr "" +msgstr "Bomba - esplode dopo poco tempo e getta il kart in aria. Urta un altro kart per passare la bomba a un altro giocatore." #. I18N: ./data/gui/karts.stkgui #. I18N: In the kart selection (player setup) screen @@ -906,17 +907,17 @@ msgstr "Esci" #. I18N: ./data/gui/multitouch_settings.stkgui msgid "Touch Device Settings" -msgstr "" +msgstr "Impostazioni Dispositivo Touch" #. I18N: ./data/gui/multitouch_settings.stkgui #. I18N: In the multitouch settings screen msgid "Device enabled" -msgstr "" +msgstr "Dispositivo abilitato" #. I18N: ./data/gui/multitouch_settings.stkgui #. I18N: In the multitouch settings screen msgid "Inverted buttons" -msgstr "" +msgstr "Pulsanti invertiti" #. I18N: ./data/gui/multitouch_settings.stkgui #. I18N: In the multitouch settings screen @@ -926,26 +927,26 @@ msgstr "" #. I18N: ./data/gui/multitouch_settings.stkgui #. I18N: In the multitouch settings screen msgid "Accelerometer" -msgstr "" +msgstr "Accelerometro" #. I18N: ./data/gui/multitouch_settings.stkgui #. I18N: In the multitouch settings screen msgid "Advanced" -msgstr "" +msgstr "Avanzato" #. I18N: ./data/gui/multitouch_settings.stkgui #. I18N: In the multitouch settings screen msgid "Deadzone" -msgstr "" +msgstr "Zona morta" #. I18N: ./data/gui/multitouch_settings.stkgui #. I18N: In the multitouch settings screen msgid "Sensitivity" -msgstr "" +msgstr "Sensibilità" #. I18N: ./data/gui/multitouch_settings.stkgui msgid "Restore defaults" -msgstr "" +msgstr "Ripristina impostazione " #. I18N: ./data/gui/online/change_password.stkgui #. I18N: In the change password dialog @@ -1480,7 +1481,7 @@ msgstr "Aggiungi un dispositivo" msgid "" "* Which config to use will be inferred from which 'Select' key is pressed to" " join the game." -msgstr "La configurazione da usare verrà dedotta dal pulsante 'Seleziona' usato per entrare nel gioco" +msgstr "* Quale configurazione usare verrà dedotta da quale pulsante 'Seleziona' verrà premuto per unirsi al gioco." #. I18N: ./data/gui/options_players.stkgui #. I18N: Section in the settings menu @@ -1548,7 +1549,7 @@ msgstr "Abilita handicap per singolo giocatore" #. I18N: ./data/gui/options_ui.stkgui #. I18N: In the ui settings msgid "Connect to the Internet" -msgstr "Connetti ad internet" +msgstr "Connetti ad Internet" #. I18N: ./data/gui/options_video.stkgui #. I18N: Section in the settings menu @@ -1766,7 +1767,7 @@ msgstr "Battle Island" #. I18N: ../stk-assets/tracks/candela_city/track.xml msgid "Candela City" -msgstr "" +msgstr "Candela City" #. I18N: ../stk-assets/tracks/cave/track.xml msgid "Cave X" @@ -1778,7 +1779,7 @@ msgstr "Tempio di cacao" #. I18N: ../stk-assets/tracks/cornfield_crossing/track.xml msgid "Cornfield Crossing" -msgstr "" +msgstr "Cornfield Crossing" #. I18N: ../stk-assets/tracks/fortmagma/track.xml msgid "Fort Magma" @@ -1829,7 +1830,7 @@ msgstr " Ma voi patetici piccoli mocciosi non sarete mai in grado di battere me #. I18N: ../stk-assets/tracks/lasdunasarena/track.xml msgid "Las Dunas Arena" -msgstr "" +msgstr "Las Dunas Arena" #. I18N: ../stk-assets/tracks/lighthouse/track.xml msgid "Around the lighthouse" @@ -1925,7 +1926,7 @@ msgstr "Hexley" #. I18N: ../stk-assets/karts/kiki/kart.xml msgid "Kiki" -msgstr "" +msgstr "Kiki" #. I18N: ../stk-assets/karts/konqi/kart.xml msgid "Konqi" @@ -1974,7 +1975,7 @@ msgstr "Sfida completata \"%s\"." #: src/addons/addons_manager.cpp:104 src/addons/news_manager.cpp:322 msgid "Failed to connect to the SuperTuxKart add-ons server." -msgstr "" +msgstr "Connessione al server SuperTuxKart degli add-on fallita." #: src/addons/news_manager.cpp:179 #, c-format @@ -2046,16 +2047,16 @@ msgstr "Il file di configurazione era troppo vecchio, quindi è stato cancellato #: src/graphics/irr_driver.cpp:535 msgid "Video recording started." -msgstr "" +msgstr "Iniziata la registrazione video." #: src/graphics/irr_driver.cpp:541 #, c-format msgid "Video saved in \"%s\"." -msgstr "" +msgstr "Video salvato in \"%s\"." #: src/graphics/irr_driver.cpp:545 msgid "Encoding progress:" -msgstr "" +msgstr "Avanzamento della codifica:" #: src/graphics/irr_driver.cpp:1682 #, c-format @@ -2728,11 +2729,11 @@ msgstr "Non accelerare prima della partenza" #: src/karts/controller/spare_tire_ai.cpp:147 msgid "You can have at most 3 lives!" -msgstr "" +msgstr "Puoi avere al massimo 3 vite!" #: src/karts/controller/spare_tire_ai.cpp:153 msgid "+1 life." -msgstr "" +msgstr "+1 vita." #: src/karts/kart.cpp:908 src/karts/kart.cpp:913 msgid "You won the race!" @@ -2755,7 +2756,7 @@ msgstr "SuperTuxKart si può connettere a un server per scaricare add-on e avvis #: src/main.cpp:1654 msgid "Your screen resolution is too low to run STK." -msgstr "" +msgstr "La risoluzione del tuo schermo è troppo bassa per avviare STK." #: src/main.cpp:1668 msgid "" @@ -2820,7 +2821,7 @@ msgstr "'%s' è stato eliminato." #: src/network/protocols/server_lobby.cpp:318 #, c-format msgid "Failed to register server: %s" -msgstr "" +msgstr "Registrazione al server %s fallita." #: src/network/servers_manager.cpp:198 msgid "No LAN server detected" @@ -3025,7 +3026,7 @@ msgstr "Il numero massimo di giocatori deve essere tra 2 e 12." #: src/states_screens/credits.cpp:180 msgid "translator-credits" -msgstr "Launchpad Contributions:\nAlessandro Aragione https://launchpad.net/~layn\nAndrea Panontin https://launchpad.net/~any-97\nAndrea Pivetta https://launchpad.net/~vanpivix\nDavide Depau, 2015\nDawid Gan https://launchpad.net/~deveee\nDiego Pierotto https://launchpad.net/~gringo\nEnrico B., 2015\nGigu https://launchpad.net/~pvinci26\nGiuseppe Pignataro (Fasbyte01), 2015\ngrandefava https://launchpad.net/~grandefava\nGuido Barbi https://launchpad.net/~gbar\nIoma Taani, 2016\nlorenzo mijorus, 2015\nLuca Argentieri, 2015\nmarco https://launchpad.net/~marco97pa\nMassimiliano Caniparoli https://launchpad.net/~massic80\nMax Perkins https://launchpad.net/~maxperkinstoki\nnicoelba https://launchpad.net/~nicoelba\nOibaf https://launchpad.net/~oibaf\nSTK-team https://launchpad.net/~stk\nt3ddy https://launchpad.net/~t3ddy1988" +msgstr "Launchpad Contributions:\n Alessandro Aragione https://launchpad.net/~layn\n Andrea Panontin https://launchpad.net/~any-97\n Andrea Pivetta https://launchpad.net/~vanpivix\n Dawid Gan https://launchpad.net/~deveee\n Diego Pierotto https://launchpad.net/~gringo\n Gigu https://launchpad.net/~pvinci26\n Guido Barbi https://launchpad.net/~gbar\n Massimiliano Caniparoli https://launchpad.net/~massic80\n Max Perkins https://launchpad.net/~maxperkinstoki\n Oibaf https://launchpad.net/~oibaf\n STK-team https://launchpad.net/~stk\n grandefava https://launchpad.net/~grandefava\n marco https://launchpad.net/~marco97pa\n nicoelba https://launchpad.net/~nicoelba\n t3ddy https://launchpad.net/~t3ddy1988" #: src/states_screens/dialogs/addons_loading.cpp:97 msgid "Update" @@ -3141,7 +3142,7 @@ msgstr "Disabilitato" #: src/states_screens/dialogs/custom_video_settings.cpp:67 #: src/states_screens/options_screen_video.cpp:462 msgid "Important only" -msgstr "" +msgstr "Solo importante" #. I18N: animations setting (only karts with human players are animated) #: src/states_screens/dialogs/custom_video_settings.cpp:74 @@ -3160,7 +3161,7 @@ msgstr "Abilitato per tutti" #: src/states_screens/dialogs/custom_video_settings.cpp:102 #: src/states_screens/options_screen_video.cpp:469 msgid "Low" -msgstr "" +msgstr "Basso" #. I18N: Geometry level high : everything is displayed #. I18N: in the graphical options tooltip; @@ -3170,21 +3171,21 @@ msgstr "" #: src/states_screens/dialogs/custom_video_settings.cpp:103 #: src/states_screens/options_screen_video.cpp:472 msgid "High" -msgstr "" +msgstr "Alto" #. I18N: in the graphical options tooltip; #. indicates the rendered image quality is very low #: src/states_screens/dialogs/custom_video_settings.cpp:94 #: src/states_screens/options_screen_video.cpp:466 msgid "Very Low" -msgstr "" +msgstr "Molto Basso" #. I18N: in the graphical options tooltip; #. indicates the rendered image quality is very high #: src/states_screens/dialogs/custom_video_settings.cpp:97 #: src/states_screens/options_screen_video.cpp:475 msgid "Very High" -msgstr "" +msgstr "Molto Alto" #: src/states_screens/dialogs/message_dialog.cpp:129 #: src/states_screens/edit_gp_screen.cpp:257 @@ -3194,11 +3195,11 @@ msgstr "No" #: src/states_screens/dialogs/multitouch_settings_dialog.cpp:60 msgid "Tablet" -msgstr "" +msgstr "Tablet" #: src/states_screens/dialogs/multitouch_settings_dialog.cpp:61 msgid "Phone" -msgstr "" +msgstr "Telefonino" #: src/states_screens/dialogs/recovery_dialog.cpp:121 msgid "Username and/or email address invalid." @@ -3212,7 +3213,7 @@ msgid "" "the box below, you are confirming that you understand these terms. If you " "have any questions or comments regarding these terms, one of the members of " "the development team would gladly assist you." -msgstr "" +msgstr "Per favore leggere i termini e le condizioni di SuperTuxKart su '%s'. Devi accettare questi termini per registrare un account per STK. Spuntando il box sottostante, stai confermando che capisci questi termini. Se hai della domande o commenti riguardanti questi termini, uno dei membri del team di sviluppo ti assisterà volentieri." #: src/states_screens/dialogs/select_challenge.cpp:52 #, c-format @@ -3382,7 +3383,7 @@ msgstr "Tempo totale" #: src/states_screens/ghost_replay_selection.cpp:83 msgid "User" -msgstr "" +msgstr "Utente" #: src/states_screens/gp_info_screen.cpp:74 msgid "Default" @@ -3666,7 +3667,7 @@ msgstr "Tastiera %i" #: src/states_screens/options_screen_input.cpp:138 msgid "Touch Device" -msgstr "" +msgstr "Dispositivo Touch" #: src/states_screens/options_screen_ui.cpp:159 msgid "" @@ -3777,7 +3778,7 @@ msgstr "Illuminazione globale: %s" #: src/states_screens/options_screen_video.cpp:534 #, c-format msgid "Rendered image quality: %s" -msgstr "" +msgstr "Qualità immagine renderizzata: %s" #: src/states_screens/race_gui.cpp:358 src/states_screens/race_gui.cpp:360 msgid "Challenge Failed" @@ -3834,7 +3835,7 @@ msgstr "Posizione" #: src/states_screens/race_gui_overworld.cpp:518 msgid "Press fire to start the tutorial" -msgstr "" +msgstr "Premi spara per iniziare il tutorial" #: src/states_screens/race_gui_overworld.cpp:557 msgid "Type: Grand Prix" diff --git a/data/po/ja.po b/data/po/ja.po index c3c08213b..fb34038d7 100644 --- a/data/po/ja.po +++ b/data/po/ja.po @@ -6,13 +6,13 @@ # lindwurm, 2015 # Sugahara Masayuki , 2015 # lip_of_cygnus , 2015 -# 洩矢 諏訪子 , 2017 +# David Blaszyk , 2017 msgid "" msgstr "" "Project-Id-Version: SuperTuxKart\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2017-10-04 20:58-0400\n" -"PO-Revision-Date: 2017-10-24 10:06+0000\n" +"PO-Revision-Date: 2017-11-13 00:19+0000\n" "Last-Translator: Auria \n" "Language-Team: Japanese (http://www.transifex.com/supertuxkart/supertuxkart/language/ja/)\n" "MIME-Version: 1.0\n" @@ -3018,7 +3018,7 @@ msgstr "" #: src/states_screens/credits.cpp:180 msgid "translator-credits" -msgstr "Launchpad Contributions:\nAuria https://launchpad.net/~auria-mg\nDawid Gan https://launchpad.net/~deveee\nlindwurm https://launchpad.net/~lindwurm\nlindwurm, 2015\nlip_of_cygnus, 2015\nSTK-team https://launchpad.net/~stk\nSugahara Masayuki, 2015\nTae-Wong SEO https://launchpad.net/~seotaewong40\ntkbd https://launchpad.net/~arolf\nxapantu https://launchpad.net/~xapantu\nYuki Shira https://launchpad.net/~shirayuking\n洩矢 諏訪子, 2017" +msgstr "Launchpad Contributions:\n Auria https://launchpad.net/~auria-mg\n Dawid Gan https://launchpad.net/~deveee\n STK-team https://launchpad.net/~stk\n Tae-Wong SEO https://launchpad.net/~seotaewong40\n Yuki Shira https://launchpad.net/~shirayuking\n lindwurm https://launchpad.net/~lindwurm\n tkbd https://launchpad.net/~arolf\n xapantu https://launchpad.net/~xapantu" #: src/states_screens/dialogs/addons_loading.cpp:97 msgid "Update" diff --git a/data/po/jbo.po b/data/po/jbo.po index 62cc213ce..a3c22fffa 100644 --- a/data/po/jbo.po +++ b/data/po/jbo.po @@ -10,7 +10,7 @@ msgstr "" "Project-Id-Version: SuperTuxKart\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2017-10-04 20:58-0400\n" -"PO-Revision-Date: 2017-10-24 10:06+0000\n" +"PO-Revision-Date: 2017-11-13 00:19+0000\n" "Last-Translator: Auria \n" "Language-Team: Lojban (http://www.transifex.com/supertuxkart/supertuxkart/language/jbo/)\n" "MIME-Version: 1.0\n" @@ -3016,7 +3016,7 @@ msgstr "" #: src/states_screens/credits.cpp:180 msgid "translator-credits" -msgstr "Launchpad Contributions:\nWillem Sonke https://launchpad.net/~willem-sonke\nWuzzy https://launchpad.net/~wuzzy\nWuzzy, 2015-2016" +msgstr "Launchpad Contributions:\n Willem Sonke https://launchpad.net/~willem-sonke\n Wuzzy https://launchpad.net/~wuzzy" #: src/states_screens/dialogs/addons_loading.cpp:97 msgid "Update" diff --git a/data/po/ko.po b/data/po/ko.po index 6cc621821..0de14c977 100644 --- a/data/po/ko.po +++ b/data/po/ko.po @@ -10,7 +10,7 @@ msgstr "" "Project-Id-Version: SuperTuxKart\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2017-10-04 20:58-0400\n" -"PO-Revision-Date: 2017-10-24 10:06+0000\n" +"PO-Revision-Date: 2017-11-13 00:19+0000\n" "Last-Translator: Auria \n" "Language-Team: Korean (http://www.transifex.com/supertuxkart/supertuxkart/language/ko/)\n" "MIME-Version: 1.0\n" @@ -3016,7 +3016,7 @@ msgstr "" #: src/states_screens/credits.cpp:180 msgid "translator-credits" -msgstr "Launchpad Contributions:\nDynamicwork https://launchpad.net/~dynamicwork\nJJ https://launchpad.net/~jjemin1\nRoland Kim, 2015\nTae-Wong SEO https://launchpad.net/~seotaewong40" +msgstr "Launchpad Contributions:\n Dynamicwork https://launchpad.net/~dynamicwork\n JJ https://launchpad.net/~jjemin1\n Tae-Wong SEO https://launchpad.net/~seotaewong40" #: src/states_screens/dialogs/addons_loading.cpp:97 msgid "Update" diff --git a/data/po/krl.po b/data/po/krl.po index b710bdc68..c43b03fa9 100644 --- a/data/po/krl.po +++ b/data/po/krl.po @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: SuperTuxKart\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2017-10-04 20:58-0400\n" -"PO-Revision-Date: 2017-10-24 10:06+0000\n" +"PO-Revision-Date: 2017-11-13 00:19+0000\n" "Last-Translator: Auria \n" "Language-Team: Karelian (http://www.transifex.com/supertuxkart/supertuxkart/language/krl/)\n" "MIME-Version: 1.0\n" @@ -4147,7 +4147,3 @@ msgstr "Keriä nitrobutilkua (voit käyttiä niidy kiännälmyksen jälles)" #, c-format msgid "Oops! When you're in trouble, press <%s> to be rescued" msgstr "A voi voi! Puuttunet hädäh, paina <%s> ku sinuu pellastettas" - -#: src/states_screens/credits.cpp:209 -msgid "translator-credits" -msgstr "Launchpad Contributions:\nC C, 2017" diff --git a/data/po/kw.po b/data/po/kw.po index bdef6f7c7..d077585a9 100644 --- a/data/po/kw.po +++ b/data/po/kw.po @@ -10,7 +10,7 @@ msgstr "" "Project-Id-Version: SuperTuxKart\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2017-10-04 20:58-0400\n" -"PO-Revision-Date: 2017-10-24 10:06+0000\n" +"PO-Revision-Date: 2017-11-13 00:19+0000\n" "Last-Translator: Auria \n" "Language-Team: Cornish (http://www.transifex.com/supertuxkart/supertuxkart/language/kw/)\n" "MIME-Version: 1.0\n" @@ -3031,7 +3031,7 @@ msgstr "Res yw dhe'n niver ughella a warioryon bos ynter 2 ha 12." #: src/states_screens/credits.cpp:180 msgid "translator-credits" -msgstr "Launchpad Contributions:\nkernow https://launchpad.net/~kernow\nNicky Rowe, 2015-2016\nSTK-team https://launchpad.net/~stk" +msgstr "Launchpad Contributions:\n STK-team https://launchpad.net/~stk\n kernow https://launchpad.net/~kernow" #: src/states_screens/dialogs/addons_loading.cpp:97 msgid "Update" diff --git a/data/po/ky.po b/data/po/ky.po index f5e359d99..114119129 100644 --- a/data/po/ky.po +++ b/data/po/ky.po @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: SuperTuxKart\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2017-10-04 20:58-0400\n" -"PO-Revision-Date: 2017-10-24 10:06+0000\n" +"PO-Revision-Date: 2017-11-13 00:19+0000\n" "Last-Translator: Auria \n" "Language-Team: Kyrgyz (http://www.transifex.com/supertuxkart/supertuxkart/language/ky/)\n" "MIME-Version: 1.0\n" @@ -3015,7 +3015,7 @@ msgstr "" #: src/states_screens/credits.cpp:180 msgid "translator-credits" -msgstr "Launchpad Contributions:\nchyngyz https://launchpad.net/~chyngyz\nDawid Gan https://launchpad.net/~deveee\nSTK-team https://launchpad.net/~stk" +msgstr "Launchpad Contributions:\n Dawid Gan https://launchpad.net/~deveee\n STK-team https://launchpad.net/~stk\n chyngyz https://launchpad.net/~chyngyz" #: src/states_screens/dialogs/addons_loading.cpp:97 msgid "Update" diff --git a/data/po/la.po b/data/po/la.po index 58f237b8d..0083eb2c4 100644 --- a/data/po/la.po +++ b/data/po/la.po @@ -11,7 +11,7 @@ msgstr "" "Project-Id-Version: SuperTuxKart\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2017-10-04 20:58-0400\n" -"PO-Revision-Date: 2017-10-24 10:06+0000\n" +"PO-Revision-Date: 2017-11-13 00:19+0000\n" "Last-Translator: Auria \n" "Language-Team: Latin (http://www.transifex.com/supertuxkart/supertuxkart/language/la/)\n" "MIME-Version: 1.0\n" @@ -4149,7 +4149,3 @@ msgstr "Collige nitrorum lagoenas (post flexum viae utimur)" #, c-format msgid "Oops! When you're in trouble, press <%s> to be rescued" msgstr "Si in periculo sis, prem <%s> ut voces auxilium." - -#: src/states_screens/credits.cpp:209 -msgid "translator-credits" -msgstr "Launchpad Contributions:\nAlisa P, 2016\nAndré Lippok, 2016-2017\nSupernova 888, 2016" diff --git a/data/po/lt.po b/data/po/lt.po index bd0efea58..9b660ed40 100644 --- a/data/po/lt.po +++ b/data/po/lt.po @@ -13,7 +13,7 @@ msgstr "" "Project-Id-Version: SuperTuxKart\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2017-10-04 20:58-0400\n" -"PO-Revision-Date: 2017-10-24 10:06+0000\n" +"PO-Revision-Date: 2017-11-13 00:19+0000\n" "Last-Translator: Auria \n" "Language-Team: Lithuanian (http://www.transifex.com/supertuxkart/supertuxkart/language/lt/)\n" "MIME-Version: 1.0\n" @@ -4157,7 +4157,3 @@ msgstr "Rinkite ypatingo „nitro“ kuro butelius (juos panaudosite už posūki #, c-format msgid "Oops! When you're in trouble, press <%s> to be rescued" msgstr "Oi! Jei atsidūrėte neišvažiuojamoje vietoje - spauskite <%s> ir būsite išgelbėtas" - -#: src/states_screens/credits.cpp:209 -msgid "translator-credits" -msgstr "Launchpad Contributions:\nAlgimantas Margevičius, 2011\nJonas Kriaučiūnas, 2015\nMantas Kriaučiūnas, 2015-2016\nZygi Mantus, 2017" diff --git a/data/po/lv.po b/data/po/lv.po index b82dce67f..56c544545 100644 --- a/data/po/lv.po +++ b/data/po/lv.po @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: SuperTuxKart\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2017-10-04 20:58-0400\n" -"PO-Revision-Date: 2017-10-24 10:06+0000\n" +"PO-Revision-Date: 2017-11-13 00:19+0000\n" "Last-Translator: Auria \n" "Language-Team: Latvian (http://www.transifex.com/supertuxkart/supertuxkart/language/lv/)\n" "MIME-Version: 1.0\n" @@ -4153,7 +4153,3 @@ msgstr "Savāc nitro pudeles (mēs tās izmantosim pēc līkuma)" #, c-format msgid "Oops! When you're in trouble, press <%s> to be rescued" msgstr "Ak vai! Kad tu esi ķezā, nospied <%s>, lai tiktu izglābts!" - -#: src/states_screens/credits.cpp:209 -msgid "translator-credits" -msgstr "Launchpad Contributions:\nLauris Lemhens, 2015-2016" diff --git a/data/po/mn_MN.po b/data/po/mn_MN.po index 3d0a3df77..e43c84d67 100644 --- a/data/po/mn_MN.po +++ b/data/po/mn_MN.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: SuperTuxKart\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2017-10-04 20:58-0400\n" -"PO-Revision-Date: 2017-10-24 10:06+0000\n" +"PO-Revision-Date: 2017-11-13 00:19+0000\n" "Last-Translator: Auria \n" "Language-Team: Mongolian (Mongolia) (http://www.transifex.com/supertuxkart/supertuxkart/language/mn_MN/)\n" "MIME-Version: 1.0\n" @@ -4146,7 +4146,3 @@ msgstr "" #, c-format msgid "Oops! When you're in trouble, press <%s> to be rescued" msgstr "" - -#: src/states_screens/credits.cpp:209 -msgid "translator-credits" -msgstr "Launchpad Contributions:" diff --git a/data/po/nb.po b/data/po/nb.po index f8ca40464..afa5275c3 100644 --- a/data/po/nb.po +++ b/data/po/nb.po @@ -11,7 +11,7 @@ msgstr "" "Project-Id-Version: SuperTuxKart\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2017-10-04 20:58-0400\n" -"PO-Revision-Date: 2017-10-24 10:06+0000\n" +"PO-Revision-Date: 2017-11-13 00:19+0000\n" "Last-Translator: Magne Djupvik \n" "Language-Team: Norwegian Bokmål (http://www.transifex.com/supertuxkart/supertuxkart/language/nb/)\n" "MIME-Version: 1.0\n" @@ -4149,7 +4149,3 @@ msgstr "Plukk opp nitroflasker (vi skal bruke dem etter svingen)." #, c-format msgid "Oops! When you're in trouble, press <%s> to be rescued" msgstr "Oi sann! Når du får problemer, kan du trykke <%s> for å bli reddet." - -#: src/states_screens/credits.cpp:209 -msgid "translator-credits" -msgstr "Launchpad Contributions:\nAllan Nordhøy, 2016-2017\nKarl Ove Hufthammer, 2015\nMagne Djupvik, 2017" diff --git a/data/po/nl.po b/data/po/nl.po index ff4c49754..32fced3b9 100644 --- a/data/po/nl.po +++ b/data/po/nl.po @@ -6,13 +6,13 @@ # Dennis Holierhoek , 2016 # Frans van Rijn , 2015-2016 # Ward Muylaert , 2015-2017 -# 洩矢 諏訪子 , 2017 +# David Blaszyk , 2017 msgid "" msgstr "" "Project-Id-Version: SuperTuxKart\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2017-10-04 20:58-0400\n" -"PO-Revision-Date: 2017-10-24 10:06+0000\n" +"PO-Revision-Date: 2017-11-13 00:19+0000\n" "Last-Translator: Ward Muylaert \n" "Language-Team: Dutch (http://www.transifex.com/supertuxkart/supertuxkart/language/nl/)\n" "MIME-Version: 1.0\n" @@ -3023,7 +3023,7 @@ msgstr "Het maximum aantal spelers moet tussen 2 en 12 liggen." #: src/states_screens/credits.cpp:180 msgid "translator-credits" -msgstr "Launchpad Contributions:\nAmy Smile Kerkhof https://launchpad.net/~amy\nAsciimonster https://launchpad.net/~asciimonster-myrealbox\nDawid Gan https://launchpad.net/~deveee\nDennis Holierhoek, 2016\nFoppe Benedictus https://launchpad.net/~foppe-benedictus\nFrans van Rijn, 2015-2016\nGuus https://launchpad.net/~guus-verbeek\nHeimen Stoffels https://launchpad.net/~vistaus\nKaj-Ivar https://launchpad.net/~kaj-ivar\nKoen_VL https://launchpad.net/~koenvl\nplutgamer https://launchpad.net/~plutgamer\nSTK-team https://launchpad.net/~stk\ntoams https://launchpad.net/~toams\nWard Muylaert https://launchpad.net/~ward-muylaert\nWard Muylaert, 2015-2017\nWillem Sonke https://launchpad.net/~willem-sonke\nWim Champagne https://launchpad.net/~fng-deactivatedaccount-deactivatedaccount\n洩矢 諏訪子, 2017" +msgstr "Launchpad Contributions:\n Amy Smile Kerkhof https://launchpad.net/~amy\n Asciimonster https://launchpad.net/~asciimonster-myrealbox\n Dawid Gan https://launchpad.net/~deveee\n Foppe Benedictus https://launchpad.net/~foppe-benedictus\n Guus https://launchpad.net/~guus-verbeek\n Heimen Stoffels https://launchpad.net/~vistaus\n Kaj-Ivar https://launchpad.net/~kaj-ivar\n Koen_VL https://launchpad.net/~koenvl\n STK-team https://launchpad.net/~stk\n Ward Muylaert https://launchpad.net/~ward-muylaert\n Willem Sonke https://launchpad.net/~willem-sonke\n Wim Champagne https://launchpad.net/~fng-deactivatedaccount-deactivatedaccount\n plutgamer https://launchpad.net/~plutgamer\n toams https://launchpad.net/~toams" #: src/states_screens/dialogs/addons_loading.cpp:97 msgid "Update" diff --git a/data/po/nn.po b/data/po/nn.po index 193b3a171..bb7b85c21 100644 --- a/data/po/nn.po +++ b/data/po/nn.po @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: SuperTuxKart\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2017-10-04 20:58-0400\n" -"PO-Revision-Date: 2017-10-24 10:06+0000\n" +"PO-Revision-Date: 2017-11-13 00:19+0000\n" "Last-Translator: Auria \n" "Language-Team: Norwegian Nynorsk (http://www.transifex.com/supertuxkart/supertuxkart/language/nn/)\n" "MIME-Version: 1.0\n" @@ -4147,7 +4147,3 @@ msgstr "Plukk opp nitroflasker (me skal bruka dei etter svingen)." #, c-format msgid "Oops! When you're in trouble, press <%s> to be rescued" msgstr "Oi sann! Når du får problem, kan du trykkja <%s> for å verta redda." - -#: src/states_screens/credits.cpp:209 -msgid "translator-credits" -msgstr "Launchpad Contributions:\nKarl Ove Hufthammer, 2011,2015-2016" diff --git a/data/po/oc.po b/data/po/oc.po index f4b94d0c7..5d4916fea 100644 --- a/data/po/oc.po +++ b/data/po/oc.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: SuperTuxKart\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2017-10-04 20:58-0400\n" -"PO-Revision-Date: 2017-10-24 10:06+0000\n" +"PO-Revision-Date: 2017-11-13 00:19+0000\n" "Last-Translator: Auria \n" "Language-Team: Occitan (post 1500) (http://www.transifex.com/supertuxkart/supertuxkart/language/oc/)\n" "MIME-Version: 1.0\n" @@ -4146,7 +4146,3 @@ msgstr "" #, c-format msgid "Oops! When you're in trouble, press <%s> to be rescued" msgstr "" - -#: src/states_screens/credits.cpp:209 -msgid "translator-credits" -msgstr "Launchpad Contributions:" diff --git a/data/po/os.po b/data/po/os.po index f1fdb17d0..4f0e3be9f 100644 --- a/data/po/os.po +++ b/data/po/os.po @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: SuperTuxKart\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2017-10-04 20:58-0400\n" -"PO-Revision-Date: 2017-10-24 10:06+0000\n" +"PO-Revision-Date: 2017-11-13 00:19+0000\n" "Last-Translator: Auria \n" "Language-Team: Ossetic (http://www.transifex.com/supertuxkart/supertuxkart/language/os/)\n" "MIME-Version: 1.0\n" @@ -3020,7 +3020,7 @@ msgstr "" #: src/states_screens/credits.cpp:180 msgid "translator-credits" -msgstr "Launchpad Contributions:\nDawid Gan https://launchpad.net/~deveee\nXwybylty Soslan https://launchpad.net/~soslan" +msgstr "Launchpad Contributions:\n Dawid Gan https://launchpad.net/~deveee\n Xwybylty Soslan https://launchpad.net/~soslan" #: src/states_screens/dialogs/addons_loading.cpp:97 msgid "Update" diff --git a/data/po/pl.po b/data/po/pl.po index eab53358b..c17237c02 100644 --- a/data/po/pl.po +++ b/data/po/pl.po @@ -12,7 +12,7 @@ msgstr "" "Project-Id-Version: SuperTuxKart\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2017-10-04 20:58-0400\n" -"PO-Revision-Date: 2017-10-24 10:06+0000\n" +"PO-Revision-Date: 2017-11-13 00:19+0000\n" "Last-Translator: Deve \n" "Language-Team: Polish (http://www.transifex.com/supertuxkart/supertuxkart/language/pl/)\n" "MIME-Version: 1.0\n" @@ -3033,7 +3033,7 @@ msgstr "Maksymalna ilość graczy musi mieścić się w zakresie od 2 do 12." #: src/states_screens/credits.cpp:180 msgid "translator-credits" -msgstr "Launchpad Contributions:\nAuria https://launchpad.net/~auria-mg\nBill https://launchpad.net/~cges30901\nDawid Gan https://launchpad.net/~deveee\nDeve, 2015\nDeve, 2016-2017\nKuba Polankowski https://launchpad.net/~tux4-b\nKuba Polankowski https://launchpad.net/~tux4-wp\nPatryk Wychowaniec https://launchpad.net/~p98\nPatryk Wychowaniec, 2015-2016\nSTK-team https://launchpad.net/~stk\nTwojwujaszek https://launchpad.net/~twojwujaszek-gmail\nYogitex, 2016" +msgstr "Launchpad Contributions:\n Auria https://launchpad.net/~auria-mg\n Bill https://launchpad.net/~cges30901\n Dawid Gan https://launchpad.net/~deveee\n Kuba Polankowski https://launchpad.net/~tux4-b\n Kuba Polankowski https://launchpad.net/~tux4-wp\n Patryk Wychowaniec https://launchpad.net/~p98\n STK-team https://launchpad.net/~stk\n Twojwujaszek https://launchpad.net/~twojwujaszek-gmail" #: src/states_screens/dialogs/addons_loading.cpp:97 msgid "Update" diff --git a/data/po/pms.po b/data/po/pms.po new file mode 100644 index 000000000..0b561c542 --- /dev/null +++ b/data/po/pms.po @@ -0,0 +1,4148 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: SuperTuxKart\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-10-04 20:58-0400\n" +"PO-Revision-Date: 2017-11-13 00:19+0000\n" +"Last-Translator: Auria \n" +"Language-Team: Piemontese (http://www.transifex.com/supertuxkart/supertuxkart/language/pms/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: pms\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. I18N: ./data/achievements.xml +msgid "Christoffel Columbus" +msgstr "" + +#. I18N: ./data/achievements.xml +msgid "Play every official track at least once." +msgstr "" + +#. I18N: ./data/achievements.xml +msgid "Strike!" +msgstr "" + +#. I18N: ./data/achievements.xml +msgid "Hit 10 karts with a bowling-ball." +msgstr "" + +#. I18N: ./data/achievements.xml +msgid "Arch Enemy" +msgstr "" + +#. I18N: ./data/achievements.xml +msgid "Hit the same kart at least 5 times in one race." +msgstr "" + +#. I18N: ./data/achievements.xml +msgid "Marathoner" +msgstr "" + +#. I18N: ./data/achievements.xml +msgid "Make a race with 5 laps or more." +msgstr "" + +#. I18N: ./data/achievements.xml +msgid "Skid-row" +msgstr "" + +#. I18N: ./data/achievements.xml +msgid "Make 5 skidding in a single lap." +msgstr "" + +#. I18N: ./data/achievements.xml +msgid "Gold driver" +msgstr "" + +#. I18N: ./data/achievements.xml +msgid "Win against at least 3 opponents in all single player modes." +msgstr "" + +#. I18N: ./data/achievements.xml +msgid "Powerup Love" +msgstr "" + +#. I18N: ./data/achievements.xml +msgid "Use 10 or more powerups in a race." +msgstr "" + +#. I18N: ./data/achievements.xml +msgid "Unstoppable" +msgstr "" + +#. I18N: ./data/achievements.xml +msgid "Win 5 single races in a row." +msgstr "" + +#. I18N: ./data/achievements.xml +msgid "Banana Lover" +msgstr "" + +#. I18N: ./data/achievements.xml +msgid "Collect at least 5 bananas in one race." +msgstr "" + +#. I18N: ./data/achievements.xml +msgid "It's secret" +msgstr "" + +#. I18N: ./data/achievements.xml +msgid "Really ... a secret." +msgstr "" + +#. I18N: ./data/achievements.xml +msgid "Mosquito Hunter" +msgstr "" + +#. I18N: ./data/achievements.xml +msgid "" +"Take your opponents for mosquitos! With the swatter, squash at least 5 of " +"them in a race." +msgstr "" + +#. I18N: ./data/grandprix/1_penguinplayground.grandprix +msgid "Penguin Playground" +msgstr "" + +#. I18N: ./data/grandprix/2_offthebeatentrack.grandprix +msgid "Off the beaten track" +msgstr "" + +#. I18N: ./data/grandprix/3_tothemoonandback.grandprix +msgid "To the moon and back" +msgstr "" + +#. I18N: ./data/grandprix/4_atworldsend.grandprix +msgid "At World's End" +msgstr "" + +#. I18N: ./data/gui/addons_loading.stkgui +#. I18N: Add-on screen action +msgid "Install" +msgstr "" + +#. I18N: ./data/gui/addons_loading.stkgui +#. I18N: Add-on screen action +msgid "Uninstall" +msgstr "" + +#. I18N: ./data/gui/addons_loading.stkgui +#. I18N: Add-on screen action +#. I18N: ./data/gui/ghost_replay_info_dialog.stkgui +#. I18N: Ghost replay info action +#. I18N: name of buttons on gamepads +#: src/input/gamepad_config.cpp:216 +#: src/states_screens/dialogs/addons_loading.cpp:285 +msgid "Back" +msgstr "" + +#. I18N: ./data/gui/addons_screen.stkgui +msgid "SuperTuxKart Addons" +msgstr "" + +#. I18N: ./data/gui/addons_screen.stkgui +#. I18N: In addons screen, in the filtering bar, to enable a filter that will +#. show only recently updated items +msgid "Updated" +msgstr "" + +#. I18N: ./data/gui/addons_screen.stkgui +#. I18N: In addons screen, in the filtering bar, to enable a filter that will +#. show only items with good rating +msgid "Rating >=" +msgstr "" + +#. I18N: ./data/gui/addons_screen.stkgui +#. I18N: In the addons screen +msgid "Karts" +msgstr "" + +#. I18N: ./data/gui/addons_screen.stkgui +#. I18N: In the addons screen +#. I18N: ./data/gui/gp_info.stkgui +#. I18N: In the grand prix info screen +msgid "Tracks" +msgstr "" + +#. I18N: ./data/gui/addons_screen.stkgui +#. I18N: In the addons screen +#. I18N: ./data/gui/arenas.stkgui +#. I18N: Section in arena tracks selection screen +msgid "Arenas" +msgstr "" + +#. I18N: ./data/gui/arenas.stkgui +#. I18N: track group +#. I18N: ./data/gui/easter_egg.stkgui +#. I18N: track group +#: src/states_screens/grand_prix_editor_screen.cpp:337 +msgid "Standard" +msgstr "" + +#. I18N: ./data/gui/arenas.stkgui +#. I18N: track group +#. I18N: ./data/gui/easter_egg.stkgui +#. I18N: track group +#. I18N: arena group name +#. I18N: track group name +#. I18N: kart group name +#. I18N: track group name +#: src/states_screens/arenas_screen.cpp:83 +#: src/states_screens/easter_egg_screen.cpp:145 +#: src/states_screens/grand_prix_editor_screen.cpp:339 +#: src/states_screens/kart_selection.cpp:287 +#: src/states_screens/tracks_and_gp_screen.cpp:148 +msgid "Add-Ons" +msgstr "" + +#. I18N: ./data/gui/arenas.stkgui +#. I18N: track group +#. I18N: ./data/gui/easter_egg.stkgui +#. I18N: track group +#. I18N: Time filters for add-ons +#. I18N: name of the tab that will show arenas from all groups +#. I18N: name of the tab that will show tracks from all groups +#. I18N: if all kart animations are enabled +#. I18N: name of the tab that will show tracks from all groups +#: src/states_screens/addons_screen.cpp:49 +#: src/states_screens/arenas_screen.cpp:75 +#: src/states_screens/easter_egg_screen.cpp:137 +#: src/states_screens/edit_track_screen.cpp:147 +#: src/states_screens/gp_info_screen.cpp:76 +#: src/states_screens/grand_prix_editor_screen.cpp:336 +#: src/states_screens/kart_selection.cpp:279 +#: src/states_screens/options_screen_video.cpp:456 +#: src/states_screens/tracks_and_gp_screen.cpp:138 +#: src/states_screens/tracks_screen.cpp:141 +msgid "All" +msgstr "" + +#. I18N: ./data/gui/confirm_dialog.stkgui +#. I18N: In a 'are you sure?' dialog +#: src/states_screens/edit_gp_screen.cpp:257 +#: src/states_screens/ghost_replay_selection.cpp:117 +msgid "Yes" +msgstr "" + +#. I18N: ./data/gui/confirm_dialog.stkgui +#. I18N: In a 'are you sure?' dialog +#. I18N: ./data/gui/confirm_resolution_dialog.stkgui +#. I18N: In the 'confirm resolution' dialog, that's shown when switching +#. resoluton +#. I18N: ./data/gui/edit_track.stkgui +#. I18N: ./data/gui/general_text_field_dialog.stkgui +#. I18N: In the general textfield dialog +#. I18N: ./data/gui/online/create_server.stkgui +#. I18N: In the server creation screen +#. I18N: ./data/gui/online/recovery_input.stkgui +#. I18N: In the recovery dialog +#. I18N: ./data/gui/online/register.stkgui +#. I18N: In the registration dialog +#. I18N: ./data/gui/online/registration_terms.stkgui +#. I18N: In the registration dialog +#. I18N: ./data/gui/online/server_info_dialog.stkgui +#. I18N: In the server info dialog +#. I18N: ./data/gui/user_screen.stkgui +#. I18N: In the user screen +#. I18N: ./data/gui/user_screen_tab.stkgui +#. I18N: In the user screen +#: src/states_screens/dialogs/addons_loading.cpp:228 +#: src/states_screens/dialogs/add_device_dialog.cpp:128 +#: src/states_screens/user_screen.cpp:112 +msgid "Cancel" +msgstr "" + +#. I18N: ./data/gui/confirm_resolution_dialog.stkgui +#. I18N: In the 'confirm resolution' dialog, that's shown when switching +#. resoluton +msgid "Keep this resolution" +msgstr "" + +#. I18N: ./data/gui/credits.stkgui +#. I18N: Title in credits screen +msgid "Credits" +msgstr "" + +#. I18N: ./data/gui/custom_video_settings.stkgui +msgid "Graphics Settings" +msgstr "" + +#. I18N: ./data/gui/custom_video_settings.stkgui +#. I18N: Video settings +msgid "Advanced pipeline (lights, etc.)" +msgstr "" + +#. I18N: ./data/gui/custom_video_settings.stkgui +#. I18N: Video settings +msgid "Shadows" +msgstr "" + +#. I18N: ./data/gui/custom_video_settings.stkgui +#. I18N: Video settings +msgid "Image-based lighting" +msgstr "" + +#. I18N: ./data/gui/custom_video_settings.stkgui +#. I18N: Video settings +msgid "Bloom" +msgstr "" + +#. I18N: ./data/gui/custom_video_settings.stkgui +#. I18N: Video settings +msgid "Light shaft (God rays)" +msgstr "" + +#. I18N: ./data/gui/custom_video_settings.stkgui +#. I18N: Video settings +msgid "Ambient Occlusion" +msgstr "" + +#. I18N: ./data/gui/custom_video_settings.stkgui +#. I18N: Video settings +msgid "Global illumination" +msgstr "" + +#. I18N: ./data/gui/custom_video_settings.stkgui +#. I18N: Video settings +msgid "Glow (outlines)" +msgstr "" + +#. I18N: ./data/gui/custom_video_settings.stkgui +#. I18N: Video settings +msgid "Anti-aliasing" +msgstr "" + +#. I18N: ./data/gui/custom_video_settings.stkgui +#. I18N: Video settings +msgid "Motion blur" +msgstr "" + +#. I18N: ./data/gui/custom_video_settings.stkgui +#. I18N: Video settings +msgid "Depth of field" +msgstr "" + +#. I18N: ./data/gui/custom_video_settings.stkgui +#. I18N: Video settings +msgid "Weather Effects" +msgstr "" + +#. I18N: ./data/gui/custom_video_settings.stkgui +#. I18N: Video settings +msgid "Texture compression" +msgstr "" + +#. I18N: ./data/gui/custom_video_settings.stkgui +#. I18N: Video settings +msgid "Animated Scenery" +msgstr "" + +#. I18N: ./data/gui/custom_video_settings.stkgui +#. I18N: Video settings +msgid "Animated Characters" +msgstr "" + +#. I18N: ./data/gui/custom_video_settings.stkgui +#. I18N: Video settings +msgid "Rendered image quality" +msgstr "" + +#. I18N: ./data/gui/custom_video_settings.stkgui +#. I18N: Video settings +msgid "Geometry detail" +msgstr "" + +#. I18N: ./data/gui/custom_video_settings.stkgui +#. I18N: Video settings +msgid "* Restart STK to apply new settings" +msgstr "" + +#. I18N: ./data/gui/custom_video_settings.stkgui +#. I18N: ./data/gui/multitouch_settings.stkgui +msgid "Apply" +msgstr "" + +#. I18N: ./data/gui/easter_egg.stkgui +#. I18N: Section in easter egg tracks selection screen +#. I18N: ./data/gui/tracks.stkgui +#. I18N: In the track selection screen +#. I18N: ./data/gui/tracks_and_gp.stkgui +#. I18N: In the track and grand prix selection screen +msgid "All Tracks" +msgstr "" + +#. I18N: ./data/gui/edit_gp.stkgui +#. I18N: Title in edit grand prix screen +msgid "Edit Grand Prix" +msgstr "" + +#. I18N: ./data/gui/edit_gp.stkgui +#. I18N: Menu item +msgid "Move up" +msgstr "" + +#. I18N: ./data/gui/edit_gp.stkgui +#. I18N: Menu item +msgid "Move down" +msgstr "" + +#. I18N: ./data/gui/edit_gp.stkgui +#. I18N: Menu item +msgid "Add" +msgstr "" + +#. I18N: ./data/gui/edit_gp.stkgui +#. I18N: Menu item +#. I18N: ./data/gui/grand_prix_editor.stkgui +#. I18N: Menu item +msgid "Edit" +msgstr "" + +#. I18N: ./data/gui/edit_gp.stkgui +#. I18N: Menu item +#. I18N: ./data/gui/ghost_replay_info_dialog.stkgui +#. I18N: Ghost replay info action +#. I18N: ./data/gui/grand_prix_editor.stkgui +#. I18N: Menu item +#. I18N: ./data/gui/online/user_info_dialog.stkgui +#. I18N: User info dialog +msgid "Remove" +msgstr "" + +#. I18N: ./data/gui/edit_gp.stkgui +#. I18N: Menu item +msgid "Save" +msgstr "" + +#. I18N: ./data/gui/edit_track.stkgui +#. I18N: In the edit track screen +msgid "Number of laps:" +msgstr "" + +#. I18N: ./data/gui/edit_track.stkgui +#. I18N: In the edit track screen +msgid "Reverse:" +msgstr "" + +#. I18N: ./data/gui/edit_track.stkgui +#. I18N: ./data/gui/general_text_field_dialog.stkgui +#. I18N: In the general textfield dialog +#. I18N: ./data/gui/online/register.stkgui +#. I18N: In the registration dialog +#. I18N: ./data/gui/user_screen.stkgui +#. I18N: In the user screen +#. I18N: ./data/gui/user_screen_tab.stkgui +#. I18N: In the user screen +#: src/states_screens/dialogs/message_dialog.cpp:123 +#: src/states_screens/dialogs/message_dialog.cpp:135 +msgid "OK" +msgstr "" + +#. I18N: ./data/gui/feature_unlocked.stkgui +#. I18N: ./data/gui/grand_prix_lose.stkgui +#. I18N: ./data/gui/grand_prix_win.stkgui +#. I18N: ./data/gui/soccer_setup.stkgui +#. I18N: In soccer setup screen +#. I18N: ./data/gui/tutorial_message_dialog.stkgui +#. I18N: Button in tutorial +#: src/states_screens/race_result_gui.cpp:205 +msgid "Continue" +msgstr "" + +#. I18N: ./data/gui/ghost_replay_info_dialog.stkgui +#. I18N: Ghost replay info action +#. I18N: ./data/gui/track_info.stkgui +#. I18N: In the track info screen +msgid "Record the race for ghost replay" +msgstr "" + +#. I18N: ./data/gui/ghost_replay_info_dialog.stkgui +#. I18N: Ghost replay info action +msgid "Watch replay only" +msgstr "" + +#. I18N: ./data/gui/ghost_replay_info_dialog.stkgui +#. I18N: Ghost replay info screen action +#. I18N: ./data/gui/gp_info.stkgui +#. I18N: In the grand prix info screen +#. I18N: ./data/gui/online/networking_lobby.stkgui +#. I18N: In the network lobby +#. I18N: ./data/gui/track_info.stkgui +#. I18N: In the track info screen +msgid "Start Race" +msgstr "" + +#. I18N: ./data/gui/ghost_replay_selection.stkgui +#. I18N: In the ghost replay selection screen +msgid "Ghost Replay Selection" +msgstr "" + +#. I18N: ./data/gui/ghost_replay_selection.stkgui +#. I18N: In the ghost replay selection screen +msgid "Only show replays matching the current difficulty" +msgstr "" + +#. I18N: ./data/gui/ghost_replay_selection.stkgui +#. I18N: In the ghost replay selection screen +msgid "Record ghost replay" +msgstr "" + +#. I18N: ./data/gui/gp_info.stkgui +#. I18N: In the grand prix info screen +msgid "AI karts" +msgstr "" + +#. I18N: ./data/gui/gp_info.stkgui +#. I18N: In the grand prix info screen +#: src/states_screens/ghost_replay_selection.cpp:79 +msgid "Reverse" +msgstr "" + +#. I18N: ./data/gui/gp_info.stkgui +#. I18N: In the grand prix info screen +msgid "Track group" +msgstr "" + +#. I18N: ./data/gui/gp_info.stkgui +#. I18N: In the grand prix info screen +#: src/states_screens/gp_info_screen.cpp:147 +msgid "Continue saved GP" +msgstr "" + +#. I18N: ./data/gui/grand_prix_editor.stkgui +#. I18N: Title in grand prix editor screen +msgid "Grand Prix editor" +msgstr "" + +#. I18N: ./data/gui/grand_prix_editor.stkgui +#. I18N: Menu item +msgid "New" +msgstr "" + +#. I18N: ./data/gui/grand_prix_editor.stkgui +#. I18N: Menu item +msgid "Copy" +msgstr "" + +#. I18N: ./data/gui/grand_prix_editor.stkgui +#. I18N: Menu item +#. I18N: ./data/gui/user_screen.stkgui +#. I18N: In the user screen +#. I18N: ./data/gui/user_screen_tab.stkgui +#. I18N: In the user screen +msgid "Rename" +msgstr "" + +#. I18N: ./data/gui/grand_prix_lose.stkgui +#. I18N: ./data/gui/grand_prix_win.stkgui +msgid "Save Grand Prix" +msgstr "" + +#. I18N: ./data/gui/help1.stkgui +#. I18N: ./data/gui/help2.stkgui +#. I18N: ./data/gui/help3.stkgui +#. I18N: ./data/gui/help4.stkgui +#. I18N: ./data/gui/help5.stkgui +msgid "SuperTuxKart Help" +msgstr "" + +#. I18N: ./data/gui/help1.stkgui +#. I18N: Tab in help menu +#. I18N: ./data/gui/help2.stkgui +#. I18N: Tab in help menu +#. I18N: ./data/gui/help3.stkgui +#. I18N: Tab in help menu +#. I18N: ./data/gui/help4.stkgui +#. I18N: Tab in help menu +#. I18N: ./data/gui/help5.stkgui +#. I18N: Tab in help menu +#. I18N: ./data/gui/multitouch_settings.stkgui +#. I18N: In the multitouch settings screen +msgid "General" +msgstr "" + +#. I18N: ./data/gui/help1.stkgui +#. I18N: Tab in help menu +#. I18N: ./data/gui/help2.stkgui +#. I18N: Tab in help menu +#. I18N: ./data/gui/help3.stkgui +#. I18N: Tab in help menu +#. I18N: ./data/gui/help4.stkgui +#. I18N: Tab in help menu +#. I18N: ./data/gui/help5.stkgui +#. I18N: Tab in help menu +msgid "Weapons" +msgstr "" + +#. I18N: ./data/gui/help1.stkgui +#. I18N: Tab in help menu +#. I18N: ./data/gui/help2.stkgui +#. I18N: Tab in help menu +#. I18N: ./data/gui/help3.stkgui +#. I18N: Tab in help menu +#. I18N: ./data/gui/help4.stkgui +#. I18N: Tab in help menu +#. I18N: ./data/gui/help5.stkgui +#. I18N: Tab in help menu +msgid "Game Modes" +msgstr "" + +#. I18N: ./data/gui/help1.stkgui +#. I18N: Tab in help menu +#. I18N: ./data/gui/help2.stkgui +#. I18N: Tab in help menu +#. I18N: ./data/gui/help3.stkgui +#. I18N: Tab in help menu +#. I18N: ./data/gui/help4.stkgui +#. I18N: Tab in help menu +#. I18N: ./data/gui/help5.stkgui +#. I18N: Tab in help menu +msgid "Multi-player" +msgstr "" + +#. I18N: ./data/gui/help1.stkgui +#. I18N: Tab in help menu +#. I18N: ./data/gui/help2.stkgui +#. I18N: Tab in help menu +#. I18N: ./data/gui/help3.stkgui +#. I18N: Tab in help menu +#. I18N: ./data/gui/help4.stkgui +#. I18N: Tab in help menu +#. I18N: ./data/gui/help5.stkgui +#. I18N: Tab in help menu +msgid "Bananas" +msgstr "" + +#. I18N: ./data/gui/help1.stkgui +msgid "Start the tutorial" +msgstr "" + +#. I18N: ./data/gui/help1.stkgui +#. I18N: In the help menu +msgid "Collect blue boxes. They will give you weapons or other powerups." +msgstr "" + +#. I18N: ./data/gui/help1.stkgui +#. I18N: In the help menu +#: ../stk-assets/tracks/tutorial/scripting.as:32 +#: ../stk-assets/tracks/tutorial/triggers.as:16 +msgid "Avoid bananas!" +msgstr "" + +#. I18N: ./data/gui/help1.stkgui +#. I18N: In the help menu +msgid "" +"Collecting nitro allows you to get speed boosts whenever you wish by " +"pressing the appropriate key. You can see your current level of nitro in the" +" bar at the right of the game screen." +msgstr "" + +#. I18N: ./data/gui/help1.stkgui +#. I18N: In the help menu +msgid "" +"If you see a button with a lock like this one, you need to complete a " +"challenge to unlock it." +msgstr "" + +#. I18N: ./data/gui/help1.stkgui +#. I18N: in the help menu +msgid "The 'skidding' key allows you to skid in sharp turns and get a boost." +msgstr "" + +#. I18N: ./data/gui/help1.stkgui +#. I18N: in the help screen +msgid "* Current key bindings can be seen/changed in menu Options" +msgstr "" + +#. I18N: ./data/gui/help2.stkgui +#. I18N: In the help menu +msgid "To help you win, there are some powerups you can collect:" +msgstr "" + +#. I18N: ./data/gui/help2.stkgui +msgid "" +"BubbleGum - protect yourself with a shield, or use while looking back to " +"leave a sticky pink puddle behind you." +msgstr "" + +#. I18N: ./data/gui/help2.stkgui +msgid "" +"Cake - thrown at the closest rival, best on short ranges and long straights." +msgstr "" + +#. I18N: ./data/gui/help2.stkgui +msgid "" +"Plunger - throw straight to pull an opponent back, or throw while looking " +"back to make one lose sight." +msgstr "" + +#. I18N: ./data/gui/help2.stkgui +msgid "" +"Bowling Ball - bounces off walls. If you are looking back, it will be thrown" +" backwards." +msgstr "" + +#. I18N: ./data/gui/help2.stkgui +msgid "Parachute - slows down all karts in a better position." +msgstr "" + +#. I18N: ./data/gui/help2.stkgui +msgid "" +"Swapper - gift boxes are transformed into bananas and vice versa for a short" +" time." +msgstr "" + +#. I18N: ./data/gui/help2.stkgui +msgid "" +"Basket Ball - bounces after the leader, and might squash and slow down karts" +" down on the way." +msgstr "" + +#. I18N: ./data/gui/help2.stkgui +msgid "Swatter - will squash karts close by, slowing them down." +msgstr "" + +#. I18N: ./data/gui/help3.stkgui +msgid "SuperTuxKart features several game modes" +msgstr "" + +#. I18N: ./data/gui/help3.stkgui +#. I18N: In the help menu +msgid "" +"Regular Race: All blows allowed, so catch weapons and make clever use of " +"them!" +msgstr "" + +#. I18N: ./data/gui/help3.stkgui +#. I18N: In the help menu +msgid "" +"Time Trial: Contains no powerups, so only your driving skills matter! This " +"mode allows you to record the race for replaying." +msgstr "" + +#. I18N: ./data/gui/help3.stkgui +#. I18N: In the help menu +msgid "" +"Follow the leader: Run for second place, as the last kart will be " +"disqualified every time the counter hits zero. Beware: going in front of the" +" leader will get you eliminated too!" +msgstr "" + +#. I18N: ./data/gui/help3.stkgui +#. I18N: In the help menu +msgid "" +"3 Strikes Battle: Hit others with weapons until they lose all their lives." +msgstr "" + +#. I18N: ./data/gui/help3.stkgui +#. I18N: In the help menu +msgid "Soccer: Use your kart to push the ball into the goal." +msgstr "" + +#. I18N: ./data/gui/help3.stkgui +#. I18N: In the help menu +msgid "Egg hunt: Explore tracks to find all hidden eggs." +msgstr "" + +#. I18N: ./data/gui/help3.stkgui +#. I18N: In the help menu +msgid "" +"* Most of these game modes can also be played in a Grand Prix fashion: " +"instead of playing a single race, you play many in a row. The better you " +"rank, the more points you get. In the end, the player with the most points " +"wins the cup." +msgstr "" + +#. I18N: ./data/gui/help4.stkgui +msgid "SuperTuxKart can be played in multiplayer mode on the same computer" +msgstr "" + +#. I18N: ./data/gui/help4.stkgui +msgid "(network play is not yet available)" +msgstr "" + +#. I18N: ./data/gui/help4.stkgui +#. I18N: In the help menu +msgid "" +"First, you will need several input devices (having multiple gamepads or " +"joysticks is the best way to play with several people). Go in the input " +"configuration screen and setup the gamepads. It is also possible to play on " +"keyboard(s), however each player will need a different set of keys, and keep" +" in mind that most keyboards are not appropriate for multiplayer gameplay " +"because they do not support large number of keypresses." +msgstr "" + +#. I18N: ./data/gui/help4.stkgui +#. I18N: In the help menu +msgid "" +"When input devices are configured, you are ready to play. Select the " +"'multiplayer race' icon in the main menu. When it is time to choose a kart, " +"each player can press on the 'fire' key of their gamepad or keyboard to join" +" the game. Each player can use their input device to select their kart. The " +"game continues when everyone selected their kart. Note that the mouse may " +"not be used for this operation." +msgstr "" + +#. I18N: ./data/gui/help5.stkgui +msgid "" +"Hitting a banana can result in one of the following being attached to the " +"kart:" +msgstr "" + +#. I18N: ./data/gui/help5.stkgui +#. I18N: In the help menu +msgid "Anchor - slows down the kart." +msgstr "" + +#. I18N: ./data/gui/help5.stkgui +#. I18N: In the help menu +msgid "Parachute - slows down the kart less than the anchor." +msgstr "" + +#. I18N: ./data/gui/help5.stkgui +#. I18N: In the help menu +msgid "" +"Bomb - detonates after a short amount of time to throw the kart up in the " +"air. Bump into another kart to transfer the bomb to another player." +msgstr "" + +#. I18N: ./data/gui/karts.stkgui +#. I18N: In the kart selection (player setup) screen +#. I18N: ./data/gui/karts_online.stkgui +#. I18N: In the kart selection (player setup) screen +msgid "Choose a Kart" +msgstr "" + +#. I18N: ./data/gui/main_menu.stkgui +#. I18N: Main menu button +msgid "Story Mode" +msgstr "" + +#. I18N: ./data/gui/main_menu.stkgui +#. I18N: Main menu button +msgid "Singleplayer" +msgstr "" + +#. I18N: ./data/gui/main_menu.stkgui +#. I18N: Main menu button +msgid "Multiplayer" +msgstr "" + +#. I18N: ./data/gui/main_menu.stkgui +#. I18N: Main menu button +#. I18N: ./data/gui/user_screen.stkgui +#. I18N: In the user screen +#. I18N: ./data/gui/user_screen_tab.stkgui +#. I18N: In the user screen +#: src/states_screens/main_menu_screen.cpp:78 +#: src/states_screens/online_profile_friends.cpp:222 +msgid "Online" +msgstr "" + +#. I18N: ./data/gui/main_menu.stkgui +#. I18N: Main menu button +msgid "Addons" +msgstr "" + +#. I18N: ./data/gui/main_menu.stkgui +#. I18N: In the main screen +#. I18N: ./data/gui/overworld_dialog.stkgui +#. I18N: In the in-game dialog +#. I18N: ./data/gui/race_paused_dialog.stkgui +#. I18N: Race paused button +msgid "Options" +msgstr "" + +#. I18N: ./data/gui/main_menu.stkgui +#. I18N: In the main screen +#. I18N: ./data/gui/overworld_dialog.stkgui +#. I18N: In the in-game dialog +#. I18N: ./data/gui/race_paused_dialog.stkgui +#. I18N: Race paused button +msgid "Help" +msgstr "" + +#. I18N: ./data/gui/main_menu.stkgui +#. I18N: In the main screen +#: src/states_screens/race_gui_overworld.cpp:511 +msgid "Tutorial" +msgstr "" + +#. I18N: ./data/gui/main_menu.stkgui +#. I18N: In the main screen +#. I18N: ./data/gui/online/profile_achievements_tab.stkgui +#. I18N: Section in the profile screen +#: src/states_screens/online_profile_base.cpp:112 +msgid "Achievements" +msgstr "" + +#. I18N: ./data/gui/main_menu.stkgui +#. I18N: In the main screen +msgid "Grand Prix Editor" +msgstr "" + +#. I18N: ./data/gui/main_menu.stkgui +#. I18N: In the main screen +msgid "About" +msgstr "" + +#. I18N: ./data/gui/main_menu.stkgui +#. I18N: In the main screen +msgid "Quit" +msgstr "" + +#. I18N: ./data/gui/multitouch_settings.stkgui +msgid "Touch Device Settings" +msgstr "" + +#. I18N: ./data/gui/multitouch_settings.stkgui +#. I18N: In the multitouch settings screen +msgid "Device enabled" +msgstr "" + +#. I18N: ./data/gui/multitouch_settings.stkgui +#. I18N: In the multitouch settings screen +msgid "Inverted buttons" +msgstr "" + +#. I18N: ./data/gui/multitouch_settings.stkgui +#. I18N: In the multitouch settings screen +msgid "Buttons scale" +msgstr "" + +#. I18N: ./data/gui/multitouch_settings.stkgui +#. I18N: In the multitouch settings screen +msgid "Accelerometer" +msgstr "" + +#. I18N: ./data/gui/multitouch_settings.stkgui +#. I18N: In the multitouch settings screen +msgid "Advanced" +msgstr "" + +#. I18N: ./data/gui/multitouch_settings.stkgui +#. I18N: In the multitouch settings screen +msgid "Deadzone" +msgstr "" + +#. I18N: ./data/gui/multitouch_settings.stkgui +#. I18N: In the multitouch settings screen +msgid "Sensitivity" +msgstr "" + +#. I18N: ./data/gui/multitouch_settings.stkgui +msgid "Restore defaults" +msgstr "" + +#. I18N: ./data/gui/online/change_password.stkgui +#. I18N: In the change password dialog +msgid "Password Change" +msgstr "" + +#. I18N: ./data/gui/online/change_password.stkgui +#. I18N: In the change password dialog +msgid "Current Password" +msgstr "" + +#. I18N: ./data/gui/online/change_password.stkgui +#. I18N: In the change password dialog +msgid "New Password" +msgstr "" + +#. I18N: ./data/gui/online/change_password.stkgui +#. I18N: In the change password dialog +#. I18N: ./data/gui/online/register.stkgui +#. I18N: In the registration dialog +msgid "Confirm" +msgstr "" + +#. I18N: ./data/gui/online/change_password.stkgui +#. I18N: In the change password dialog +#. I18N: ./data/gui/online/recovery_input.stkgui +#. I18N: In the recovery dialog +msgid "Submit" +msgstr "" + +#. I18N: ./data/gui/online/change_password.stkgui +#. I18N: In the change password dialog +#. I18N: ./data/gui/online/guest_login.stkgui +#. I18N: In the login dialog +#. I18N: ./data/gui/online/notification_dialog.stkgui +#. I18N: User info dialog +#. I18N: ./data/gui/online/recovery_info.stkgui +#. I18N: In the recovery dialog +#. I18N: ./data/gui/online/user_info_dialog.stkgui +#. I18N: User info dialog +#. I18N: ./data/gui/online/vote_dialog.stkgui +#. I18N: Vote dialog +msgid "Close" +msgstr "" + +#. I18N: ./data/gui/online/create_server.stkgui +#. I18N: In the server creation screen +msgid "Server Creation" +msgstr "" + +#. I18N: ./data/gui/online/create_server.stkgui +#. I18N: In the server creation screen +#. I18N: ./data/gui/online/lobby_settings.stkgui +#. I18N: In the lobby settings screen +msgid "Name of the server" +msgstr "" + +#. I18N: ./data/gui/online/create_server.stkgui +#. I18N: In the server creation screen +#. I18N: ./data/gui/online/lobby_settings.stkgui +#. I18N: In the lobby settings screen +msgid "Max. number of players" +msgstr "" + +#. I18N: ./data/gui/online/create_server.stkgui +#. I18N: In the server creation screen +msgid "Password (optional)" +msgstr "" + +#. I18N: ./data/gui/online/create_server.stkgui +#. I18N: In the server creation screen +#: src/states_screens/ghost_replay_selection.cpp:80 +#: src/states_screens/server_selection.cpp:104 +msgid "Difficulty" +msgstr "" + +#. I18N: ./data/gui/online/create_server.stkgui +#. I18N: Difficulty +#. I18N: ./data/gui/race_setup.stkgui +#. I18N: Difficulty +#. I18N: ./data/gui/select_challenge.stkgui +#. I18N: Difficulty +#: src/race/race_manager.hpp:546 +#: src/states_screens/ghost_replay_selection.cpp:121 +msgid "Novice" +msgstr "" + +#. I18N: ./data/gui/online/create_server.stkgui +#. I18N: Difficulty +#. I18N: ./data/gui/race_setup.stkgui +#. I18N: Difficulty +#. I18N: ./data/gui/select_challenge.stkgui +#. I18N: Difficulty +#: src/race/race_manager.hpp:547 +#: src/states_screens/ghost_replay_selection.cpp:121 +msgid "Intermediate" +msgstr "" + +#. I18N: ./data/gui/online/create_server.stkgui +#. I18N: Difficulty +#. I18N: ./data/gui/race_setup.stkgui +#. I18N: Difficulty +#. I18N: ./data/gui/select_challenge.stkgui +#. I18N: Difficulty +#: src/race/race_manager.hpp:548 +#: src/states_screens/ghost_replay_selection.cpp:120 +msgid "Expert" +msgstr "" + +#. I18N: ./data/gui/online/create_server.stkgui +#. I18N: Difficulty +#. I18N: ./data/gui/race_setup.stkgui +#. I18N: Difficulty +#: src/race/race_manager.hpp:549 +#: src/states_screens/ghost_replay_selection.cpp:119 +msgid "SuperTux" +msgstr "" + +#. I18N: ./data/gui/online/create_server.stkgui +#. I18N: In the server creation screen +#: src/states_screens/server_selection.cpp:105 +msgid "Game mode" +msgstr "" + +#. I18N: ./data/gui/online/create_server.stkgui +#. I18N: Multiplayer game mode +#. I18N: Game mode +#: src/race/race_manager.hpp:175 +msgid "Normal Race" +msgstr "" + +#. I18N: ./data/gui/online/create_server.stkgui +#. I18N: Multiplayer game mode +#. I18N: Game mode +#: src/race/race_manager.hpp:177 +msgid "Time Trial" +msgstr "" + +#. I18N: ./data/gui/online/create_server.stkgui +#. I18N: In the server creation screen +msgid "Create" +msgstr "" + +#. I18N: ./data/gui/online/guest_login.stkgui +#. I18N: ./data/gui/user_screen.stkgui +#. I18N: Used as a verb, appears on the main menu (login button) +#: src/states_screens/main_menu_screen.cpp:80 +msgid "Login" +msgstr "" + +#. I18N: ./data/gui/online/guest_login.stkgui +#. I18N: Tab in login menu +msgid "Sign In" +msgstr "" + +#. I18N: ./data/gui/online/guest_login.stkgui +#. I18N: Tab in login menu +msgid "Sign In As Guest" +msgstr "" + +#. I18N: ./data/gui/online/guest_login.stkgui +#. I18N: Tab in login menu +msgid "Register" +msgstr "" + +#. I18N: ./data/gui/online/guest_login.stkgui +#. I18N: In the login dialog +msgid "Guest Log in" +msgstr "" + +#. I18N: ./data/gui/online/guest_login.stkgui +#. I18N: In the login dialog +msgid "" +"Logging in as a guest allows you to participate in online races, but it does" +" not allow you to vote for addons, or collect any achievements while being " +"online." +msgstr "" + +#. I18N: ./data/gui/online/guest_login.stkgui +#. I18N: In the login dialog +msgid "Log In" +msgstr "" + +#. I18N: ./data/gui/online/lobby_settings.stkgui +#. I18N: In the lobby settings screen +msgid "Lobby Settings" +msgstr "" + +#. I18N: ./data/gui/online/networking_lobby.stkgui +#. I18N: In networking lobby +msgid "Lobby" +msgstr "" + +#. I18N: ./data/gui/online/networking_lobby.stkgui +#. I18N: In the networking lobby +#. I18N: ./data/gui/online/server_info_dialog.stkgui +#. I18N: In the networking lobby +msgid "Server name:" +msgstr "" + +#. I18N: ./data/gui/online/networking_lobby.stkgui +#. I18N: In the networking lobby +#. I18N: ./data/gui/online/server_info_dialog.stkgui +#. I18N: In the networking lobby +msgid "Difficulty:" +msgstr "" + +#. I18N: ./data/gui/online/networking_lobby.stkgui +#. I18N: In the networking lobby +#. I18N: ./data/gui/online/server_info_dialog.stkgui +#. I18N: In the networking lobby +msgid "Game mode:" +msgstr "" + +#. I18N: ./data/gui/online/networking_lobby.stkgui +#. I18N: In the networking lobby +msgid "Exit" +msgstr "" + +#. I18N: ./data/gui/online/notification_dialog.stkgui +#. I18N: User info dialog +#. I18N: ./data/gui/online/user_info_dialog.stkgui +#. I18N: User info dialog +msgid "View" +msgstr "" + +#. I18N: ./data/gui/online/profile_achievements.stkgui +#. I18N: ./data/gui/online/profile_achievements_tab.stkgui +#. I18N: ./data/gui/online/profile_friends.stkgui +#. I18N: ./data/gui/online/profile_overview.stkgui +#. I18N: ./data/gui/online/profile_servers.stkgui +#. I18N: ./data/gui/online/profile_settings.stkgui +msgid "..." +msgstr "" + +#. I18N: ./data/gui/online/profile_friends.stkgui +#. I18N: Section in the profile screen +#: src/states_screens/online_profile_base.cpp:111 +msgid "Friends" +msgstr "" + +#. I18N: ./data/gui/online/profile_friends.stkgui +#. I18N: In the profile screen +msgid "Look for more friends:" +msgstr "" + +#. I18N: ./data/gui/online/profile_friends.stkgui +#. I18N: ./data/gui/online/user_search.stkgui +msgid "Search" +msgstr "" + +#. I18N: ./data/gui/online/profile_overview.stkgui +#. I18N: Section in the profile screen +msgid "Overview" +msgstr "" + +#. I18N: ./data/gui/online/profile_servers.stkgui +#. I18N: Section in the profile screen +#: src/states_screens/online_profile_base.cpp:110 +msgid "Servers" +msgstr "" + +#. I18N: ./data/gui/online/profile_servers.stkgui +msgid "Local Networking" +msgstr "" + +#. I18N: ./data/gui/online/profile_servers.stkgui +#. I18N: In the online multiplayer screen +msgid "Find Server" +msgstr "" + +#. I18N: ./data/gui/online/profile_servers.stkgui +#. I18N: In the online multiplayer screen +#: src/states_screens/create_server_screen.cpp:83 +msgid "Create Server" +msgstr "" + +#. I18N: ./data/gui/online/profile_servers.stkgui +msgid "Global Networking" +msgstr "" + +#. I18N: ./data/gui/online/profile_servers.stkgui +#. I18N: In the online multiplayer screen +msgid "Quick Play" +msgstr "" + +#. I18N: ./data/gui/online/profile_settings.stkgui +#. I18N: Section in the profile screen +#: src/states_screens/online_profile_base.cpp:113 +msgid "Account Settings" +msgstr "" + +#. I18N: ./data/gui/online/profile_settings.stkgui +#. I18N: In the online account settings screen +msgid "Password:" +msgstr "" + +#. I18N: ./data/gui/online/profile_settings.stkgui +msgid "Change" +msgstr "" + +#. I18N: ./data/gui/online/recovery_info.stkgui +#. I18N: In the recovery dialog +#. I18N: ./data/gui/online/recovery_input.stkgui +#. I18N: In the recovery dialog +msgid "Account Recovery" +msgstr "" + +#. I18N: ./data/gui/online/recovery_info.stkgui +#. I18N: In the recovery dialog +msgid "" +"You will receive an email with further instructions on how to reset your " +"password. Please be patient and be sure to check your spam folder." +msgstr "" + +#. I18N: ./data/gui/online/recovery_input.stkgui +msgid "" +"Fill in the username and email address you supplied at registration to be " +"able to reset your password." +msgstr "" + +#. I18N: ./data/gui/online/recovery_input.stkgui +#. I18N: In the recovery dialog +#. I18N: ./data/gui/user_screen.stkgui +#. I18N: In the user screen +#. I18N: ./data/gui/user_screen_tab.stkgui +#. I18N: In the user screen +#: src/states_screens/online_profile_friends.cpp:72 +#: src/states_screens/online_user_search.cpp:73 +msgid "Username" +msgstr "" + +#. I18N: ./data/gui/online/recovery_input.stkgui +#. I18N: In the recovery dialog +#. I18N: ./data/gui/online/register.stkgui +#. I18N: In the registration dialog +msgid "Email" +msgstr "" + +#. I18N: ./data/gui/online/register.stkgui +#. I18N: In the registration dialog +msgid "Create User" +msgstr "" + +#. I18N: ./data/gui/online/register.stkgui +#. I18N: Section in the register screen +msgid "New Online Account" +msgstr "" + +#. I18N: ./data/gui/online/register.stkgui +#. I18N: Section in the register screen +msgid "Existing Online Account" +msgstr "" + +#. I18N: ./data/gui/online/register.stkgui +#. I18N: Section in the register screen +msgid "Offline Account" +msgstr "" + +#. I18N: ./data/gui/online/register.stkgui +#. I18N: In the registration dialog +msgid "Local Name" +msgstr "" + +#. I18N: ./data/gui/online/register.stkgui +#. I18N: In the registration dialog +msgid "Online Username" +msgstr "" + +#. I18N: ./data/gui/online/register.stkgui +#. I18N: In the registration dialog +#. I18N: ./data/gui/user_screen.stkgui +#. I18N: In the user screen +#. I18N: ./data/gui/user_screen_tab.stkgui +#. I18N: In the registration dialog +msgid "Password" +msgstr "" + +#. I18N: ./data/gui/online/register.stkgui +#. I18N: In the registration dialog +msgid "" +"You can play without creating an online account by selecting an offline " +"account. Though then you can not connect to friends, vote for addons etc. " +"Please read our privacy statement at http://privacy.supertuxkart.net" +msgstr "" + +#. I18N: ./data/gui/online/registration_terms.stkgui +#. I18N: In the registration dialog +msgid "Terms and Agreement" +msgstr "" + +#. I18N: ./data/gui/online/registration_terms.stkgui +#. I18N: In the registration dialog +msgid "I agree to the above terms and am 13 years or older. " +msgstr "" + +#. I18N: ./data/gui/online/registration_terms.stkgui +#. I18N: In the registration dialog +#. I18N: ./data/gui/online/user_info_dialog.stkgui +#. I18N: User info dialog +msgid "Accept" +msgstr "" + +#. I18N: ./data/gui/online/server_info_dialog.stkgui +#. I18N: In the server info dialog +msgid "Server Info" +msgstr "" + +#. I18N: ./data/gui/online/server_info_dialog.stkgui +#. I18N: In the server info dialog +msgid "Join" +msgstr "" + +#. I18N: ./data/gui/online/server_selection.stkgui +msgid "Server Selection" +msgstr "" + +#. I18N: ./data/gui/online/user_info_dialog.stkgui +#. I18N: User info dialog' dialog +msgid "User Info" +msgstr "" + +#. I18N: ./data/gui/online/user_info_dialog.stkgui +#. I18N: User info dialog +#: src/states_screens/online_profile_achievements.cpp:73 +#: src/states_screens/server_selection.cpp:102 +msgid "Name" +msgstr "" + +#. I18N: ./data/gui/online/user_info_dialog.stkgui +#. I18N: User info dialog +msgid "Add Friend" +msgstr "" + +#. I18N: ./data/gui/online/user_info_dialog.stkgui +#. I18N: User info dialog +msgid "Decline" +msgstr "" + +#. I18N: ./data/gui/online/user_search.stkgui +msgid "User search" +msgstr "" + +#. I18N: ./data/gui/online/vote_dialog.stkgui +#. I18N: In the vote dialog +msgid "Vote" +msgstr "" + +#. I18N: ./data/gui/online/waiting_for_others.stkgui +#. I18N: Networking screen +msgid "Waiting for the others..." +msgstr "" + +#. I18N: ./data/gui/options_audio.stkgui +#. I18N: ./data/gui/options_device.stkgui +#. I18N: ./data/gui/options_input.stkgui +#. I18N: ./data/gui/options_players.stkgui +#. I18N: ./data/gui/options_ui.stkgui +#. I18N: ./data/gui/options_video.stkgui +#. I18N: ./data/gui/user_screen_tab.stkgui +msgid "SuperTuxKart Options" +msgstr "" + +#. I18N: ./data/gui/options_audio.stkgui +#. I18N: Section in the settings menu +#: src/states_screens/options_screen_device.cpp:86 +#: src/states_screens/options_screen_input.cpp:151 +#: src/states_screens/options_screen_ui.cpp:123 +#: src/states_screens/options_screen_video.cpp:238 +#: src/states_screens/user_screen.cpp:660 +msgid "Audio" +msgstr "" + +#. I18N: ./data/gui/options_audio.stkgui +#. I18N: In the audio options screen +msgid "Music" +msgstr "" + +#. I18N: ./data/gui/options_audio.stkgui +#. I18N: In the audio options screen +#. I18N: in the graphical options tooltip; +#. indicates a graphical feature is enabled +#: src/states_screens/dialogs/custom_video_settings.cpp:68 +#: src/states_screens/options_screen_video.cpp:451 +msgid "Enabled" +msgstr "" + +#. I18N: ./data/gui/options_audio.stkgui +#. I18N: In the audio options screen +msgid "Volume" +msgstr "" + +#. I18N: ./data/gui/options_audio.stkgui +#. I18N: In the audio options screen +msgid "Sound Effects" +msgstr "" + +#. I18N: ./data/gui/options_device.stkgui +#. I18N: Section in the settings menu +#. I18N: ./data/gui/options_input.stkgui +#. I18N: Section in the settings menu +#: src/states_screens/options_screen_audio.cpp:68 +#: src/states_screens/options_screen_ui.cpp:125 +#: src/states_screens/options_screen_video.cpp:241 +#: src/states_screens/user_screen.cpp:662 +msgid "Controls" +msgstr "" + +#. I18N: ./data/gui/options_device.stkgui +#. I18N: In the input configuration screen +#: src/states_screens/options_screen_device.cpp:111 +msgid "Delete Configuration" +msgstr "" + +#. I18N: ./data/gui/options_device.stkgui +#. I18N: In the input configuration screen +msgid "Back to device list" +msgstr "" + +#. I18N: ./data/gui/options_input.stkgui +#. I18N: In the input configuration screen +msgid "Press enter or double-click on a device to configure it" +msgstr "" + +#. I18N: ./data/gui/options_input.stkgui +#. I18N: In the input configuration screen +msgid "Add a device" +msgstr "" + +#. I18N: ./data/gui/options_input.stkgui +#. I18N: In the input configuration screen +msgid "" +"* Which config to use will be inferred from which 'Select' key is pressed to" +" join the game." +msgstr "" + +#. I18N: ./data/gui/options_players.stkgui +#. I18N: Section in the settings menu +#. I18N: ./data/gui/user_screen_tab.stkgui +#. I18N: Section in the settings menu +#: src/states_screens/ghost_replay_selection.cpp:78 +#: src/states_screens/options_screen_audio.cpp:67 +#: src/states_screens/options_screen_device.cpp:88 +#: src/states_screens/options_screen_input.cpp:153 +#: src/states_screens/options_screen_ui.cpp:124 +#: src/states_screens/options_screen_video.cpp:240 +#: src/states_screens/server_selection.cpp:103 +msgid "Players" +msgstr "" + +#. I18N: ./data/gui/options_players.stkgui +msgid "You are playing as" +msgstr "" + +#. I18N: ./data/gui/options_players.stkgui +#. I18N: In the player configuration screen +msgid "Press enter or double-click on a player to edit their settings" +msgstr "" + +#. I18N: ./data/gui/options_players.stkgui +#. I18N: In the player configuration screen +msgid "Add Player" +msgstr "" + +#. I18N: ./data/gui/options_ui.stkgui +#. I18N: Section in the settings menu +#: src/states_screens/options_screen_audio.cpp:66 +#: src/states_screens/options_screen_device.cpp:87 +#: src/states_screens/options_screen_input.cpp:152 +#: src/states_screens/options_screen_video.cpp:239 +#: src/states_screens/user_screen.cpp:661 +msgid "User Interface" +msgstr "" + +#. I18N: ./data/gui/options_ui.stkgui +#. I18N: In the ui settings +msgid "Skin" +msgstr "" + +#. I18N: ./data/gui/options_ui.stkgui +#. I18N: In the ui settings +msgid "Display FPS" +msgstr "" + +#. I18N: ./data/gui/options_ui.stkgui +#. I18N: In the ui settings +msgid "Always show login screen" +msgstr "" + +#. I18N: ./data/gui/options_ui.stkgui +#. I18N: In the ui settings +msgid "Send anonymous HW statistics" +msgstr "" + +#. I18N: ./data/gui/options_ui.stkgui +#. I18N: In the ui settings +msgid "Enable per-player handicaps" +msgstr "" + +#. I18N: ./data/gui/options_ui.stkgui +#. I18N: In the ui settings +msgid "Connect to the Internet" +msgstr "" + +#. I18N: ./data/gui/options_video.stkgui +#. I18N: Section in the settings menu +#: src/states_screens/options_screen_audio.cpp:65 +#: src/states_screens/options_screen_device.cpp:85 +#: src/states_screens/options_screen_input.cpp:150 +#: src/states_screens/options_screen_ui.cpp:122 +#: src/states_screens/user_screen.cpp:659 +msgid "Graphics" +msgstr "" + +#. I18N: ./data/gui/options_video.stkgui +#. I18N: In the video settings +msgid "Graphical Effects Level" +msgstr "" + +#. I18N: ./data/gui/options_video.stkgui +#. I18N: In the video settings +msgid "Custom settings..." +msgstr "" + +#. I18N: ./data/gui/options_video.stkgui +#. I18N: In the video settings +msgid "Vertical Sync (requires restart)" +msgstr "" + +#. I18N: ./data/gui/options_video.stkgui +#. I18N: In the video settings +msgid "Resolution" +msgstr "" + +#. I18N: ./data/gui/options_video.stkgui +#. I18N: In the video settings +msgid "Fullscreen" +msgstr "" + +#. I18N: ./data/gui/options_video.stkgui +#. I18N: In the video settings +msgid "Remember window location" +msgstr "" + +#. I18N: ./data/gui/options_video.stkgui +#. I18N: In the video settings +msgid "Apply new resolution" +msgstr "" + +#. I18N: ./data/gui/overworld_dialog.stkgui +#. I18N: ./data/gui/race_paused_dialog.stkgui +msgid "Paused" +msgstr "" + +#. I18N: ./data/gui/overworld_dialog.stkgui +#. I18N: In the in-game dialog +msgid "Back to Game" +msgstr "" + +#. I18N: ./data/gui/overworld_dialog.stkgui +#. I18N: In the in-game dialog +msgid "Select kart" +msgstr "" + +#. I18N: ./data/gui/overworld_dialog.stkgui +#. I18N: In the in-game dialog +msgid "Back to menu" +msgstr "" + +#. I18N: ./data/gui/press_a_key_dialog.stkgui +msgid "Press a key" +msgstr "" + +#. I18N: ./data/gui/press_a_key_dialog.stkgui +#. I18N: When configuring input +msgid "Assign to ESC key" +msgstr "" + +#. I18N: ./data/gui/press_a_key_dialog.stkgui +#. I18N: When configuring input +msgid "Assign nothing" +msgstr "" + +#. I18N: ./data/gui/press_a_key_dialog.stkgui +#. I18N: When configuring input +msgid "Press ESC to cancel" +msgstr "" + +#. I18N: ./data/gui/race_paused_dialog.stkgui +#. I18N: Race paused button +msgid "Back to Race" +msgstr "" + +#. I18N: ./data/gui/race_paused_dialog.stkgui +#. I18N: Race paused button +#: src/states_screens/race_result_gui.cpp:228 +msgid "Setup New Race" +msgstr "" + +#. I18N: ./data/gui/race_paused_dialog.stkgui +#. I18N: Race paused button +msgid "Restart Race" +msgstr "" + +#. I18N: ./data/gui/race_paused_dialog.stkgui +#. I18N: Race paused button +msgid "Give Up Race" +msgstr "" + +#. I18N: ./data/gui/race_paused_dialog.stkgui +#. I18N: Race paused button +msgid "Exit Race" +msgstr "" + +#. I18N: ./data/gui/race_setup.stkgui +#. I18N: ./data/gui/select_challenge.stkgui +#. I18N: ./data/gui/soccer_setup.stkgui +msgid "Race Setup" +msgstr "" + +#. I18N: ./data/gui/race_setup.stkgui +msgid "Select a difficulty" +msgstr "" + +#. I18N: ./data/gui/race_setup.stkgui +msgid "Select a game mode" +msgstr "" + +#. I18N: ./data/gui/select_challenge.stkgui +#. I18N: Type of race, in a challenge +msgid "Type:" +msgstr "" + +#. I18N: ./data/gui/soccer_setup.stkgui +#. I18N: In soccer setup screen +msgid "Number of goals to win" +msgstr "" + +#. I18N: ./data/gui/soccer_setup.stkgui +#. I18N: In soccer setup screen +msgid "Maximum time (min.)" +msgstr "" + +#. I18N: ./data/gui/soccer_setup.stkgui +#. I18N: In soccer setup screen +msgid "Game type (Goals limit / Time limit)" +msgstr "" + +#. I18N: ./data/gui/soccer_setup.stkgui +#. I18N: In soccer setup screen +msgid "Use left/right to choose your team and press fire" +msgstr "" + +#. I18N: ./data/gui/soccer_setup.stkgui +#. I18N: In soccer setup screen +msgid "Red Team" +msgstr "" + +#. I18N: ./data/gui/soccer_setup.stkgui +#. I18N: In soccer setup screen +msgid "Blue Team" +msgstr "" + +#. I18N: ./data/gui/tracks_and_gp.stkgui +#. I18N: In the track and grand prix selection screen +#: src/states_screens/dialogs/select_challenge.cpp:147 +msgid "Grand Prix" +msgstr "" + +#. I18N: ./data/gui/track_info.stkgui +msgid "= Highscores =" +msgstr "" + +#. I18N: ./data/gui/track_info.stkgui +#. I18N: for empty highscores entries +#: src/states_screens/track_info_screen.cpp:322 +msgid "(Empty)" +msgstr "" + +#. I18N: ./data/gui/track_info.stkgui +#. I18N: In the track info screen +msgid "Number of laps" +msgstr "" + +#. I18N: ./data/gui/track_info.stkgui +#. I18N: In the track info screen +msgid "Number of AI karts" +msgstr "" + +#. I18N: ./data/gui/user_screen.stkgui +#. I18N: In the user screen +#. I18N: ./data/gui/user_screen_tab.stkgui +#. I18N: In the user screen +msgid "Remember password" +msgstr "" + +#. I18N: ./data/gui/user_screen.stkgui +#. I18N: In the user screen +#. I18N: ./data/gui/user_screen_tab.stkgui +#. I18N: In the user screen +msgid "Add user" +msgstr "" + +#. I18N: ./data/gui/user_screen.stkgui +#. I18N: In the user screen +#. I18N: ./data/gui/user_screen_tab.stkgui +#. I18N: In the user screen +msgid "Delete" +msgstr "" + +#. I18N: ../stk-assets/tracks/abyss/track.xml +msgid "Antediluvian Abyss" +msgstr "" + +#. I18N: ../stk-assets/tracks/battleisland/track.xml +msgid "Battle Island" +msgstr "" + +#. I18N: ../stk-assets/tracks/candela_city/track.xml +msgid "Candela City" +msgstr "" + +#. I18N: ../stk-assets/tracks/cave/track.xml +msgid "Cave X" +msgstr "" + +#. I18N: ../stk-assets/tracks/cocoa_temple/track.xml +msgid "Cocoa Temple" +msgstr "" + +#. I18N: ../stk-assets/tracks/cornfield_crossing/track.xml +msgid "Cornfield Crossing" +msgstr "" + +#. I18N: ../stk-assets/tracks/fortmagma/track.xml +msgid "Fort Magma" +msgstr "" + +#. I18N: ../stk-assets/tracks/gran_paradiso_island/track.xml +msgid "Gran Paradiso Island" +msgstr "" + +#. I18N: ../stk-assets/tracks/greenvalley/track.xml +msgid "Green Valley" +msgstr "" + +#. I18N: ../stk-assets/tracks/hacienda/track.xml +msgid "Hacienda" +msgstr "" + +#. I18N: ../stk-assets/tracks/icy_soccer_field/track.xml +msgid "Icy Soccer Field" +msgstr "" + +#. I18N: Cutscene subtitle from ../stk-assets/tracks/introcutscene2/scene.xml +#. I18N: ../stk-assets/tracks/introcutscene2/scene.xml +msgid "What's wrong, little hippies? Your great gnu leader is missing?" +msgstr "" + +#. I18N: Cutscene subtitle from ../stk-assets/tracks/introcutscene2/scene.xml +#. I18N: ../stk-assets/tracks/introcutscene2/scene.xml +msgid "Oh yes, see, he's in my castle now and will be served for supper..." +msgstr "" + +#. I18N: Cutscene subtitle from ../stk-assets/tracks/introcutscene2/scene.xml +#. I18N: ../stk-assets/tracks/introcutscene2/scene.xml +msgid "But I'm a fair creature, so I'll make you a deal." +msgstr "" + +#. I18N: Cutscene subtitle from ../stk-assets/tracks/introcutscene2/scene.xml +#. I18N: ../stk-assets/tracks/introcutscene2/scene.xml +msgid "If you can beat me at racing, I will free the old codger." +msgstr "" + +#. I18N: Cutscene subtitle from ../stk-assets/tracks/introcutscene2/scene.xml +#. I18N: ../stk-assets/tracks/introcutscene2/scene.xml +msgid "" +" But you pathetic little twerps will never be able to beat me - King of the " +"Karts!" +msgstr "" + +#. I18N: ../stk-assets/tracks/lasdunasarena/track.xml +msgid "Las Dunas Arena" +msgstr "" + +#. I18N: ../stk-assets/tracks/lighthouse/track.xml +msgid "Around the lighthouse" +msgstr "" + +#. I18N: ../stk-assets/tracks/mansion/track.xml +msgid "Blackhill Mansion" +msgstr "" + +#. I18N: ../stk-assets/tracks/mines/track.xml +msgid "Old Mine" +msgstr "" + +#. I18N: ../stk-assets/tracks/minigolf/track.xml +msgid "Minigolf" +msgstr "" + +#. I18N: ../stk-assets/tracks/olivermath/track.xml +msgid "Oliver's Math Class" +msgstr "" + +#. I18N: ../stk-assets/tracks/sandtrack/track.xml +msgid "Shifting Sands" +msgstr "" + +#. I18N: ../stk-assets/tracks/scotland/track.xml +msgid "Nessie's pond" +msgstr "" + +#. I18N: ../stk-assets/tracks/snowmountain/track.xml +msgid "Northern Resort" +msgstr "" + +#. I18N: ../stk-assets/tracks/snowtuxpeak/track.xml +msgid "Snow Peak" +msgstr "" + +#. I18N: ../stk-assets/tracks/soccer_field/track.xml +msgid "Soccer field" +msgstr "" + +#. I18N: ../stk-assets/tracks/stadium/track.xml +msgid "The Stadium" +msgstr "" + +#. I18N: ../stk-assets/tracks/stk_enterprise/track.xml +msgid "STK Enterprise" +msgstr "" + +#. I18N: ../stk-assets/tracks/temple/track.xml +msgid "Temple" +msgstr "" + +#. I18N: ../stk-assets/tracks/volcano_island/track.xml +msgid "Volcan Island" +msgstr "" + +#. I18N: ../stk-assets/tracks/xr591/track.xml +msgid "XR591" +msgstr "" + +#. I18N: ../stk-assets/tracks/zengarden/track.xml +msgid "Zen Garden" +msgstr "" + +#. I18N: ../stk-assets/karts/adiumy/kart.xml +msgid "Adiumy" +msgstr "" + +#. I18N: ../stk-assets/karts/amanda/kart.xml +msgid "Amanda" +msgstr "" + +#. I18N: ../stk-assets/karts/beastie/kart.xml +msgid "Beastie" +msgstr "" + +#. I18N: ../stk-assets/karts/emule/kart.xml +msgid "Emule" +msgstr "" + +#. I18N: ../stk-assets/karts/gavroche/kart.xml +msgid "Gavroche" +msgstr "" + +#. I18N: ../stk-assets/karts/gnu/kart.xml +msgid "Gnu" +msgstr "" + +#. I18N: ../stk-assets/karts/hexley/kart.xml +msgid "Hexley" +msgstr "" + +#. I18N: ../stk-assets/karts/kiki/kart.xml +msgid "Kiki" +msgstr "" + +#. I18N: ../stk-assets/karts/konqi/kart.xml +msgid "Konqi" +msgstr "" + +#. I18N: ../stk-assets/karts/nolok/kart.xml +msgid "Nolok" +msgstr "" + +#. I18N: ../stk-assets/karts/pidgin/kart.xml +msgid "Pidgin" +msgstr "" + +#. I18N: ../stk-assets/karts/puffy/kart.xml +msgid "Puffy" +msgstr "" + +#. I18N: ../stk-assets/karts/sara_the_racer/kart.xml +msgid "Sara the Racer" +msgstr "" + +#. I18N: ../stk-assets/karts/sara_the_wizard/kart.xml +msgid "Sara the Wizard" +msgstr "" + +#. I18N: ../stk-assets/karts/suzanne/kart.xml +msgid "Suzanne" +msgstr "" + +#. I18N: ../stk-assets/karts/tux/kart.xml +msgid "Tux" +msgstr "" + +#. I18N: ../stk-assets/karts/wilber/kart.xml +msgid "Wilber" +msgstr "" + +#. I18N: ../stk-assets/karts/xue/kart.xml +msgid "Xue" +msgstr "" + +#: src/achievements/achievement.cpp:209 +#, c-format +msgid "Completed achievement \"%s\"." +msgstr "" + +#: src/addons/addons_manager.cpp:104 src/addons/news_manager.cpp:322 +msgid "Failed to connect to the SuperTuxKart add-ons server." +msgstr "" + +#: src/addons/news_manager.cpp:179 +#, c-format +msgid "Error downloading news: '%s'." +msgstr "" + +#. I18N: number of laps to race in a challenge +#: src/challenges/challenge_data.cpp:266 +#: src/states_screens/race_result_gui.cpp:1424 +#, c-format +msgid "Laps: %i" +msgstr "" + +#: src/challenges/challenge_data.cpp:272 +msgid "Follow the leader" +msgstr "" + +#: src/challenges/challenge_data.cpp:518 +#, c-format +msgid "New track '%s' now available" +msgstr "" + +#: src/challenges/challenge_data.cpp:522 +#, c-format +msgid "New game mode '%s' now available" +msgstr "" + +#: src/challenges/challenge_data.cpp:532 +#, c-format +msgid "New Grand Prix '%s' now available" +msgstr "" + +#: src/challenges/challenge_data.cpp:536 +#, c-format +msgid "New difficulty '%s' now available" +msgstr "" + +#: src/challenges/challenge_data.cpp:546 +#, c-format +msgid "New kart '%s' now available" +msgstr "" + +#: src/config/player_manager.cpp:91 +msgid "Currently not signed in" +msgstr "" + +#. I18N: Name of first guest player (without number) +#: src/config/player_manager.cpp:392 +msgid "Guest" +msgstr "" + +#. I18N: Name of further guest players, with a 1, 2, ... attached +#: src/config/player_manager.cpp:397 +#, c-format +msgid "Guest %d" +msgstr "" + +#: src/config/user_config.cpp:700 +msgid "" +"Your config file was malformed, so it was deleted and a new one will be " +"created." +msgstr "" + +#: src/config/user_config.cpp:711 +msgid "" +"Your config file was too old, so it was deleted and a new one will be " +"created." +msgstr "" + +#: src/graphics/irr_driver.cpp:535 +msgid "Video recording started." +msgstr "" + +#: src/graphics/irr_driver.cpp:541 +#, c-format +msgid "Video saved in \"%s\"." +msgstr "" + +#: src/graphics/irr_driver.cpp:545 +msgid "Encoding progress:" +msgstr "" + +#: src/graphics/irr_driver.cpp:1682 +#, c-format +msgid "FPS: %d/%d/%d - %d KTris" +msgstr "" + +#: src/guiengine/engine.cpp:1296 +msgid "Loading" +msgstr "" + +#. I18N: 'handicapped' indicates that per-player handicaps are +#. activated for this kart (i.e. it will drive slower) +#: src/guiengine/widgets/player_kart_widget.cpp:392 +#, c-format +msgid "%s (handicapped)" +msgstr "" + +#: src/guiengine/widgets/player_kart_widget.cpp:451 +#, c-format +msgid "%s is ready" +msgstr "" + +#. I18N: Unbound key binding +#: src/input/binding.cpp:90 +msgid "[none]" +msgstr "" + +#. I18N: input configuration screen: mouse button +#: src/input/binding.cpp:114 +msgctxt "input_key" +msgid "Left Mouse Button" +msgstr "" + +#. I18N: input configuration screen: mouse button +#: src/input/binding.cpp:116 +msgctxt "input_key" +msgid "Right Mouse Button" +msgstr "" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:118 +msgctxt "input_key" +msgid "Cancel" +msgstr "" + +#. I18N: input configuration screen: mouse button +#: src/input/binding.cpp:120 +msgctxt "input_key" +msgid "Middle Mouse Button" +msgstr "" + +#. I18N: input configuration screen: mouse button +#: src/input/binding.cpp:122 +msgctxt "input_key" +msgid "X1 Mouse Button" +msgstr "" + +#. I18N: input configuration screen: mouse button +#: src/input/binding.cpp:124 +msgctxt "input_key" +msgid "X2 Mouse Button" +msgstr "" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:126 +msgctxt "input_key" +msgid "Backspace" +msgstr "" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:128 +msgctxt "input_key" +msgid "Tab" +msgstr "" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:130 +msgctxt "input_key" +msgid "Clear" +msgstr "" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:132 +msgctxt "input_key" +msgid "Return" +msgstr "" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:134 +msgctxt "input_key" +msgid "Shift" +msgstr "" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:136 +msgctxt "input_key" +msgid "Control" +msgstr "" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:138 +msgctxt "input_key" +msgid "Alt/Menu" +msgstr "" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:140 +msgctxt "input_key" +msgid "Pause" +msgstr "" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:142 +msgctxt "input_key" +msgid "Caps Lock" +msgstr "" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:144 +msgctxt "input_key" +msgid "Kana" +msgstr "" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:146 +msgctxt "input_key" +msgid "Junja" +msgstr "" + +#. I18N: input configuration screen: keyboard key +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:149 +msgctxt "input_key" +msgid "Final" +msgstr "" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:151 +msgctxt "input_key" +msgid "Escape" +msgstr "" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:153 +msgctxt "input_key" +msgid "Convert" +msgstr "" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:155 +msgctxt "input_key" +msgid "Nonconvert" +msgstr "" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:157 +msgctxt "input_key" +msgid "Accept" +msgstr "" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:159 +msgctxt "input_key" +msgid "Modechange" +msgstr "" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:161 +msgctxt "input_key" +msgid "Space" +msgstr "" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:163 +msgctxt "input_key" +msgid "Page Up" +msgstr "" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:165 +msgctxt "input_key" +msgid "Page Down" +msgstr "" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:167 +msgctxt "input_key" +msgid "End" +msgstr "" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:169 +msgctxt "input_key" +msgid "Home" +msgstr "" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:171 +msgctxt "input_key" +msgid "Left" +msgstr "" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:173 +msgctxt "input_key" +msgid "Up" +msgstr "" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:175 +msgctxt "input_key" +msgid "Right" +msgstr "" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:177 +msgctxt "input_key" +msgid "Down" +msgstr "" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:179 +msgctxt "input_key" +msgid "Select" +msgstr "" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:181 +msgctxt "input_key" +msgid "Print" +msgstr "" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:183 +msgctxt "input_key" +msgid "Exec" +msgstr "" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:185 +msgctxt "input_key" +msgid "Print Screen" +msgstr "" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:187 +msgctxt "input_key" +msgid "Insert" +msgstr "" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:189 +msgctxt "input_key" +msgid "Delete" +msgstr "" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:191 +msgctxt "input_key" +msgid "Help" +msgstr "" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:229 +msgctxt "input_key" +msgid "Left Logo" +msgstr "" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:231 +msgctxt "input_key" +msgid "Right Logo" +msgstr "" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:233 +msgctxt "input_key" +msgid "Apps" +msgstr "" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:235 +msgctxt "input_key" +msgid "Sleep" +msgstr "" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:237 +msgctxt "input_key" +msgid "Numpad 0" +msgstr "" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:239 +msgctxt "input_key" +msgid "Numpad 1" +msgstr "" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:241 +msgctxt "input_key" +msgid "Numpad 2" +msgstr "" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:243 +msgctxt "input_key" +msgid "Numpad 3" +msgstr "" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:245 +msgctxt "input_key" +msgid "Numpad 4" +msgstr "" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:247 +msgctxt "input_key" +msgid "Numpad 5" +msgstr "" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:249 +msgctxt "input_key" +msgid "Numpad 6" +msgstr "" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:251 +msgctxt "input_key" +msgid "Numpad 7" +msgstr "" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:253 +msgctxt "input_key" +msgid "Numpad 8" +msgstr "" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:255 +msgctxt "input_key" +msgid "Numpad 9" +msgstr "" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:259 +msgctxt "input_key" +msgid "Separator" +msgstr "" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:261 +msgctxt "input_key" +msgid "- (Subtract)" +msgstr "" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:263 +msgctxt "input_key" +msgid "Decimal" +msgstr "" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:265 +msgctxt "input_key" +msgid "/ (Divide)" +msgstr "" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:291 +msgctxt "input_key" +msgid "Num Lock" +msgstr "" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:293 +msgctxt "input_key" +msgid "Scroll Lock" +msgstr "" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:295 +msgctxt "input_key" +msgid "Left Shift" +msgstr "" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:297 +msgctxt "input_key" +msgid "Right Shift" +msgstr "" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:299 +msgctxt "input_key" +msgid "Left Control" +msgstr "" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:301 +msgctxt "input_key" +msgid "Right Control" +msgstr "" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:303 +msgctxt "input_key" +msgid "Left Menu" +msgstr "" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:305 +msgctxt "input_key" +msgid "Right Menu" +msgstr "" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:311 +msgctxt "input_key" +msgid "Attn" +msgstr "" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:313 +msgctxt "input_key" +msgid "Crsel" +msgstr "" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:315 +msgctxt "input_key" +msgid "Exsel" +msgstr "" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:317 +msgctxt "input_key" +msgid "Ereof" +msgstr "" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:319 +msgctxt "input_key" +msgid "Play" +msgstr "" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:321 +msgctxt "input_key" +msgid "Zoom" +msgstr "" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:323 +msgctxt "input_key" +msgid "Pa1" +msgstr "" + +#. I18N: input configuration screen: keyboard key +#: src/input/binding.cpp:325 +msgctxt "input_key" +msgid "Oem Clear" +msgstr "" + +#. I18N: to appear in input configuration screen, for gamepad hats +#: src/input/binding.cpp:334 src/input/binding.cpp:339 +#, c-format +msgid "Gamepad hat %d" +msgstr "" + +#. I18N: to appear in input configuration screen, for gamepad axes +#: src/input/binding.cpp:346 +#, c-format +msgid "Axis %d %s" +msgstr "" + +#. I18N: to appear in input configuration screen, for gamepad axes +#: src/input/binding.cpp:353 +#, c-format +msgid "Axis %d inverted" +msgstr "" + +#. I18N: to appear in input configuration screen, for gamepad axes +#: src/input/binding.cpp:358 +#, c-format +msgid "Axis %d" +msgstr "" + +#. I18N: to appear in input configuration screen, for gamepad buttons +#: src/input/binding.cpp:366 +#, c-format +msgid "Gamepad button %d" +msgstr "" + +#. I18N: to appear in input configuration screen, for mouse (might not be used +#. at all) +#: src/input/binding.cpp:369 +#, c-format +msgid "Mouse button %d" +msgstr "" + +#. I18N: to appear in input configuration screen, for mouse (might not be used +#. at all) +#: src/input/binding.cpp:373 +#, c-format +msgid "Mouse axis %d %s" +msgstr "" + +#. I18N: shown when config file is too old +#: src/input/device_manager.cpp:543 +msgid "Please re-configure your key bindings." +msgstr "" + +#: src/input/device_manager.cpp:544 +msgid "Your input config file is not compatible with this version of STK." +msgstr "" + +#. I18N: Name of the black button on xbox controller +#: src/input/gamepad_config.cpp:167 +msgid "Black" +msgstr "" + +#. I18N: Name of the white button on xbox controller +#: src/input/gamepad_config.cpp:171 +msgid "White" +msgstr "" + +#. I18N: name of buttons on gamepads +#. I18N: name of stick on gamepads +#: src/input/gamepad_config.cpp:179 src/input/gamepad_config.cpp:239 +msgid "Left trigger" +msgstr "" + +#. I18N: name of buttons on gamepads +#. I18N: name of stick on gamepads +#: src/input/gamepad_config.cpp:181 src/input/gamepad_config.cpp:244 +msgid "Right thumb right" +msgstr "" + +#. I18N: name of buttons on gamepads +#. I18N: name of stick on gamepads +#: src/input/gamepad_config.cpp:183 src/input/gamepad_config.cpp:246 +msgid "Right thumb left" +msgstr "" + +#. I18N: name of buttons on gamepads +#. I18N: name of trigger on gamepads +#: src/input/gamepad_config.cpp:185 src/input/gamepad_config.cpp:240 +msgid "Right thumb down" +msgstr "" + +#. I18N: name of buttons on gamepads +#. I18N: name of stick on gamepads +#: src/input/gamepad_config.cpp:187 src/input/gamepad_config.cpp:242 +msgid "Right thumb up" +msgstr "" + +#. I18N: name of buttons on gamepads +#: src/input/gamepad_config.cpp:189 src/input/gamepad_config.cpp:248 +msgid "Right trigger" +msgstr "" + +#. I18N: name of buttons on gamepads +#: src/input/gamepad_config.cpp:191 src/input/gamepad_config.cpp:253 +msgid "DPad right" +msgstr "" + +#. I18N: name of buttons on gamepads +#: src/input/gamepad_config.cpp:193 src/input/gamepad_config.cpp:255 +msgid "DPad left" +msgstr "" + +#. I18N: name of buttons on gamepads +#: src/input/gamepad_config.cpp:195 src/input/gamepad_config.cpp:251 +msgid "DPad down" +msgstr "" + +#. I18N: name of buttons on gamepads +#. I18N: name of trigger on gamepads +#: src/input/gamepad_config.cpp:197 src/input/gamepad_config.cpp:249 +msgid "DPad up" +msgstr "" + +#. I18N: name of buttons on gamepads +#: src/input/gamepad_config.cpp:212 +msgid "Left bumper" +msgstr "" + +#. I18N: name of buttons on gamepads +#: src/input/gamepad_config.cpp:214 +msgid "Right bumper" +msgstr "" + +#. I18N: name of buttons on gamepads +#: src/input/gamepad_config.cpp:218 +msgid "Start" +msgstr "" + +#. I18N: name of buttons on gamepads +#: src/input/gamepad_config.cpp:220 +msgid "Left thumb button" +msgstr "" + +#. I18N: name of buttons on gamepads +#: src/input/gamepad_config.cpp:222 +msgid "Right thumb button" +msgstr "" + +#. I18N: name of stick on gamepads +#: src/input/gamepad_config.cpp:231 +msgid "Left thumb right" +msgstr "" + +#. I18N: name of stick on gamepads +#: src/input/gamepad_config.cpp:233 +msgid "Left thumb left" +msgstr "" + +#. I18N: name of stick on gamepads +#: src/input/gamepad_config.cpp:235 +msgid "Left thumb down" +msgstr "" + +#. I18N: name of stick on gamepads +#: src/input/gamepad_config.cpp:237 +msgid "Left thumb up" +msgstr "" + +#: src/input/input_manager.cpp:807 +#, c-format +msgid "Ignoring '%s'. You needed to join earlier to play!" +msgstr "" + +#: src/input/input_manager.cpp:837 +msgid "Only the Game Master may act at this point!" +msgstr "" + +#: src/input/wiimote_manager.cpp:388 +msgid "" +"Connect your wiimote to the Bluetooth manager, then click on Ok. Detailed " +"instructions at supertuxkart.net/Wiimote" +msgstr "" + +#: src/input/wiimote_manager.cpp:391 +msgid "" +"Press the buttons 1+2 simultaneously on your wiimote to put it in discovery " +"mode, then click on Ok. Detailed instructions at supertuxkart.net/Wiimote" +msgstr "" + +#: src/input/wiimote_manager.cpp:414 +#, c-format +msgid "Found %d wiimote" +msgid_plural "Found %d wiimotes" +msgstr[0] "" +msgstr[1] "" + +#: src/input/wiimote_manager.cpp:419 +msgid "Could not detect any wiimote :/" +msgstr "" + +#: src/karts/controller/local_player_controller.cpp:241 +msgid "Penalty time!!" +msgstr "" + +#: src/karts/controller/local_player_controller.cpp:243 +msgid "Don't accelerate before go" +msgstr "" + +#: src/karts/controller/spare_tire_ai.cpp:147 +msgid "You can have at most 3 lives!" +msgstr "" + +#: src/karts/controller/spare_tire_ai.cpp:153 +msgid "+1 life." +msgstr "" + +#: src/karts/kart.cpp:908 src/karts/kart.cpp:913 +msgid "You won the race!" +msgstr "" + +#: src/karts/kart.cpp:913 +msgid "You finished the race!" +msgstr "" + +#: src/main.cpp:1501 +msgid "" +"SuperTuxKart may connect to a server to download add-ons and notify you of " +"updates. We also collect anonymous hardware statistics to help with the " +"development of STK. Please read our privacy policy at " +"http://privacy.supertuxkart.net. Would you like this feature to be enabled? " +"(To change this setting at a later time, go to options, select tab 'User " +"Interface', and edit \"Connect to the Internet\" and \"Send anonymous HW " +"statistics\")." +msgstr "" + +#: src/main.cpp:1654 +msgid "Your screen resolution is too low to run STK." +msgstr "" + +#: src/main.cpp:1668 +msgid "" +"Your driver version is too old. Please install the latest video drivers." +msgstr "" + +#: src/main.cpp:1685 +#, c-format +msgid "" +"Your OpenGL version appears to be too old. Please verify if an update for " +"your video driver is available. SuperTuxKart requires %s or better." +msgstr "" + +#: src/modes/easter_egg_hunt.cpp:202 +#, c-format +msgid "Eggs: %d / %d" +msgstr "" + +#: src/modes/follow_the_leader.cpp:62 src/modes/follow_the_leader.cpp:285 +msgid "Leader" +msgstr "" + +#: src/modes/linear_world.cpp:287 +msgid "Final lap!" +msgstr "" + +#: src/modes/linear_world.cpp:314 +#, c-format +msgid "Lap %i" +msgstr "" + +#: src/modes/linear_world.cpp:369 +#, c-format +msgctxt "fastest_lap" +msgid "%s by %s" +msgstr "" + +#: src/modes/linear_world.cpp:374 +msgid "New fastest lap" +msgstr "" + +#: src/modes/linear_world.cpp:891 +msgid "WRONG WAY!" +msgstr "" + +#: src/modes/three_strikes_battle.cpp:664 +#, c-format +msgid "%i spare tire kart has been spawned!" +msgid_plural "%i spare tire karts have been spawned!" +msgstr[0] "" +msgstr[1] "" + +#: src/modes/world.cpp:1202 +msgid "You have been eliminated!" +msgstr "" + +#: src/modes/world.cpp:1205 +#, c-format +msgid "'%s' has been eliminated." +msgstr "" + +#: src/network/protocols/server_lobby.cpp:318 +#, c-format +msgid "Failed to register server: %s" +msgstr "" + +#: src/network/servers_manager.cpp:198 +msgid "No LAN server detected" +msgstr "" + +#: src/online/online_player_profile.cpp:419 +#, c-format +msgid "%s is now online." +msgstr "" + +#: src/online/online_player_profile.cpp:423 +#, c-format +msgid "%s and %s are now online." +msgstr "" + +#: src/online/online_player_profile.cpp:428 +#, c-format +msgid "%s, %s and %s are now online." +msgstr "" + +#. I18N: Only used for count > 3 +#: src/online/online_player_profile.cpp:434 +#, c-format +msgid "%d friend is now online." +msgid_plural "%d friends are now online." +msgstr[0] "" +msgstr[1] "" + +#: src/online/online_player_profile.cpp:471 +#, c-format +msgid "You have %d new friend request!" +msgid_plural "You have %d new friend requests!" +msgstr[0] "" +msgstr[1] "" + +#: src/online/online_player_profile.cpp:477 +msgid "You have a new friend request!" +msgstr "" + +#: src/online/xml_request.cpp:83 +msgid "" +"Unable to connect to the server. Check your internet connection or try again" +" later." +msgstr "" + +#: src/race/grand_prix_data.hpp:171 +msgid "Random Grand Prix" +msgstr "" + +#: src/race/highscore_manager.cpp:101 +msgid "" +"The highscore file was too old,\n" +"all highscores have been erased." +msgstr "" + +#. I18N: Game mode +#: src/race/race_manager.hpp:179 +msgid "Follow the Leader" +msgstr "" + +#. I18N: Game mode +#: src/race/race_manager.hpp:181 +msgid "3 Strikes Battle" +msgstr "" + +#. I18N: Game mode +#: src/race/race_manager.hpp:183 +msgid "Egg Hunt" +msgstr "" + +#. I18N: Game mode +#: src/race/race_manager.hpp:185 +msgid "Soccer" +msgstr "" + +#: src/replay/replay_recorder.cpp:183 +msgid "Incomplete replay file will not be saved." +msgstr "" + +#: src/replay/replay_recorder.cpp:219 +#, c-format +msgid "Replay saved in \"%s\"." +msgstr "" + +#: src/states_screens/addons_screen.cpp:50 +msgid "1 week" +msgstr "" + +#: src/states_screens/addons_screen.cpp:51 +msgid "2 weeks" +msgstr "" + +#: src/states_screens/addons_screen.cpp:52 +msgid "1 month" +msgstr "" + +#: src/states_screens/addons_screen.cpp:53 +msgid "3 months" +msgstr "" + +#: src/states_screens/addons_screen.cpp:54 +msgid "6 months" +msgstr "" + +#: src/states_screens/addons_screen.cpp:55 +msgid "9 months" +msgstr "" + +#: src/states_screens/addons_screen.cpp:56 +msgid "1 year" +msgstr "" + +#: src/states_screens/addons_screen.cpp:57 +msgid "2 years" +msgstr "" + +#: src/states_screens/addons_screen.cpp:115 +msgid "Add-on name" +msgstr "" + +#: src/states_screens/addons_screen.cpp:116 +msgid "Updated date" +msgstr "" + +#: src/states_screens/addons_screen.cpp:147 +msgid "" +"Access to the Internet is disabled. (To enable it, go to options and select " +"tab 'User Interface')" +msgstr "" + +#. I18N: as in: The Old Island by Johannes Sjolund +#: src/states_screens/addons_screen.cpp:343 +#, c-format +msgctxt "addons" +msgid "%s by %s" +msgstr "" + +#: src/states_screens/addons_screen.cpp:474 +msgid "Please wait while addons are updated" +msgstr "" + +#: src/states_screens/addons_screen.cpp:551 +#: src/states_screens/main_menu_screen.cpp:571 +msgid "" +"Sorry, an error occurred while contacting the add-ons website. Make sure you" +" are connected to the Internet and that SuperTuxKart is not blocked by a " +"firewall" +msgstr "" + +#. I18N: arena group name +#. I18N: track group name +#. I18N: kart group name +#. I18N: track group name +#: src/states_screens/arenas_screen.cpp:81 +#: src/states_screens/easter_egg_screen.cpp:143 +#: src/states_screens/kart_selection.cpp:285 +#: src/states_screens/tracks_and_gp_screen.cpp:146 +msgid "standard" +msgstr "" + +#: src/states_screens/arenas_screen.cpp:275 +#: src/states_screens/arenas_screen.cpp:327 +#: src/states_screens/easter_egg_screen.cpp:225 +#: src/states_screens/easter_egg_screen.cpp:256 +#: src/states_screens/kart_selection.cpp:864 +#: src/states_screens/kart_selection.cpp:1481 +#: src/states_screens/race_setup_screen.cpp:99 +msgid "Locked : solve active challenges to gain access to more!" +msgstr "" + +#: src/states_screens/arenas_screen.cpp:339 +msgid "Random Arena" +msgstr "" + +#: src/states_screens/arenas_screen.cpp:343 +#, c-format +msgid "%d arena unavailable in single player." +msgid_plural "%d arenas unavailable in single player." +msgstr[0] "" +msgstr[1] "" + +#: src/states_screens/create_server_screen.cpp:82 +msgid "Create LAN Server" +msgstr "" + +#: src/states_screens/create_server_screen.cpp:87 +#, c-format +msgid "%s's server" +msgstr "" + +#: src/states_screens/create_server_screen.cpp:154 +msgid "Creating server" +msgstr "" + +#: src/states_screens/create_server_screen.cpp:181 +msgid "Name has to be between 4 and 30 characters long!" +msgstr "" + +#: src/states_screens/create_server_screen.cpp:188 +msgid "The maxinum number of players has to be between 2 and 12." +msgstr "" + +#: src/states_screens/credits.cpp:180 +msgid "translator-credits" +msgstr "" + +#: src/states_screens/dialogs/addons_loading.cpp:97 +msgid "Update" +msgstr "" + +#: src/states_screens/dialogs/addons_loading.cpp:109 +#, c-format +msgid "Version: %d" +msgstr "" + +#: src/states_screens/dialogs/addons_loading.cpp:140 +msgid "featured" +msgstr "" + +#: src/states_screens/dialogs/addons_loading.cpp:166 +#, c-format +msgid "%s MB" +msgstr "" + +#: src/states_screens/dialogs/addons_loading.cpp:173 +#: src/states_screens/dialogs/addons_loading.cpp:177 +#, c-format +msgid "%s KB" +msgstr "" + +#: src/states_screens/dialogs/addons_loading.cpp:178 +#, c-format +msgid "Size: %s" +msgstr "" + +#: src/states_screens/dialogs/addons_loading.cpp:280 +msgid "Sorry, downloading the add-on failed" +msgstr "" + +#: src/states_screens/dialogs/addons_loading.cpp:361 +#, c-format +msgid "Problems installing the addon '%s'." +msgstr "" + +#: src/states_screens/dialogs/addons_loading.cpp:372 +#: src/states_screens/dialogs/addons_loading.cpp:409 +msgid "Try again" +msgstr "" + +#: src/states_screens/dialogs/addons_loading.cpp:398 +#, c-format +msgid "Problems removing the addon '%s'." +msgstr "" + +#: src/states_screens/dialogs/add_device_dialog.cpp:64 +msgid "" +"To add a new Gamepad/Joystick device, simply start SuperTuxKart with it connected and it will appear in the list.\n" +"\n" +"To add a keyboard config, you can use the button below, HOWEVER please note that most keyboards only support a limited amount of simultaneous keypresses and are thus inappropriate for multiplayer gameplay. (You can, however, connect multiple keyboards to the computer. Remember that everyone still needs different keybindings in this case.)" +msgstr "" + +#. I18N: In the 'add new input device' dialog +#: src/states_screens/dialogs/add_device_dialog.cpp:90 +msgid "Add Wiimote" +msgstr "" + +#. I18N: In the 'add new input device' dialog +#: src/states_screens/dialogs/add_device_dialog.cpp:111 +msgid "Add Keyboard Configuration" +msgstr "" + +#: src/states_screens/dialogs/change_password_dialog.cpp:134 +msgid "Current password invalid." +msgstr "" + +#: src/states_screens/dialogs/change_password_dialog.cpp:140 +#: src/states_screens/register_screen.cpp:289 +msgid "Password has to be between 8 and 30 characters long!" +msgstr "" + +#: src/states_screens/dialogs/change_password_dialog.cpp:147 +#: src/states_screens/register_screen.cpp:273 +msgid "Passwords don't match!" +msgstr "" + +#: src/states_screens/dialogs/change_password_dialog.cpp:210 +msgid "Password successfully changed." +msgstr "" + +#: src/states_screens/dialogs/change_password_dialog.cpp:235 +#: src/states_screens/dialogs/recovery_dialog.cpp:209 +#: src/states_screens/register_screen.cpp:354 +msgid "Validating info" +msgstr "" + +#. I18N: In the 'confirm resolution' dialog, that's shown when switching +#. resoluton +#: src/states_screens/dialogs/confirm_resolution_dialog.cpp:82 +#, c-format +msgid "Confirm resolution within %i second" +msgid_plural "Confirm resolution within %i seconds" +msgstr[0] "" +msgstr[1] "" + +#. I18N: Geometry level disabled : lowest level, no details +#. I18N: in the graphical options tooltip; +#. indicates a graphical feature is disabled +#: src/states_screens/dialogs/custom_video_settings.cpp:66 +#: src/states_screens/dialogs/custom_video_settings.cpp:72 +#: src/states_screens/dialogs/custom_video_settings.cpp:84 +#: src/states_screens/dialogs/custom_video_settings.cpp:101 +#: src/states_screens/dialogs/multitouch_settings_dialog.cpp:59 +#: src/states_screens/options_screen_video.cpp:454 +msgid "Disabled" +msgstr "" + +#. I18N: if only important animated scenery is enabled +#: src/states_screens/dialogs/custom_video_settings.cpp:67 +#: src/states_screens/options_screen_video.cpp:462 +msgid "Important only" +msgstr "" + +#. I18N: animations setting (only karts with human players are animated) +#: src/states_screens/dialogs/custom_video_settings.cpp:74 +msgid "Human players only" +msgstr "" + +#: src/states_screens/dialogs/custom_video_settings.cpp:77 +msgid "Enabled for all" +msgstr "" + +#. I18N: Geometry level low : few details are displayed +#. I18N: in the graphical options tooltip; +#. indicates the rendered image quality is low +#: src/states_screens/dialogs/custom_video_settings.cpp:86 +#: src/states_screens/dialogs/custom_video_settings.cpp:95 +#: src/states_screens/dialogs/custom_video_settings.cpp:102 +#: src/states_screens/options_screen_video.cpp:469 +msgid "Low" +msgstr "" + +#. I18N: Geometry level high : everything is displayed +#. I18N: in the graphical options tooltip; +#. indicates the rendered image quality is high +#: src/states_screens/dialogs/custom_video_settings.cpp:88 +#: src/states_screens/dialogs/custom_video_settings.cpp:96 +#: src/states_screens/dialogs/custom_video_settings.cpp:103 +#: src/states_screens/options_screen_video.cpp:472 +msgid "High" +msgstr "" + +#. I18N: in the graphical options tooltip; +#. indicates the rendered image quality is very low +#: src/states_screens/dialogs/custom_video_settings.cpp:94 +#: src/states_screens/options_screen_video.cpp:466 +msgid "Very Low" +msgstr "" + +#. I18N: in the graphical options tooltip; +#. indicates the rendered image quality is very high +#: src/states_screens/dialogs/custom_video_settings.cpp:97 +#: src/states_screens/options_screen_video.cpp:475 +msgid "Very High" +msgstr "" + +#: src/states_screens/dialogs/message_dialog.cpp:129 +#: src/states_screens/edit_gp_screen.cpp:257 +#: src/states_screens/ghost_replay_selection.cpp:117 +msgid "No" +msgstr "" + +#: src/states_screens/dialogs/multitouch_settings_dialog.cpp:60 +msgid "Tablet" +msgstr "" + +#: src/states_screens/dialogs/multitouch_settings_dialog.cpp:61 +msgid "Phone" +msgstr "" + +#: src/states_screens/dialogs/recovery_dialog.cpp:121 +msgid "Username and/or email address invalid." +msgstr "" + +#: src/states_screens/dialogs/registration_dialog.cpp:42 +#, c-format +msgid "" +"Please read the terms and conditions for SuperTuxKart at '%s'. You must " +"agree to these terms in order to register an account for STK. By checking " +"the box below, you are confirming that you understand these terms. If you " +"have any questions or comments regarding these terms, one of the members of " +"the development team would gladly assist you." +msgstr "" + +#: src/states_screens/dialogs/select_challenge.cpp:52 +#, c-format +msgid "Required Rank: %i" +msgstr "" + +#: src/states_screens/dialogs/select_challenge.cpp:57 +#, c-format +msgid "Required Time: %i" +msgstr "" + +#: src/states_screens/dialogs/select_challenge.cpp:63 +#, c-format +msgid "Required Nitro Points: %i" +msgstr "" + +#: src/states_screens/dialogs/select_challenge.cpp:69 +#, c-format +msgid "Number of AI Karts: %i" +msgstr "" + +#: src/states_screens/dialogs/select_challenge.cpp:149 +msgid "Nitro challenge" +msgstr "" + +#: src/states_screens/dialogs/select_challenge.cpp:151 +#: src/states_screens/race_setup_screen.cpp:136 +msgid "Ghost replay race" +msgstr "" + +#: src/states_screens/dialogs/server_info_dialog.cpp:75 +msgid "Server successfully created. You can now join it." +msgstr "" + +#: src/states_screens/dialogs/user_info_dialog.cpp:56 +msgid "Cancel Request" +msgstr "" + +#: src/states_screens/dialogs/user_info_dialog.cpp:154 +#: src/states_screens/dialogs/user_info_dialog.cpp:211 +msgid "Today" +msgstr "" + +#: src/states_screens/dialogs/user_info_dialog.cpp:158 +msgid "Friend request sent!" +msgstr "" + +#: src/states_screens/dialogs/user_info_dialog.cpp:215 +msgid "Friend request accepted!" +msgstr "" + +#: src/states_screens/dialogs/user_info_dialog.cpp:267 +msgid "Friend request declined!" +msgstr "" + +#: src/states_screens/dialogs/user_info_dialog.cpp:313 +msgid "Friend removed!" +msgstr "" + +#: src/states_screens/dialogs/user_info_dialog.cpp:364 +msgid "Friend request cancelled!" +msgstr "" + +#: src/states_screens/dialogs/user_info_dialog.cpp:474 +msgid "Processing" +msgstr "" + +#: src/states_screens/dialogs/vote_dialog.cpp:171 +msgid "Fetching last vote" +msgstr "" + +#: src/states_screens/dialogs/vote_dialog.cpp:190 +msgid "You can adapt your previous rating by clicking the stars beneath." +msgstr "" + +#: src/states_screens/dialogs/vote_dialog.cpp:195 +msgid "" +"You have not yet voted for this addon. Select your desired rating by " +"clicking the stars beneath" +msgstr "" + +#: src/states_screens/dialogs/vote_dialog.cpp:230 +msgid "Vote successful! You can now close the window." +msgstr "" + +#: src/states_screens/dialogs/vote_dialog.cpp:247 +msgid "Performing vote" +msgstr "" + +#: src/states_screens/easter_egg_screen.cpp:270 +#: src/states_screens/tracks_and_gp_screen.cpp:292 +#: src/states_screens/tracks_screen.cpp:241 +msgid "Random Track" +msgstr "" + +#: src/states_screens/edit_gp_screen.cpp:66 +#: src/states_screens/ghost_replay_selection.cpp:77 +msgid "Track" +msgstr "" + +#: src/states_screens/edit_gp_screen.cpp:67 +#: src/states_screens/ghost_replay_selection.cpp:81 +msgid "Laps" +msgstr "" + +#: src/states_screens/edit_gp_screen.cpp:68 +msgid "Reversed" +msgstr "" + +#: src/states_screens/edit_gp_screen.cpp:124 +#: src/states_screens/ghost_replay_selection.cpp:177 +#: src/states_screens/grand_prix_editor_screen.cpp:112 +#, c-format +msgid "Are you sure you want to remove '%s'?" +msgstr "" + +#: src/states_screens/edit_gp_screen.cpp:141 +msgid "Do you want to save your changes?" +msgstr "" + +#. I18N: Indicate that the grand prix is modified and not saved +#: src/states_screens/edit_gp_screen.cpp:286 +#, c-format +msgid "%s (+)" +msgstr "" + +#: src/states_screens/edit_gp_screen.cpp:325 +msgid "An error occurred while trying to save your grand prix." +msgstr "" + +#: src/states_screens/edit_track_screen.cpp:235 +msgid "Select a track" +msgstr "" + +#: src/states_screens/feature_unlocked.cpp:201 +#, c-format +msgid "You completed the easy challenge! Points earned on this level: %i/%i" +msgstr "" + +#: src/states_screens/feature_unlocked.cpp:205 +#, c-format +msgid "" +"You completed the intermediate challenge! Points earned on this level: %i/%i" +msgstr "" + +#: src/states_screens/feature_unlocked.cpp:209 +#, c-format +msgid "" +"You completed the difficult challenge! Points earned on this level: %i/%i" +msgstr "" + +#: src/states_screens/feature_unlocked.cpp:494 +msgid "Challenge Completed" +msgstr "" + +#: src/states_screens/feature_unlocked.cpp:531 +msgid "You unlocked track %0" +msgstr "" + +#: src/states_screens/feature_unlocked.cpp:569 +msgid "You unlocked grand prix %0" +msgstr "" + +#: src/states_screens/ghost_replay_selection.cpp:82 +msgid "Finish Time" +msgstr "" + +#: src/states_screens/ghost_replay_selection.cpp:83 +msgid "User" +msgstr "" + +#: src/states_screens/gp_info_screen.cpp:74 +msgid "Default" +msgstr "" + +#. I18N: if no kart animations are enabled +#: src/states_screens/gp_info_screen.cpp:75 +#: src/states_screens/options_screen_video.cpp:460 +msgid "None" +msgstr "" + +#: src/states_screens/gp_info_screen.cpp:77 +msgid "Random" +msgstr "" + +#: src/states_screens/gp_info_screen.cpp:154 +#: src/states_screens/gp_info_screen.cpp:179 +msgid "Reload" +msgstr "" + +#: src/states_screens/grand_prix_cutscene.cpp:75 +#: src/states_screens/grand_prix_editor_screen.cpp:101 +#: src/states_screens/grand_prix_editor_screen.cpp:118 +msgid "Please enter the name of the grand prix" +msgstr "" + +#: src/states_screens/grand_prix_editor_screen.cpp:169 +msgid "Please select a Grand Prix" +msgstr "" + +#: src/states_screens/grand_prix_editor_screen.cpp:338 +msgid "User defined" +msgstr "" + +#: src/states_screens/grand_prix_editor_screen.cpp:351 +msgid "Name is empty." +msgstr "" + +#: src/states_screens/grand_prix_editor_screen.cpp:359 +msgid "Another grand prix with this name already exists." +msgstr "" + +#: src/states_screens/grand_prix_editor_screen.cpp:365 +msgid "Name is too long." +msgstr "" + +#. I18N: when failing a GP +#: src/states_screens/grand_prix_lose.cpp:155 +msgid "Better luck next time!" +msgstr "" + +#: src/states_screens/grand_prix_win.cpp:166 +#: src/states_screens/race_result_gui.cpp:194 +msgid "You completed a challenge!" +msgstr "" + +#: src/states_screens/grand_prix_win.cpp:322 +msgid "You completed the Grand Prix!" +msgstr "" + +#: src/states_screens/kart_selection.cpp:843 +#: src/states_screens/kart_selection.cpp:1499 +msgid "Random Kart" +msgstr "" + +#: src/states_screens/kart_selection.cpp:859 +msgid "Locked" +msgstr "" + +#: src/states_screens/kart_selection.cpp:961 +msgid "" +"Everyone:\n" +"Press the 'Select' button to join the game" +msgstr "" + +#: src/states_screens/main_menu_screen.cpp:510 +msgid "" +"You can not play online without internet access. If you want to play online," +" go to options, select tab 'User Interface', and edit \"Connect to the " +"Internet\"." +msgstr "" + +#: src/states_screens/main_menu_screen.cpp:534 +msgid "" +"You can not download addons without internet access. If you want to download" +" addons, go to options, select tab 'User Interface', and edit \"Connect to " +"the Internet\"." +msgstr "" + +#: src/states_screens/main_menu_screen.cpp:566 +msgid "The add-ons module is currently disabled in the Options screen" +msgstr "" + +#: src/states_screens/main_menu_screen.cpp:578 +msgid "Please wait while the add-ons are loading" +msgstr "" + +#: src/states_screens/online_profile_achievements.cpp:79 +msgid "Progress" +msgstr "" + +#: src/states_screens/online_profile_achievements.cpp:131 +#: src/states_screens/online_profile_achievements.cpp:171 +msgid "Fetching achievements" +msgstr "" + +#: src/states_screens/online_profile_base.cpp:117 +#: src/states_screens/online_profile_base.cpp:127 +msgid "Your profile" +msgstr "" + +#: src/states_screens/online_profile_base.cpp:120 +#, c-format +msgid "%s's profile" +msgstr "" + +#: src/states_screens/online_profile_friends.cpp:75 +msgid "Since" +msgstr "" + +#: src/states_screens/online_profile_friends.cpp:76 +msgid "Status" +msgstr "" + +#: src/states_screens/online_profile_friends.cpp:96 +#: src/states_screens/online_profile_friends.cpp:247 +msgid "Fetching friends" +msgstr "" + +#: src/states_screens/online_profile_friends.cpp:218 +msgid "New Request" +msgstr "" + +#: src/states_screens/online_profile_friends.cpp:219 +msgid "Pending" +msgstr "" + +#: src/states_screens/online_profile_friends.cpp:223 +msgid "Offline" +msgstr "" + +#: src/states_screens/online_user_search.cpp:207 +#: src/states_screens/online_user_search.cpp:271 +msgid "Searching" +msgstr "" + +#: src/states_screens/options_screen_device.cpp:71 +msgid "Action" +msgstr "" + +#: src/states_screens/options_screen_device.cpp:72 +msgid "Key binding" +msgstr "" + +#. I18N: button to disable a gamepad configuration +#: src/states_screens/options_screen_device.cpp:96 +#: src/states_screens/options_screen_device.cpp:579 +msgid "Disable Device" +msgstr "" + +#. I18N: button to enable a gamepad configuration +#: src/states_screens/options_screen_device.cpp:98 +#: src/states_screens/options_screen_device.cpp:580 +msgid "Enable Device" +msgstr "" + +#. I18N: Key binding section +#: src/states_screens/options_screen_device.cpp:137 +msgid "Game Keys" +msgstr "" + +#. I18N: Key binding section +#: src/states_screens/options_screen_device.cpp:151 +msgid "Menu Keys" +msgstr "" + +#. I18N: Key binding name +#: src/states_screens/options_screen_device.cpp:218 +msgid "Steer Left" +msgstr "" + +#. I18N: Key binding name +#: src/states_screens/options_screen_device.cpp:221 +msgid "Steer Right" +msgstr "" + +#. I18N: Key binding name +#: src/states_screens/options_screen_device.cpp:224 +msgid "Accelerate" +msgstr "" + +#. I18N: Key binding name +#: src/states_screens/options_screen_device.cpp:227 +msgid "Brake" +msgstr "" + +#. I18N: Key binding name +#: src/states_screens/options_screen_device.cpp:230 +msgid "Fire" +msgstr "" + +#. I18N: Key binding name +#: src/states_screens/options_screen_device.cpp:233 +msgid "Nitro" +msgstr "" + +#. I18N: Key binding name +#: src/states_screens/options_screen_device.cpp:236 +msgid "Skidding" +msgstr "" + +#. I18N: Key binding name +#: src/states_screens/options_screen_device.cpp:239 +msgid "Look Back" +msgstr "" + +#. I18N: Key binding name +#: src/states_screens/options_screen_device.cpp:242 +msgid "Rescue" +msgstr "" + +#. I18N: Key binding name +#: src/states_screens/options_screen_device.cpp:245 +msgid "Pause Game" +msgstr "" + +#. I18N: Key binding name +#: src/states_screens/options_screen_device.cpp:250 +msgid "Up" +msgstr "" + +#. I18N: Key binding name +#: src/states_screens/options_screen_device.cpp:253 +msgid "Down" +msgstr "" + +#. I18N: Key binding name +#: src/states_screens/options_screen_device.cpp:256 +msgid "Left" +msgstr "" + +#. I18N: Key binding name +#: src/states_screens/options_screen_device.cpp:259 +msgid "Right" +msgstr "" + +#. I18N: Key binding name +#: src/states_screens/options_screen_device.cpp:262 +msgid "Select" +msgstr "" + +#. I18N: Key binding name +#: src/states_screens/options_screen_device.cpp:265 +msgid "Cancel/Back" +msgstr "" + +#: src/states_screens/options_screen_device.cpp:360 +msgid "* A blue item means a conflict with another configuration" +msgstr "" + +#: src/states_screens/options_screen_device.cpp:365 +msgid "* A red item means a conflict in the current configuration" +msgstr "" + +#: src/states_screens/options_screen_device.cpp:471 +msgid "" +"Warning: The 'Shift' is not a recommended key. When 'Shift' is pressed down," +" all keys that contain a character that is different in upper-case will stop" +" working." +msgstr "" + +#. I18N: shown before deleting an input configuration +#: src/states_screens/options_screen_device.cpp:567 +msgid "Are you sure you want to permanently delete this configuration?" +msgstr "" + +#: src/states_screens/options_screen_input.cpp:100 +#, c-format +msgid "Keyboard %i" +msgstr "" + +#: src/states_screens/options_screen_input.cpp:138 +msgid "Touch Device" +msgstr "" + +#: src/states_screens/options_screen_ui.cpp:159 +msgid "" +"In multiplayer mode, players can select handicapped (more difficult) " +"profiles on the kart selection screen" +msgstr "" + +#. I18N: in the language choice, to select the same language as the OS +#: src/states_screens/options_screen_ui.cpp:191 +msgid "System Language" +msgstr "" + +#. I18N: custom video settings +#: src/states_screens/options_screen_video.cpp:433 +msgid "Custom" +msgstr "" + +#. I18N: if some kart animations are enabled +#: src/states_screens/options_screen_video.cpp:458 +msgid "Me Only" +msgstr "" + +#. I18N: in graphical options +#. tooltip = tooltip + L"\n" + _("Pixel shaders: %s", +#. UserConfigParams::m_pixel_shaders ? enabled : disabled); +#. I18N: in graphical options +#: src/states_screens/options_screen_video.cpp:481 +#, c-format +msgid "Animated Scenery: %s" +msgstr "" + +#. I18N: in graphical options +#: src/states_screens/options_screen_video.cpp:487 +#, c-format +msgid "Weather Effects: %s" +msgstr "" + +#. I18N: in graphical options +#: src/states_screens/options_screen_video.cpp:490 +#, c-format +msgid "Animated Characters: %s" +msgstr "" + +#. I18N: in graphical options +#: src/states_screens/options_screen_video.cpp:495 +#, c-format +msgid "Dynamic lights: %s" +msgstr "" + +#. I18N: in graphical options +#: src/states_screens/options_screen_video.cpp:498 +#, c-format +msgid "Motion blur: %s" +msgstr "" + +#. I18N: in graphical options +#: src/states_screens/options_screen_video.cpp:501 +#, c-format +msgid "Anti-aliasing: %s" +msgstr "" + +#. I18N: in graphical options +#: src/states_screens/options_screen_video.cpp:504 +#, c-format +msgid "Ambient occlusion: %s" +msgstr "" + +#: src/states_screens/options_screen_video.cpp:508 +#, c-format +msgid "Shadows: %s" +msgstr "" + +#: src/states_screens/options_screen_video.cpp:510 +#, c-format +msgid "Shadows: %i" +msgstr "" + +#. I18N: in graphical options +#: src/states_screens/options_screen_video.cpp:513 +#, c-format +msgid "Bloom: %s" +msgstr "" + +#. I18N: in graphical options +#: src/states_screens/options_screen_video.cpp:517 +#, c-format +msgid "Glow (outlines): %s" +msgstr "" + +#. I18N: in graphical options +#: src/states_screens/options_screen_video.cpp:521 +#, c-format +msgid "Light shaft (God rays): %s" +msgstr "" + +#. I18N: in graphical options +#: src/states_screens/options_screen_video.cpp:525 +#, c-format +msgid "Depth of field: %s" +msgstr "" + +#. I18N: in graphical options +#: src/states_screens/options_screen_video.cpp:529 +#, c-format +msgid "Global illumination: %s" +msgstr "" + +#: src/states_screens/options_screen_video.cpp:534 +#, c-format +msgid "Rendered image quality: %s" +msgstr "" + +#: src/states_screens/race_gui.cpp:358 src/states_screens/race_gui.cpp:360 +msgid "Challenge Failed" +msgstr "" + +#. I18N: as in "ready, set, go", shown at the beginning of the race +#: src/states_screens/race_gui_base.cpp:65 +msgid "Ready!" +msgstr "" + +#. I18N: as in "ready, set, go", shown at the beginning of the race +#: src/states_screens/race_gui_base.cpp:67 +msgid "Set!" +msgstr "" + +#. I18N: as in "ready, set, go", shown at the beginning of the race +#: src/states_screens/race_gui_base.cpp:69 +msgid "Go!" +msgstr "" + +#. I18N: Shown when a goal is scored +#: src/states_screens/race_gui_base.cpp:71 +msgid "GOAL!" +msgstr "" + +#. I18N: string used to show the author of the music. (e.g. "Sunny Song" by +#. "John Doe") +#: src/states_screens/race_gui_base.cpp:517 +msgid "by" +msgstr "" + +#: src/states_screens/race_gui_base.cpp:626 +msgid "Collect nitro!" +msgstr "" + +#: src/states_screens/race_gui_base.cpp:628 +msgid "Follow the leader!" +msgstr "" + +#. I18N: When some GlobalPlayerIcons are hidden, write "Top 10" to show it +#: src/states_screens/race_gui_base.cpp:806 +#, c-format +msgid "Top %i" +msgstr "" + +#. I18N: Shown at the end of a race +#: src/states_screens/race_gui_overworld.cpp:143 +msgid "Lap" +msgstr "" + +#: src/states_screens/race_gui_overworld.cpp:144 +msgid "Rank" +msgstr "" + +#: src/states_screens/race_gui_overworld.cpp:518 +msgid "Press fire to start the tutorial" +msgstr "" + +#: src/states_screens/race_gui_overworld.cpp:557 +msgid "Type: Grand Prix" +msgstr "" + +#: src/states_screens/race_gui_overworld.cpp:594 +msgid "Press fire to start the challenge" +msgstr "" + +#: src/states_screens/race_result_gui.cpp:175 +msgid "Continue." +msgstr "" + +#: src/states_screens/race_result_gui.cpp:178 +msgid "Quit the server." +msgstr "" + +#: src/states_screens/race_result_gui.cpp:195 +msgid "You completed challenges!" +msgstr "" + +#: src/states_screens/race_result_gui.cpp:208 +msgid "Abort Grand Prix" +msgstr "" + +#: src/states_screens/race_result_gui.cpp:218 +msgid "Restart" +msgstr "" + +#: src/states_screens/race_result_gui.cpp:224 +msgid "Back to challenge selection" +msgstr "" + +#: src/states_screens/race_result_gui.cpp:230 +msgid "Back to the menu" +msgstr "" + +#: src/states_screens/race_result_gui.cpp:372 +msgid "Do you really want to abort the Grand Prix?" +msgstr "" + +#: src/states_screens/race_result_gui.cpp:499 +#: src/states_screens/race_result_gui.cpp:865 +msgid "Eliminated" +msgstr "" + +#: src/states_screens/race_result_gui.cpp:1012 +msgid "Red Team Wins" +msgstr "" + +#: src/states_screens/race_result_gui.cpp:1016 +msgid "Blue Team Wins" +msgstr "" + +#: src/states_screens/race_result_gui.cpp:1021 +msgid "It's a draw" +msgstr "" + +#. I18N: indicates a player that scored in their own goal in result screen +#: src/states_screens/race_result_gui.cpp:1098 +#: src/states_screens/race_result_gui.cpp:1154 +msgid "(Own Goal)" +msgstr "" + +#: src/states_screens/race_result_gui.cpp:1220 +#, c-format +msgid "Track %i/%i" +msgstr "" + +#: src/states_screens/race_result_gui.cpp:1304 +msgid "Grand Prix progress:" +msgstr "" + +#: src/states_screens/race_result_gui.cpp:1346 +msgid "Highscores" +msgstr "" + +#: src/states_screens/race_result_gui.cpp:1432 +#, c-format +msgid "Difficulty: %s" +msgstr "" + +#: src/states_screens/race_result_gui.cpp:1440 +#, c-format +msgid "Best lap time: %s" +msgstr "" + +#: src/states_screens/race_setup_screen.cpp:87 +msgid "All blows allowed, so catch weapons and make clever use of them!" +msgstr "" + +#: src/states_screens/race_setup_screen.cpp:94 +msgid "Contains no powerups, so only your driving skills matter!" +msgstr "" + +#. I18N: short definition for follow-the-leader game mode +#: src/states_screens/race_setup_screen.cpp:107 +msgid "Keep up with the leader kart but don't overtake it!" +msgstr "" + +#: src/states_screens/race_setup_screen.cpp:114 +msgid "Hit others with weapons until they lose all their lives." +msgstr "" + +#: src/states_screens/race_setup_screen.cpp:119 +msgid "Push the ball into the opposite cage to score goals." +msgstr "" + +#: src/states_screens/race_setup_screen.cpp:129 +msgid "Explore tracks to find all hidden eggs" +msgstr "" + +#: src/states_screens/race_setup_screen.cpp:137 +msgid "Race against ghost karts and try to beat them!" +msgstr "" + +#: src/states_screens/register_screen.cpp:218 +#: src/states_screens/register_screen.cpp:225 +#, c-format +msgid "Could not create player '%s'." +msgstr "" + +#: src/states_screens/register_screen.cpp:277 +msgid "Emails don't match!" +msgstr "" + +#: src/states_screens/register_screen.cpp:281 +msgid "Online username has to be between 3 and 30 characters long!" +msgstr "" + +#: src/states_screens/register_screen.cpp:285 +msgid "Online username must not start with a number!" +msgstr "" + +#: src/states_screens/register_screen.cpp:293 +msgid "Email has to be between 5 and 254 characters long!" +msgstr "" + +#: src/states_screens/register_screen.cpp:299 +msgid "Email is invalid!" +msgstr "" + +#: src/states_screens/register_screen.cpp:362 +msgid "" +"You will receive an email with further instructions regarding account " +"activation. Please be patient and be sure to check your spam folder." +msgstr "" + +#: src/states_screens/register_screen.cpp:402 +#: src/states_screens/user_screen.cpp:338 +msgid "Internet access is disabled, please enable it in the options" +msgstr "" + +#: src/states_screens/server_selection.cpp:79 +#: src/states_screens/server_selection.cpp:247 +msgid "Fetching servers" +msgstr "" + +#. I18N: track group name +#: src/states_screens/tracks_and_gp_screen.cpp:144 +msgid "all" +msgstr "" + +#: src/states_screens/tracks_and_gp_screen.cpp:195 +msgid "Locked!" +msgstr "" + +#: src/states_screens/tracks_and_gp_screen.cpp:278 +#: src/states_screens/tracks_screen.cpp:227 +msgid "Locked: solve active challenges to gain access to more!" +msgstr "" + +#: src/states_screens/tracks_screen.cpp:194 +msgid "Only official tracks are supported." +msgstr "" + +#. I18N: when showing who is the author of track '%s' +#. I18N: (place %s where the name of the author should appear) +#: src/states_screens/track_info_screen.cpp:112 +#, c-format +msgid "Track by %s" +msgstr "" + +#. I18N: the max players supported by an arena. +#: src/states_screens/track_info_screen.cpp:120 +#, c-format +msgid "Max players supported: %d" +msgstr "" + +#. I18N: In the track info screen +#: src/states_screens/track_info_screen.cpp:213 +msgid "Drive in reverse" +msgstr "" + +#. I18N: In the track info screen +#: src/states_screens/track_info_screen.cpp:218 +msgid "Random item location" +msgstr "" + +#: src/states_screens/user_screen.cpp:111 +msgid "Exit game" +msgstr "" + +#: src/states_screens/user_screen.cpp:484 +msgid "You need to enter a password." +msgstr "" + +#: src/states_screens/user_screen.cpp:505 +#, c-format +msgid "Logging out '%s'" +msgstr "" + +#: src/states_screens/user_screen.cpp:506 +#, c-format +msgid "Logging in '%s'" +msgstr "" + +#. I18N: In the player info dialog (when deleting) +#: src/states_screens/user_screen.cpp:595 +#, c-format +msgid "Do you really want to delete player '%s' ?" +msgstr "" + +#. I18N: Format for dates (%d = day, %m = month, %Y = year). See +#. http://www.cplusplus.com/reference/ctime/strftime/ for more info about date +#. formats. +#: src/utils/time.cpp:50 +msgid "%d/%m/%Y" +msgstr "" + +#. I18N: Do NOT literally translate this string!! Please enter Y as the +#. translation if your language is a RTL (right-to-left) language, +#. N (or nothing) otherwise +#: src/utils/translation.cpp:376 +msgid " Is this a RTL language?" +msgstr "" + +#: ../stk-assets/tracks/overworld/scripting.as:15 +msgid "Complete all challenges to unlock the big door!" +msgstr "" + +#: ../stk-assets/tracks/overworld/scripting.as:63 +msgid "" +"You need more points\n" +"to enter this challenge!\n" +"Check the minimap for\n" +"available challenges." +msgstr "" + +#: ../stk-assets/tracks/tutorial/scripting.as:21 +#, c-format +msgid "Accelerate with <%s>, and steer with <%s> and <%s>." +msgstr "" + +#: ../stk-assets/tracks/tutorial/scripting.as:37 +#: ../stk-assets/tracks/tutorial/triggers.as:38 +#, c-format +msgid "" +"Collect gift boxes, and fire the weapon with <%s> to blow away these boxes!" +msgstr "" + +#: ../stk-assets/tracks/tutorial/scripting.as:43 +#: ../stk-assets/tracks/tutorial/triggers.as:44 +#, c-format +msgid "" +"Press <%s> to look behind. Fire the weapon with <%s> while pressing <%s> to " +"fire behind!" +msgstr "" + +#: ../stk-assets/tracks/tutorial/scripting.as:53 +#: ../stk-assets/tracks/tutorial/triggers.as:54 +#, c-format +msgid "Use the nitro you collected by pressing <%s>!" +msgstr "" + +#: ../stk-assets/tracks/tutorial/scripting.as:58 +msgid "Collect nitro bottles (we will use them after the curve)." +msgstr "" + +#: ../stk-assets/tracks/tutorial/scripting.as:63 +#, c-format +msgid "Oops! When you're in trouble, press <%s> to be rescued." +msgstr "" + +#: ../stk-assets/tracks/tutorial/scripting.as:69 +#: ../stk-assets/tracks/tutorial/triggers.as:70 +#, c-format +msgid "" +"Accelerate and press the <%s> key while turning to skid. Skidding for a " +"short while can help you turn faster to take sharp turns." +msgstr "" + +#: ../stk-assets/tracks/tutorial/scripting.as:77 +#: ../stk-assets/tracks/tutorial/triggers.as:78 +msgid "" +"Note that if you manage to skid for several seconds, you will receive a " +"bonus speedup as a reward!" +msgstr "" + +#: ../stk-assets/tracks/tutorial/scripting.as:82 +#: ../stk-assets/tracks/tutorial/triggers.as:83 +msgid "You are now ready to race. Good luck!" +msgstr "" + +#: ../stk-assets/tracks/tutorial/triggers.as:28 +#, c-format +msgid "Accelerate with <%s> and steer with <%s> and <%s>" +msgstr "" + +#: ../stk-assets/tracks/tutorial/triggers.as:59 +msgid "Collect nitro bottles (we will use them after the curve)" +msgstr "" + +#: ../stk-assets/tracks/tutorial/triggers.as:64 +#, c-format +msgid "Oops! When you're in trouble, press <%s> to be rescued" +msgstr "" diff --git a/data/po/pt.po b/data/po/pt.po index f16454c4a..095456cb1 100644 --- a/data/po/pt.po +++ b/data/po/pt.po @@ -12,7 +12,7 @@ msgstr "" "Project-Id-Version: SuperTuxKart\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2017-10-04 20:58-0400\n" -"PO-Revision-Date: 2017-10-24 10:06+0000\n" +"PO-Revision-Date: 2017-11-13 00:19+0000\n" "Last-Translator: Rui \n" "Language-Team: Portuguese (http://www.transifex.com/supertuxkart/supertuxkart/language/pt/)\n" "MIME-Version: 1.0\n" @@ -4150,7 +4150,3 @@ msgstr "Recolhe garrafas nitro (vamos usã-las depois da curva)" #, c-format msgid "Oops! When you're in trouble, press <%s> to be rescued" msgstr "Aiii! Quando estiveres com problemas carrega na tecla <%s> para chamar o reboque" - -#: src/states_screens/credits.cpp:209 -msgid "translator-credits" -msgstr "Launchpad Contributions:\nBruno Ramalhete, 2015\nRui, 2016\nRui, 2016-2017" diff --git a/data/po/pt_BR.po b/data/po/pt_BR.po index 902bbca67..0a8ff8ef0 100644 --- a/data/po/pt_BR.po +++ b/data/po/pt_BR.po @@ -12,7 +12,7 @@ msgstr "" "Project-Id-Version: SuperTuxKart\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2017-10-04 20:58-0400\n" -"PO-Revision-Date: 2017-10-24 10:06+0000\n" +"PO-Revision-Date: 2017-11-13 00:19+0000\n" "Last-Translator: Auria \n" "Language-Team: Portuguese (Brazil) (http://www.transifex.com/supertuxkart/supertuxkart/language/pt_BR/)\n" "MIME-Version: 1.0\n" @@ -3023,7 +3023,7 @@ msgstr "O número máximo de jogadores deve ser entre 2 e 12." #: src/states_screens/credits.cpp:180 msgid "translator-credits" -msgstr "Launchpad Contributions:\nAdevair Heleno https://launchpad.net/~adevairhpj\nAndré Marcelo Alvarenga, 2017\nAverage John https://launchpad.net/~averagejohn\nEberval Oliveira Castro https://launchpad.net/~eberval-gmail\nEdvaldo de Souza Cruz https://launchpad.net/~edvaldoscruz\nfarrer https://launchpad.net/~farrer\nFelipe Menezes https://launchpad.net/~felipe-fmc1\nflaviozavan, 2015-2017\nFlávio Zavan https://launchpad.net/~flaviozavan\nGuilherme Marçal https://launchpad.net/~ogabiefofo\nLaete Meireles, 2015\nMarcelo R. de Sa https://launchpad.net/~marcelo-jambu\nMateus Ferreira Silva https://launchpad.net/~mtsferreirasilva\nMihailov https://launchpad.net/~mihailov\nNeliton Pereira Jr. https://launchpad.net/~nelitonpjr\nPablo do Amaral Ferreira, 2015\nPaulo Roberto de Oliveira Castro https://launchpad.net/~p-oliveira-castro\nPedro Folha https://launchpad.net/~pedrovi\nRafael Neri https://launchpad.net/~rafepel\nRodrigo Borges https://launchpad.net/~rbm0407\nRubens Bueno https://launchpad.net/~rubensvsbueno-l\nSTK-team https://launchpad.net/~stk\nTeylo Laundos Aguiar https://launchpad.net/~teylo.aguiar\nVitor da Silva Gonçalves https://launchpad.net/~vitorsgoncalves" +msgstr "Launchpad Contributions:\n Adevair Heleno https://launchpad.net/~adevairhpj\n Average John https://launchpad.net/~averagejohn\n Eberval Oliveira Castro https://launchpad.net/~eberval-gmail\n Edvaldo de Souza Cruz https://launchpad.net/~edvaldoscruz\n Felipe Menezes https://launchpad.net/~felipe-fmc1\n Flávio Zavan https://launchpad.net/~flaviozavan\n Guilherme Marçal https://launchpad.net/~ogabiefofo\n Marcelo R. de Sa https://launchpad.net/~marcelo-jambu\n Mateus Ferreira Silva https://launchpad.net/~mtsferreirasilva\n Mihailov https://launchpad.net/~mihailov\n Neliton Pereira Jr. https://launchpad.net/~nelitonpjr\n Paulo Roberto de Oliveira Castro https://launchpad.net/~p-oliveira-castro\n Pedro Folha https://launchpad.net/~pedrovi\n Rafael Neri https://launchpad.net/~rafepel\n Rodrigo Borges https://launchpad.net/~rbm0407\n Rubens Bueno https://launchpad.net/~rubensvsbueno-l\n STK-team https://launchpad.net/~stk\n Teylo Laundos Aguiar https://launchpad.net/~teylo.aguiar\n Vitor da Silva Gonçalves https://launchpad.net/~vitorsgoncalves\n farrer https://launchpad.net/~farrer" #: src/states_screens/dialogs/addons_loading.cpp:97 msgid "Update" diff --git a/data/po/ro.po b/data/po/ro.po index e24bdeeb3..4cdfaf01a 100644 --- a/data/po/ro.po +++ b/data/po/ro.po @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: SuperTuxKart\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2017-10-04 20:58-0400\n" -"PO-Revision-Date: 2017-10-24 10:06+0000\n" +"PO-Revision-Date: 2017-11-13 00:19+0000\n" "Last-Translator: Auria \n" "Language-Team: Romanian (http://www.transifex.com/supertuxkart/supertuxkart/language/ro/)\n" "MIME-Version: 1.0\n" @@ -3025,7 +3025,7 @@ msgstr "" #: src/states_screens/credits.cpp:180 msgid "translator-credits" -msgstr "Launchpad Contributions:\nAlexandru Guduleasa https://launchpad.net/~gulyan89\nDaniel Butum https://launchpad.net/~danielcode\nDimStar https://launchpad.net/~dominique-launchpad-net\nDominique Leuenberger aka DimStar https://launchpad.net/~dimstar\nMatus Michael https://launchpad.net/~m-matus\nNicolae Crefelean https://launchpad.net/~kneekoo\nNicolae Crefelean, 2015,2017\nSTK-team https://launchpad.net/~stk\nVitalie Ciubotaru https://launchpad.net/~vitalie-ciubotaru" +msgstr "Launchpad Contributions:\n Alexandru Guduleasa https://launchpad.net/~gulyan89\n Daniel Butum https://launchpad.net/~danielcode\n DimStar https://launchpad.net/~dominique-launchpad-net\n Dominique Leuenberger aka DimStar https://launchpad.net/~dimstar\n Matus Michael https://launchpad.net/~m-matus\n Nicolae Crefelean https://launchpad.net/~kneekoo\n STK-team https://launchpad.net/~stk\n Vitalie Ciubotaru https://launchpad.net/~vitalie-ciubotaru" #: src/states_screens/dialogs/addons_loading.cpp:97 msgid "Update" diff --git a/data/po/ru.po b/data/po/ru.po index 04d424301..3d27224ea 100644 --- a/data/po/ru.po +++ b/data/po/ru.po @@ -13,7 +13,7 @@ msgstr "" "Project-Id-Version: SuperTuxKart\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2017-10-04 20:58-0400\n" -"PO-Revision-Date: 2017-10-24 10:06+0000\n" +"PO-Revision-Date: 2017-11-13 00:19+0000\n" "Last-Translator: Олег Лазарев \n" "Language-Team: Russian (http://www.transifex.com/supertuxkart/supertuxkart/language/ru/)\n" "MIME-Version: 1.0\n" @@ -3034,7 +3034,7 @@ msgstr "Максимальное количество игроков может #: src/states_screens/credits.cpp:180 msgid "translator-credits" -msgstr "Launchpad Contributions:\nadem https://launchpad.net/~adem4ik\nAlexander 'FONTER' Zinin https://launchpad.net/~spore-09\nAleXoundOS https://launchpad.net/~alexoundos\nAndrei Stepanov, 2015-2017\nAndrey Olykainen https://launchpad.net/~andrey.olykainen\nDenis Deryabin https://launchpad.net/~denis2010der\nDmitriy Koshel https://launchpad.net/~gaim4a\nDmitry Dubrov https://launchpad.net/~dimprogpro\nDmitry Dubrov, 2015\nDmitry https://launchpad.net/~dmitry-ashkadov\nHelen Antonova https://launchpad.net/~vigonett\nIgor Shtompel https://launchpad.net/~i.shtompel\nKirill Babeev https://launchpad.net/~kirill-babeev\nKroArtem https://launchpad.net/~kroartem\nMaxim Kalinin https://launchpad.net/~kalinin-maxim\nOleg, 2015\npingvin https://launchpad.net/~penguin-tux\nSTK-team https://launchpad.net/~stk\nTae-Wong SEO https://launchpad.net/~seotaewong40\nVal Och, 2016\nДмитрий https://launchpad.net/~starwars32\nОлег https://launchpad.net/~laoltomsk\nОлег Лазарев, 2017\n☠Jay ZDLin☠ https://launchpad.net/~black-buddha666" +msgstr "Launchpad Contributions:\n AleXoundOS https://launchpad.net/~alexoundos\n Alexander 'FONTER' Zinin https://launchpad.net/~spore-09\n Andrey Olykainen https://launchpad.net/~andrey.olykainen\n Denis Deryabin https://launchpad.net/~denis2010der\n Dmitriy Koshel https://launchpad.net/~gaim4a\n Dmitry https://launchpad.net/~dmitry-ashkadov\n Dmitry Dubrov https://launchpad.net/~dimprogpro\n Helen Antonova https://launchpad.net/~vigonett\n Igor Shtompel https://launchpad.net/~i.shtompel\n Kirill Babeev https://launchpad.net/~kirill-babeev\n KroArtem https://launchpad.net/~kroartem\n Maxim Kalinin https://launchpad.net/~kalinin-maxim\n STK-team https://launchpad.net/~stk\n Tae-Wong SEO https://launchpad.net/~seotaewong40\n adem https://launchpad.net/~adem4ik\n pingvin https://launchpad.net/~penguin-tux\n Дмитрий https://launchpad.net/~starwars32\n Олег https://launchpad.net/~laoltomsk\n ☠Jay ZDLin☠ https://launchpad.net/~black-buddha666" #: src/states_screens/dialogs/addons_loading.cpp:97 msgid "Update" diff --git a/data/po/sc.po b/data/po/sc.po index c49f8b228..4bf98d1ff 100644 --- a/data/po/sc.po +++ b/data/po/sc.po @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: SuperTuxKart\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2017-10-04 20:58-0400\n" -"PO-Revision-Date: 2017-10-24 10:06+0000\n" +"PO-Revision-Date: 2017-11-13 00:19+0000\n" "Last-Translator: Auria \n" "Language-Team: Sardinian (http://www.transifex.com/supertuxkart/supertuxkart/language/sc/)\n" "MIME-Version: 1.0\n" @@ -4147,7 +4147,3 @@ msgstr "" #, c-format msgid "Oops! When you're in trouble, press <%s> to be rescued" msgstr "" - -#: src/states_screens/credits.cpp:209 -msgid "translator-credits" -msgstr "Launchpad Contributions:\namm, 2017" diff --git a/data/po/sco.po b/data/po/sco.po index cd2455011..bc8f6bc71 100644 --- a/data/po/sco.po +++ b/data/po/sco.po @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: SuperTuxKart\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2017-10-04 20:58-0400\n" -"PO-Revision-Date: 2017-10-24 10:06+0000\n" +"PO-Revision-Date: 2017-11-13 00:19+0000\n" "Last-Translator: Auria \n" "Language-Team: Scots (http://www.transifex.com/supertuxkart/supertuxkart/language/sco/)\n" "MIME-Version: 1.0\n" @@ -3020,7 +3020,7 @@ msgstr "" #: src/states_screens/credits.cpp:180 msgid "translator-credits" -msgstr "Launchpad Contributions:\nMarco Cafolla https://launchpad.net/~cobradabest" +msgstr "Launchpad Contributions:\n Marco Cafolla https://launchpad.net/~cobradabest" #: src/states_screens/dialogs/addons_loading.cpp:97 msgid "Update" diff --git a/data/po/sk.po b/data/po/sk.po index 5751c21af..54f9abc53 100644 --- a/data/po/sk.po +++ b/data/po/sk.po @@ -12,7 +12,7 @@ msgstr "" "Project-Id-Version: SuperTuxKart\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2017-10-04 20:58-0400\n" -"PO-Revision-Date: 2017-10-24 10:06+0000\n" +"PO-Revision-Date: 2017-11-13 00:19+0000\n" "Last-Translator: Auria \n" "Language-Team: Slovak (http://www.transifex.com/supertuxkart/supertuxkart/language/sk/)\n" "MIME-Version: 1.0\n" @@ -3028,7 +3028,7 @@ msgstr "Maximálny počet hráčov musí byť v rozsahu od 2 do 12." #: src/states_screens/credits.cpp:180 msgid "translator-credits" -msgstr "Launchpad Contributions:\narchetyp, 2015-2016\nDawid Gan https://launchpad.net/~deveee\nDušan Kazik, 2015\nMiroslav Remák https://launchpad.net/~miroslavr256\nMiroslavR, 2015-2016\nPrescott_SK https://launchpad.net/~prescott66\nSTK-team https://launchpad.net/~stk" +msgstr "Launchpad Contributions:\n Dawid Gan https://launchpad.net/~deveee\n Miroslav Remák https://launchpad.net/~miroslavr256\n Prescott_SK https://launchpad.net/~prescott66\n STK-team https://launchpad.net/~stk" #: src/states_screens/dialogs/addons_loading.cpp:97 msgid "Update" diff --git a/data/po/sl.po b/data/po/sl.po index 5d307e6a3..e8f2a369d 100644 --- a/data/po/sl.po +++ b/data/po/sl.po @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: SuperTuxKart\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2017-10-04 20:58-0400\n" -"PO-Revision-Date: 2017-10-24 10:06+0000\n" +"PO-Revision-Date: 2017-11-13 00:19+0000\n" "Last-Translator: Auria \n" "Language-Team: Slovenian (http://www.transifex.com/supertuxkart/supertuxkart/language/sl/)\n" "MIME-Version: 1.0\n" @@ -3030,7 +3030,7 @@ msgstr "Največje število igralcev mora biti med 2 in 12." #: src/states_screens/credits.cpp:180 msgid "translator-credits" -msgstr "Launchpad Contributions:\nAndrej Znidarsic https://launchpad.net/~andrej.znidarsic\nAndrej Znidarsic, 2015-2016\nAuria https://launchpad.net/~auria-mg\nDenis_Ubuntu https://launchpad.net/~sirdrinksalot\nDomen Knez https://launchpad.net/~dmen\nMatic Gradišer https://launchpad.net/~0micky\nSasa Batistic https://launchpad.net/~sasa-batistic\nSTK-team https://launchpad.net/~stk" +msgstr "Launchpad Contributions:\n Andrej Znidarsic https://launchpad.net/~andrej.znidarsic\n Auria https://launchpad.net/~auria-mg\n Denis_Ubuntu https://launchpad.net/~sirdrinksalot\n Domen Knez https://launchpad.net/~dmen\n Matic Gradišer https://launchpad.net/~0micky\n STK-team https://launchpad.net/~stk\n Sasa Batistic https://launchpad.net/~sasa-batistic" #: src/states_screens/dialogs/addons_loading.cpp:97 msgid "Update" diff --git a/data/po/sq.po b/data/po/sq.po index 2e53e98d9..553a89bb9 100644 --- a/data/po/sq.po +++ b/data/po/sq.po @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: SuperTuxKart\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2017-10-04 20:58-0400\n" -"PO-Revision-Date: 2017-10-24 10:06+0000\n" +"PO-Revision-Date: 2017-11-13 00:19+0000\n" "Last-Translator: Auria \n" "Language-Team: Albanian (http://www.transifex.com/supertuxkart/supertuxkart/language/sq/)\n" "MIME-Version: 1.0\n" @@ -3020,7 +3020,7 @@ msgstr "" #: src/states_screens/credits.cpp:180 msgid "translator-credits" -msgstr "Launchpad Contributions:\nArianit Kukaj https://launchpad.net/~arking\nDawid Gan https://launchpad.net/~deveee\nSTK-team https://launchpad.net/~stk" +msgstr "Launchpad Contributions:\n Arianit Kukaj https://launchpad.net/~arking\n Dawid Gan https://launchpad.net/~deveee\n STK-team https://launchpad.net/~stk" #: src/states_screens/dialogs/addons_loading.cpp:97 msgid "Update" diff --git a/data/po/sr.po b/data/po/sr.po index 4e55b9b05..0834f95c8 100644 --- a/data/po/sr.po +++ b/data/po/sr.po @@ -15,7 +15,7 @@ msgstr "" "Project-Id-Version: SuperTuxKart\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2017-10-04 20:58-0400\n" -"PO-Revision-Date: 2017-10-24 10:06+0000\n" +"PO-Revision-Date: 2017-11-13 00:19+0000\n" "Last-Translator: Саша Петровић \n" "Language-Team: Serbian (http://www.transifex.com/supertuxkart/supertuxkart/language/sr/)\n" "MIME-Version: 1.0\n" @@ -3031,7 +3031,7 @@ msgstr "Највећи број играча мора да буде између #: src/states_screens/credits.cpp:180 msgid "translator-credits" -msgstr "Launchpad Contributions:\ndboki89 https://launchpad.net/~dboki89\nNikola Kantarević, 2016\nSTK-team https://launchpad.net/~stk\nМирослав Николић https://launchpad.net/~lipek\nМирослав Николић, 2011\nСаша Петровић https://launchpad.net/~salepetronije\nСаша Петровић, 2012-2014,2016\nСаша Петровић, 2015-2016\nСаша Петровић, 2016\nСаша Петровић, 2016-2017" +msgstr "Launchpad Contributions:\n STK-team https://launchpad.net/~stk\n dboki89 https://launchpad.net/~dboki89\n Мирослав Николић https://launchpad.net/~lipek\n Саша Петровић https://launchpad.net/~salepetronije" #: src/states_screens/dialogs/addons_loading.cpp:97 msgid "Update" diff --git a/data/po/sv.po b/data/po/sv.po index c2f80542b..76882ce07 100644 --- a/data/po/sv.po +++ b/data/po/sv.po @@ -14,7 +14,7 @@ msgstr "" "Project-Id-Version: SuperTuxKart\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2017-10-04 20:58-0400\n" -"PO-Revision-Date: 2017-10-24 10:06+0000\n" +"PO-Revision-Date: 2017-11-13 00:19+0000\n" "Last-Translator: Auria \n" "Language-Team: Swedish (http://www.transifex.com/supertuxkart/supertuxkart/language/sv/)\n" "MIME-Version: 1.0\n" @@ -3025,7 +3025,7 @@ msgstr "Det maximala antalet spelare måste vara mellan 2 och 12." #: src/states_screens/credits.cpp:180 msgid "translator-credits" -msgstr "Launchpad Contributions:\nAnders Carlsson https://launchpad.net/~kk7ntl9af-gk9\nArve Eriksson https://launchpad.net/~031299870-telia\nDaniel Nylander https://launchpad.net/~yeager\nDawid Gan https://launchpad.net/~deveee\nFroppe123, 2015\nJohan Reinhed, 2017\nKjell Rilbe, 2016\nKristoffer Grundström, 2016\nMarcus Larborg, 2017\nMathias Tillman https://launchpad.net/~master-homer\nMDxm https://launchpad.net/~mdxm3000\nMikael Mildén https://launchpad.net/~mikael-milden\nPhoenix https://launchpad.net/~thephoenix\nRikard Edgren https://launchpad.net/~rikard-edgren\nRikard Johansson https://launchpad.net/~rikard-jo\nSTK-team https://launchpad.net/~stk\ntheschitz, 2016" +msgstr "Launchpad Contributions:\n Anders Carlsson https://launchpad.net/~kk7ntl9af-gk9\n Arve Eriksson https://launchpad.net/~031299870-telia\n Daniel Nylander https://launchpad.net/~yeager\n Dawid Gan https://launchpad.net/~deveee\n MDxm https://launchpad.net/~mdxm3000\n Mathias Tillman https://launchpad.net/~master-homer\n Mikael Mildén https://launchpad.net/~mikael-milden\n Phoenix https://launchpad.net/~thephoenix\n Rikard Edgren https://launchpad.net/~rikard-edgren\n Rikard Johansson https://launchpad.net/~rikard-jo\n STK-team https://launchpad.net/~stk" #: src/states_screens/dialogs/addons_loading.cpp:97 msgid "Update" diff --git a/data/po/tr.po b/data/po/tr.po index a6f0a72e4..de395e25d 100644 --- a/data/po/tr.po +++ b/data/po/tr.po @@ -6,14 +6,14 @@ # FIRST AUTHOR , 2010 # U. Ozan Basar , 2015 # Volkan Gezer , 2015 -# yakup , 2015-2016 +# yakup , 2015-2017 msgid "" msgstr "" "Project-Id-Version: SuperTuxKart\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2017-10-04 20:58-0400\n" -"PO-Revision-Date: 2017-10-24 10:06+0000\n" -"Last-Translator: Auria \n" +"PO-Revision-Date: 2017-11-13 00:19+0000\n" +"Last-Translator: yakup \n" "Language-Team: Turkish (http://www.transifex.com/supertuxkart/supertuxkart/language/tr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -361,7 +361,7 @@ msgstr "" #. I18N: ./data/gui/custom_video_settings.stkgui #. I18N: Video settings msgid "Geometry detail" -msgstr "" +msgstr "Geometri detayı" #. I18N: ./data/gui/custom_video_settings.stkgui #. I18N: Video settings @@ -622,11 +622,11 @@ msgstr "Çoklu-oyuncu" #. I18N: ./data/gui/help5.stkgui #. I18N: Tab in help menu msgid "Bananas" -msgstr "" +msgstr "Muzlar" #. I18N: ./data/gui/help1.stkgui msgid "Start the tutorial" -msgstr "" +msgstr "Öğreticiyi başlat" #. I18N: ./data/gui/help1.stkgui #. I18N: In the help menu @@ -909,7 +909,7 @@ msgstr "" #. I18N: ./data/gui/multitouch_settings.stkgui #. I18N: In the multitouch settings screen msgid "Device enabled" -msgstr "" +msgstr "Cihaz aktif" #. I18N: ./data/gui/multitouch_settings.stkgui #. I18N: In the multitouch settings screen @@ -1395,7 +1395,7 @@ msgstr "Oy" #. I18N: ./data/gui/online/waiting_for_others.stkgui #. I18N: Networking screen msgid "Waiting for the others..." -msgstr "" +msgstr "Diğerleri bekleniyor..." #. I18N: ./data/gui/options_audio.stkgui #. I18N: ./data/gui/options_device.stkgui @@ -3023,7 +3023,7 @@ msgstr "" #: src/states_screens/credits.cpp:180 msgid "translator-credits" -msgstr "Launchpad Contributions:\nDawid Gan https://launchpad.net/~deveee\nemre can yılmaz https://launchpad.net/~ecylmz\nlinuxseven https://launchpad.net/~linuxseven\nmaidis https://launchpad.net/~ozbekanil\nMuhammet Kara https://launchpad.net/~muhammet-k\nOsman Tosun https://launchpad.net/~rainman-neu\nSTK-team https://launchpad.net/~stk\nU. Ozan Basar, 2015\nVolkan Gezer https://launchpad.net/~volkangezer\nVolkan Gezer, 2015\nyakup https://launchpad.net/~mutouk\nyakup, 2015-2016\nzeugma https://launchpad.net/~sunder67" +msgstr "Launchpad Contributions:\n Dawid Gan https://launchpad.net/~deveee\n Muhammet Kara https://launchpad.net/~muhammet-k\n Osman Tosun https://launchpad.net/~rainman-neu\n STK-team https://launchpad.net/~stk\n Volkan Gezer https://launchpad.net/~volkangezer\n emre can yılmaz https://launchpad.net/~ecylmz\n linuxseven https://launchpad.net/~linuxseven\n maidis https://launchpad.net/~ozbekanil\n yakup https://launchpad.net/~mutouk\n zeugma https://launchpad.net/~sunder67" #: src/states_screens/dialogs/addons_loading.cpp:97 msgid "Update" @@ -3158,7 +3158,7 @@ msgstr "Tümü için etkinleştir" #: src/states_screens/dialogs/custom_video_settings.cpp:102 #: src/states_screens/options_screen_video.cpp:469 msgid "Low" -msgstr "" +msgstr "Düşük" #. I18N: Geometry level high : everything is displayed #. I18N: in the graphical options tooltip; @@ -3168,21 +3168,21 @@ msgstr "" #: src/states_screens/dialogs/custom_video_settings.cpp:103 #: src/states_screens/options_screen_video.cpp:472 msgid "High" -msgstr "" +msgstr "Yüksek" #. I18N: in the graphical options tooltip; #. indicates the rendered image quality is very low #: src/states_screens/dialogs/custom_video_settings.cpp:94 #: src/states_screens/options_screen_video.cpp:466 msgid "Very Low" -msgstr "" +msgstr "Çok Düşük" #. I18N: in the graphical options tooltip; #. indicates the rendered image quality is very high #: src/states_screens/dialogs/custom_video_settings.cpp:97 #: src/states_screens/options_screen_video.cpp:475 msgid "Very High" -msgstr "" +msgstr "Çok Yüksek" #: src/states_screens/dialogs/message_dialog.cpp:129 #: src/states_screens/edit_gp_screen.cpp:257 @@ -3192,11 +3192,11 @@ msgstr "Hayır" #: src/states_screens/dialogs/multitouch_settings_dialog.cpp:60 msgid "Tablet" -msgstr "" +msgstr "Tablet" #: src/states_screens/dialogs/multitouch_settings_dialog.cpp:61 msgid "Phone" -msgstr "" +msgstr "Telefon" #: src/states_screens/dialogs/recovery_dialog.cpp:121 msgid "Username and/or email address invalid." @@ -3380,7 +3380,7 @@ msgstr "Bitiş Zamanı" #: src/states_screens/ghost_replay_selection.cpp:83 msgid "User" -msgstr "" +msgstr "Kullanıcı" #: src/states_screens/gp_info_screen.cpp:74 msgid "Default" @@ -3664,7 +3664,7 @@ msgstr "Klavye %i" #: src/states_screens/options_screen_input.cpp:138 msgid "Touch Device" -msgstr "" +msgstr "Dokunmatik Cihaz" #: src/states_screens/options_screen_ui.cpp:159 msgid "" @@ -3832,7 +3832,7 @@ msgstr "Sıra" #: src/states_screens/race_gui_overworld.cpp:518 msgid "Press fire to start the tutorial" -msgstr "" +msgstr "Ateş etme tuşu ile öğreticiyi başlat" #: src/states_screens/race_gui_overworld.cpp:557 msgid "Type: Grand Prix" @@ -3913,7 +3913,7 @@ msgstr "Yüksek Puanlar" #: src/states_screens/race_result_gui.cpp:1432 #, c-format msgid "Difficulty: %s" -msgstr "" +msgstr "Zorluk: %s" #: src/states_screens/race_result_gui.cpp:1440 #, c-format @@ -3969,7 +3969,7 @@ msgstr "Çevrimiçi kullanıcı adı bir sayı ile başlayamaz!" #: src/states_screens/register_screen.cpp:293 msgid "Email has to be between 5 and 254 characters long!" -msgstr "" +msgstr "Eposta 5 ile 254 karakter uzunluğunda olmalıdır." #: src/states_screens/register_screen.cpp:299 msgid "Email is invalid!" @@ -4030,7 +4030,7 @@ msgstr "Tersten sür" #. I18N: In the track info screen #: src/states_screens/track_info_screen.cpp:218 msgid "Random item location" -msgstr "" +msgstr "Rasgele nesne konumu" #: src/states_screens/user_screen.cpp:111 msgid "Exit game" @@ -4061,7 +4061,7 @@ msgstr "'%s' oyuncusunu gerçekten silmek istiyor musunuz?" #. formats. #: src/utils/time.cpp:50 msgid "%d/%m/%Y" -msgstr "" +msgstr "%d/%m/%Y" #. I18N: Do NOT literally translate this string!! Please enter Y as the #. translation if your language is a RTL (right-to-left) language, @@ -4115,7 +4115,7 @@ msgstr "" #: ../stk-assets/tracks/tutorial/scripting.as:63 #, c-format msgid "Oops! When you're in trouble, press <%s> to be rescued." -msgstr "" +msgstr "Oops! Başın dertte olduğunda, kurtarılmak için <%s> tuşuna bas." #: ../stk-assets/tracks/tutorial/scripting.as:69 #: ../stk-assets/tracks/tutorial/triggers.as:70 diff --git a/data/po/tt.po b/data/po/tt.po index 92997fcb4..41768b01a 100644 --- a/data/po/tt.po +++ b/data/po/tt.po @@ -10,7 +10,7 @@ msgstr "" "Project-Id-Version: SuperTuxKart\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2017-10-04 20:58-0400\n" -"PO-Revision-Date: 2017-10-24 10:06+0000\n" +"PO-Revision-Date: 2017-11-13 00:19+0000\n" "Last-Translator: Auria \n" "Language-Team: Tatar (http://www.transifex.com/supertuxkart/supertuxkart/language/tt/)\n" "MIME-Version: 1.0\n" @@ -3016,7 +3016,7 @@ msgstr "Уенчылар саны кимендә 2, ә иң күбе 12 була #: src/states_screens/credits.cpp:180 msgid "translator-credits" -msgstr "Launchpad Contributions:\nDawid Gan https://launchpad.net/~deveee\nБулат Ибраһим, 2015-2017" +msgstr "Launchpad Contributions:\n Dawid Gan https://launchpad.net/~deveee" #: src/states_screens/dialogs/addons_loading.cpp:97 msgid "Update" diff --git a/data/po/uk.po b/data/po/uk.po index ce5b8a20b..7d27471c9 100644 --- a/data/po/uk.po +++ b/data/po/uk.po @@ -10,7 +10,7 @@ msgstr "" "Project-Id-Version: SuperTuxKart\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2017-10-04 20:58-0400\n" -"PO-Revision-Date: 2017-10-24 10:06+0000\n" +"PO-Revision-Date: 2017-11-13 00:19+0000\n" "Last-Translator: Auria \n" "Language-Team: Ukrainian (http://www.transifex.com/supertuxkart/supertuxkart/language/uk/)\n" "MIME-Version: 1.0\n" @@ -3026,7 +3026,7 @@ msgstr "Максимальна кількість гравців має бути #: src/states_screens/credits.cpp:180 msgid "translator-credits" -msgstr "Launchpad Contributions:\nDawid Gan https://launchpad.net/~deveee\nfedik, 2015-2017\nHelen Antonova https://launchpad.net/~vigonett\nJOker https://launchpad.net/~spenser26\nMaks Lyashuk aka Ma)(imuM https://launchpad.net/~probel\nMax Lyashuk, 2015-2016\nPasha Sydoryshyn https://launchpad.net/~pandorrarv\nPavlo Bilyak https://launchpad.net/~pavlo1997\nSTK-team https://launchpad.net/~stk\nVolodymyr Bodenchuk https://launchpad.net/~bodenchuk\nСергій Дубик https://launchpad.net/~dubyk-library" +msgstr "Launchpad Contributions:\n Dawid Gan https://launchpad.net/~deveee\n Helen Antonova https://launchpad.net/~vigonett\n JOker https://launchpad.net/~spenser26\n Maks Lyashuk aka Ma)(imuM https://launchpad.net/~probel\n Pasha Sydoryshyn https://launchpad.net/~pandorrarv\n Pavlo Bilyak https://launchpad.net/~pavlo1997\n STK-team https://launchpad.net/~stk\n Volodymyr Bodenchuk https://launchpad.net/~bodenchuk\n Сергій Дубик https://launchpad.net/~dubyk-library" #: src/states_screens/dialogs/addons_loading.cpp:97 msgid "Update" diff --git a/data/po/uz.po b/data/po/uz.po index 9edb6ea1c..1ad2cac4a 100644 --- a/data/po/uz.po +++ b/data/po/uz.po @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: SuperTuxKart\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2017-10-04 20:58-0400\n" -"PO-Revision-Date: 2017-10-24 10:06+0000\n" +"PO-Revision-Date: 2017-11-13 00:19+0000\n" "Last-Translator: Auria \n" "Language-Team: Uzbek (http://www.transifex.com/supertuxkart/supertuxkart/language/uz/)\n" "MIME-Version: 1.0\n" @@ -3015,7 +3015,7 @@ msgstr "" #: src/states_screens/credits.cpp:180 msgid "translator-credits" -msgstr "Launchpad Contributions:\nUmidjon Almasov https://launchpad.net/~kdemon" +msgstr "Launchpad Contributions:\n Umidjon Almasov https://launchpad.net/~kdemon" #: src/states_screens/dialogs/addons_loading.cpp:97 msgid "Update" diff --git a/data/po/vi.po b/data/po/vi.po index b52a3925e..601d97bb2 100644 --- a/data/po/vi.po +++ b/data/po/vi.po @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: SuperTuxKart\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2017-10-04 20:58-0400\n" -"PO-Revision-Date: 2017-10-24 10:06+0000\n" +"PO-Revision-Date: 2017-11-13 00:19+0000\n" "Last-Translator: Auria \n" "Language-Team: Vietnamese (http://www.transifex.com/supertuxkart/supertuxkart/language/vi/)\n" "MIME-Version: 1.0\n" @@ -3015,7 +3015,7 @@ msgstr "" #: src/states_screens/credits.cpp:180 msgid "translator-credits" -msgstr "Launchpad Contributions:\nDawid Gan https://launchpad.net/~deveee\nHuynh Yen Loc https://launchpad.net/~nightgaunt13\nSTK-team https://launchpad.net/~stk\nVo Xuan Tien https://launchpad.net/~tienvx2008gs\nVõ Xuân Tiến https://launchpad.net/~vo-ngan-90\nZombifier https://launchpad.net/~duckhoi1234" +msgstr "Launchpad Contributions:\n Dawid Gan https://launchpad.net/~deveee\n Huynh Yen Loc https://launchpad.net/~nightgaunt13\n STK-team https://launchpad.net/~stk\n Vo Xuan Tien https://launchpad.net/~tienvx2008gs\n Võ Xuân Tiến https://launchpad.net/~vo-ngan-90\n Zombifier https://launchpad.net/~duckhoi1234" #: src/states_screens/dialogs/addons_loading.cpp:97 msgid "Update" diff --git a/data/po/zh_CN.po b/data/po/zh_CN.po index 6481473f0..db0aad8b2 100644 --- a/data/po/zh_CN.po +++ b/data/po/zh_CN.po @@ -12,7 +12,7 @@ msgstr "" "Project-Id-Version: SuperTuxKart\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2017-10-04 20:58-0400\n" -"PO-Revision-Date: 2017-10-24 10:06+0000\n" +"PO-Revision-Date: 2017-11-13 00:19+0000\n" "Last-Translator: Auria \n" "Language-Team: Chinese (China) (http://www.transifex.com/supertuxkart/supertuxkart/language/zh_CN/)\n" "MIME-Version: 1.0\n" @@ -3018,7 +3018,7 @@ msgstr "最大玩家数须为 2 到 12 个!" #: src/states_screens/credits.cpp:180 msgid "translator-credits" -msgstr "Launchpad Contributions:\nacme_pjz https://launchpad.net/~acme-pjz\nBen Au, 2015\nBenau, 2015-2016\nBenau, 2016\nDawid Gan https://launchpad.net/~deveee\njin https://launchpad.net/~zhangj\nJin Zhang, 2015\nlks https://launchpad.net/~lks\nluojie-dune https://launchpad.net/~luojie-dune\nSizhuang Liu https://launchpad.net/~lsz\nsohey https://launchpad.net/~sohey33\nSTK-team https://launchpad.net/~stk\nXhacker Liu https://launchpad.net/~xhacker" +msgstr "Launchpad Contributions:\n Dawid Gan https://launchpad.net/~deveee\n STK-team https://launchpad.net/~stk\n Sizhuang Liu https://launchpad.net/~lsz\n Xhacker Liu https://launchpad.net/~xhacker\n acme_pjz https://launchpad.net/~acme-pjz\n jin https://launchpad.net/~zhangj\n lks https://launchpad.net/~lks\n luojie-dune https://launchpad.net/~luojie-dune\n sohey https://launchpad.net/~sohey33" #: src/states_screens/dialogs/addons_loading.cpp:97 msgid "Update" diff --git a/data/po/zh_TW.po b/data/po/zh_TW.po index 72902a874..1d34bc562 100644 --- a/data/po/zh_TW.po +++ b/data/po/zh_TW.po @@ -15,7 +15,7 @@ msgstr "" "Project-Id-Version: SuperTuxKart\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2017-10-04 20:58-0400\n" -"PO-Revision-Date: 2017-10-24 10:06+0000\n" +"PO-Revision-Date: 2017-11-13 00:19+0000\n" "Last-Translator: Jeff Huang \n" "Language-Team: Chinese (Taiwan) (http://www.transifex.com/supertuxkart/supertuxkart/language/zh_TW/)\n" "MIME-Version: 1.0\n" @@ -3021,7 +3021,7 @@ msgstr "最大玩家數必須在 2 至 12 個之間。" #: src/states_screens/credits.cpp:180 msgid "translator-credits" -msgstr "Launchpad Contributions:\nBen Au, 2015\nBenau, 2015-2016\nBenau, 2016\nBill https://launchpad.net/~cges30901\nCarl X. Su https://launchpad.net/~bcbcarl\nHsiu-Ming Chang, 2015\nHsiu-Ming Chang, 2015-2016\nJeff Huang https://launchpad.net/~s8321414\nJeff Huang, 2015,2017\njyc https://launchpad.net/~alphabet14\nminhsien https://launchpad.net/~minhsien0330\nSTK-team https://launchpad.net/~stk\ntryneeds https://launchpad.net/~tryneeds\nWM https://launchpad.net/~wandererm\nV字龍(Vdragon) https://launchpad.net/~vdragon\nV字龍(Vdragon), 2015" +msgstr "Launchpad Contributions:\n Bill https://launchpad.net/~cges30901\n Carl X. Su https://launchpad.net/~bcbcarl\n Jeff Huang https://launchpad.net/~s8321414\n STK-team https://launchpad.net/~stk\n WM https://launchpad.net/~wandererm\n jyc https://launchpad.net/~alphabet14\n minhsien https://launchpad.net/~minhsien0330\n tryneeds https://launchpad.net/~tryneeds\n V字龍(Vdragon) https://launchpad.net/~vdragon" #: src/states_screens/dialogs/addons_loading.cpp:97 msgid "Update" diff --git a/lib/irrlicht/CMakeLists.txt b/lib/irrlicht/CMakeLists.txt index 0e403425c..3c4152908 100644 --- a/lib/irrlicht/CMakeLists.txt +++ b/lib/irrlicht/CMakeLists.txt @@ -31,24 +31,31 @@ if(NOT SERVER_ONLY) endif() endif() - if(ENABLE_WAYLAND_DEVICE) - find_package(Wayland REQUIRED) - include_directories(${WAYLAND_INCLUDE_DIR}) + if(USE_GLES2 OR ENABLE_WAYLAND_DEVICE) + find_package(EGL) - if(NOT WAYLAND_FOUND) - message(FATAL_ERROR "Wayland not found.") + if(EGL_FOUND) + include_directories(${EGL_INCLUDE_DIR}) + else() + if(USE_GLES2) + message(FATAL_ERROR "EGL not found.") + elseif(ENABLE_WAYLAND_DEVICE) + message(WARNING "EGL not found. Disable wayland support.") + set(ENABLE_WAYLAND_DEVICE OFF) + endif() endif() - - add_definitions(-D_IRR_COMPILE_WITH_WAYLAND_DEVICE_) endif() - if(USE_GLES2 OR ENABLE_WAYLAND_DEVICE) - find_package(EGL REQUIRED) - include_directories(${EGL_INCLUDE_DIR}) + if(ENABLE_WAYLAND_DEVICE) + find_package(Wayland) - if(NOT EGL_FOUND) - message(FATAL_ERROR "EGL not found.") - endif() + if(WAYLAND_FOUND) + include_directories(${WAYLAND_INCLUDE_DIR}) + add_definitions(-D_IRR_COMPILE_WITH_WAYLAND_DEVICE_) + else() + message(WARNING "Wayland not found. Disable wayland support.") + set(ENABLE_WAYLAND_DEVICE OFF) + endif() endif() else() add_definitions(-DNO_IRR_COMPILE_WITH_OPENGL_) @@ -554,6 +561,13 @@ include/vector2d.h include/vector3d.h ) +if(ENABLE_WAYLAND_DEVICE) + set(IRRLICHT_SOURCES + ${IRRLICHT_SOURCES} + source/Irrlicht/server_decoration_client_protocol.c + source/Irrlicht/xdg-shell-unstable-v6-protocol.c) +endif() + if(APPLE) set(IRRLICHT_SOURCES diff --git a/lib/irrlicht/include/IAnimatedMeshSceneNode.h b/lib/irrlicht/include/IAnimatedMeshSceneNode.h index 6929dd347..79de58e12 100644 --- a/lib/irrlicht/include/IAnimatedMeshSceneNode.h +++ b/lib/irrlicht/include/IAnimatedMeshSceneNode.h @@ -182,6 +182,7 @@ namespace scene virtual s32 getAnimationSet() const = 0; virtual void addAnimationSet(u32 start, u32 end) = 0; virtual void useAnimationSet(u32 set_num) = 0; + virtual void removeAllAnimationSet() = 0; }; } // end namespace scene diff --git a/lib/irrlicht/source/Irrlicht/CAnimatedMeshSceneNode.h b/lib/irrlicht/source/Irrlicht/CAnimatedMeshSceneNode.h index 68dc93748..8735dc538 100644 --- a/lib/irrlicht/source/Irrlicht/CAnimatedMeshSceneNode.h +++ b/lib/irrlicht/source/Irrlicht/CAnimatedMeshSceneNode.h @@ -167,6 +167,7 @@ namespace scene m_animation_set.push_back(start); m_animation_set.push_back(end); } + virtual void removeAllAnimationSet() { m_animation_set.clear(); } virtual void useAnimationSet(u32 set_num); virtual void setFrameLoopOnce(s32 begin, s32 end); protected: diff --git a/lib/irrlicht/source/Irrlicht/CContextEGL.cpp b/lib/irrlicht/source/Irrlicht/CContextEGL.cpp index b2bdef42b..23764081e 100644 --- a/lib/irrlicht/source/Irrlicht/CContextEGL.cpp +++ b/lib/irrlicht/source/Irrlicht/CContextEGL.cpp @@ -43,6 +43,7 @@ ContextManagerEGL::ContextManagerEGL() m_egl_version = 0; m_is_legacy_device = false; m_initialized = false; + eglGetPlatformDisplay = NULL; memset(&m_creation_params, 0, sizeof(ContextEGLParams)); } @@ -61,8 +62,17 @@ bool ContextManagerEGL::init(const ContextEGLParams& params) m_creation_params = params; m_egl_window = m_creation_params.window; + + bool success = initExtensions(); + + if (!success) + { + os::Printer::log("Error: Could not initialize EGL extensions.\n"); + close(); + return false; + } - bool success = initDisplay(); + success = initDisplay(); if (!success) { @@ -142,6 +152,23 @@ bool ContextManagerEGL::init(const ContextEGLParams& params) } +bool ContextManagerEGL::initExtensions() +{ + if (hasEGLExtension("EGL_KHR_platform_base")) + { + eglGetPlatformDisplay = (eglGetPlatformDisplay_t) + eglGetProcAddress("eglGetPlatformDisplay"); + } + else if (hasEGLExtension("EGL_EXT_platform_base")) + { + eglGetPlatformDisplay = (eglGetPlatformDisplay_t) + eglGetProcAddress("eglGetPlatformDisplayEXT"); + } + + return true; +} + + bool ContextManagerEGL::initDisplay() { EGLNativeDisplayType display = m_creation_params.display; @@ -150,12 +177,38 @@ bool ContextManagerEGL::initDisplay() display = EGL_DEFAULT_DISPLAY; #endif - if (display != EGL_DEFAULT_DISPLAY) + EGLenum platform = 0; + + switch (m_creation_params.platform) + { + case CEGL_PLATFORM_ANDROID: + platform = EGL_PLATFORM_ANDROID; + break; + case CEGL_PLATFORM_GBM: + platform = EGL_PLATFORM_GBM; + break; + case CEGL_PLATFORM_WAYLAND: + platform = EGL_PLATFORM_WAYLAND; + break; + case CEGL_PLATFORM_X11: + platform = EGL_PLATFORM_X11; + break; + case CEGL_PLATFORM_DEFAULT: + break; + } + + if (m_creation_params.platform != CEGL_PLATFORM_DEFAULT && + eglGetPlatformDisplay != NULL) + { + m_egl_display = eglGetPlatformDisplay(platform, (void*)display, NULL); + } + + if (m_egl_display == EGL_NO_DISPLAY) { m_egl_display = eglGetDisplay(display); } - if (m_egl_display == EGL_NO_DISPLAY) + if (m_egl_display == EGL_NO_DISPLAY && display != EGL_DEFAULT_DISPLAY) { m_egl_display = eglGetDisplay(EGL_DEFAULT_DISPLAY); } @@ -241,7 +294,7 @@ bool ContextManagerEGL::chooseConfig() config_attribs[9] = 1; //EGL_DEPTH_SIZE success = eglChooseConfig(m_egl_display, &config_attribs[0], - &m_egl_config, 1, &num_configs); + &m_egl_config, 1, &num_configs); } if (!success || m_egl_config == NULL || num_configs < 1) @@ -267,13 +320,13 @@ bool ContextManagerEGL::createSurface() std::vector attribs; - if (m_creation_params.opengl_api == CEGL_API_OPENGL) + if (m_creation_params.opengl_api == CEGL_API_OPENGL && + m_creation_params.handle_srgb == true) { if (hasEGLExtension("EGL_KHR_gl_colorspace") || m_egl_version >= 150) { attribs.push_back(EGL_GL_COLORSPACE); - attribs.push_back(m_creation_params.handle_srgb ? - EGL_GL_COLORSPACE_SRGB : EGL_GL_COLORSPACE_LINEAR); + attribs.push_back(EGL_GL_COLORSPACE_SRGB); colorspace_attr_pos = attribs.size() - 1; } } @@ -306,8 +359,7 @@ bool ContextManagerEGL::createSurface() } } - if (m_egl_surface == EGL_NO_SURFACE && colorspace_attr_pos > 0 && - m_creation_params.handle_srgb == true) + if (m_egl_surface == EGL_NO_SURFACE && colorspace_attr_pos > 0) { attribs[colorspace_attr_pos] = EGL_GL_COLORSPACE_LINEAR; diff --git a/lib/irrlicht/source/Irrlicht/CContextEGL.h b/lib/irrlicht/source/Irrlicht/CContextEGL.h index 3a3b0e823..275e18224 100644 --- a/lib/irrlicht/source/Irrlicht/CContextEGL.h +++ b/lib/irrlicht/source/Irrlicht/CContextEGL.h @@ -39,6 +39,18 @@ #ifndef EGL_GL_COLORSPACE_LINEAR #define EGL_GL_COLORSPACE_LINEAR 0x308A #endif +#ifndef EGL_PLATFORM_ANDROID +#define EGL_PLATFORM_ANDROID 0x3141 +#endif +#ifndef EGL_PLATFORM_GBM +#define EGL_PLATFORM_GBM 0x31D7 +#endif +#ifndef EGL_PLATFORM_WAYLAND +#define EGL_PLATFORM_WAYLAND 0x31D8 +#endif +#ifndef EGL_PLATFORM_X11 +#define EGL_PLATFORM_X11 0x31D5 +#endif enum ContextEGLOpenGLAPI { @@ -52,10 +64,20 @@ enum ContextEGLSurfaceType CEGL_SURFACE_PBUFFER }; +enum ContextEGLPlatform +{ + CEGL_PLATFORM_ANDROID, + CEGL_PLATFORM_GBM, + CEGL_PLATFORM_WAYLAND, + CEGL_PLATFORM_X11, + CEGL_PLATFORM_DEFAULT +}; + struct ContextEGLParams { ContextEGLOpenGLAPI opengl_api; ContextEGLSurfaceType surface_type; + ContextEGLPlatform platform; EGLNativeWindowType window; EGLNativeDisplayType display; bool force_legacy_device; @@ -81,6 +103,10 @@ private: bool m_initialized; int m_egl_version; + typedef EGLDisplay (*eglGetPlatformDisplay_t) (EGLenum, void*, const EGLint*); + eglGetPlatformDisplay_t eglGetPlatformDisplay; + + bool initExtensions(); bool initDisplay(); bool chooseConfig(); bool createSurface(); diff --git a/lib/irrlicht/source/Irrlicht/CIrrDeviceAndroid.cpp b/lib/irrlicht/source/Irrlicht/CIrrDeviceAndroid.cpp index c68d54a0a..355070877 100644 --- a/lib/irrlicht/source/Irrlicht/CIrrDeviceAndroid.cpp +++ b/lib/irrlicht/source/Irrlicht/CIrrDeviceAndroid.cpp @@ -453,6 +453,21 @@ s32 CIrrDeviceAndroid::handleInput(android_app* app, AInputEvent* androidEvent) event.TouchInput.X = AMotionEvent_getX(androidEvent, i + idx); event.TouchInput.Y = AMotionEvent_getY(androidEvent, i + idx); + if (event.TouchInput.ID >= 32) + continue; + + TouchEventData& event_data = device->TouchEventsData[event.TouchInput.ID]; + + // Don't send move event when nothing changed + if (event_data.event == event.TouchInput.Event && + event_data.x == event.TouchInput.X && + event_data.y == event.TouchInput.Y) + continue; + + event_data.event = event.TouchInput.Event; + event_data.x = event.TouchInput.X; + event_data.y = event.TouchInput.Y; + device->postEventFromUser(event); if (event.TouchInput.ID == 0) diff --git a/lib/irrlicht/source/Irrlicht/CIrrDeviceAndroid.h b/lib/irrlicht/source/Irrlicht/CIrrDeviceAndroid.h index 39e5a9e59..d0164e2bf 100644 --- a/lib/irrlicht/source/Irrlicht/CIrrDeviceAndroid.h +++ b/lib/irrlicht/source/Irrlicht/CIrrDeviceAndroid.h @@ -110,6 +110,16 @@ namespace irr static bool IsFocused; static bool IsStarted; + struct TouchEventData + { + int x; + int y; + ETOUCH_INPUT_EVENT event; + + TouchEventData() : x(0), y(0), event(ETIE_COUNT) {}; + }; + + TouchEventData TouchEventsData[32]; bool IsMousePressed; video::SExposedVideoData ExposedVideoData; diff --git a/lib/irrlicht/source/Irrlicht/CIrrDeviceLinux.cpp b/lib/irrlicht/source/Irrlicht/CIrrDeviceLinux.cpp index 5ee1d365e..1c57e0a19 100644 --- a/lib/irrlicht/source/Irrlicht/CIrrDeviceLinux.cpp +++ b/lib/irrlicht/source/Irrlicht/CIrrDeviceLinux.cpp @@ -694,6 +694,12 @@ bool CIrrDeviceLinux::createWindow() visualAttrBuffer[17] = 0; visualAttrBuffer[19] = 0; } + + if (CreationParams.HandleSRGB == false) + { + visualAttrBuffer[21] = GLX_DONT_CARE; + } + // first round with unchanged values { configList=glxChooseFBConfig(display, screennr, visualAttrBuffer,&nitems); diff --git a/lib/irrlicht/source/Irrlicht/CIrrDeviceWayland.cpp b/lib/irrlicht/source/Irrlicht/CIrrDeviceWayland.cpp index ab8087eb2..42247e4fa 100644 --- a/lib/irrlicht/source/Irrlicht/CIrrDeviceWayland.cpp +++ b/lib/irrlicht/source/Irrlicht/CIrrDeviceWayland.cpp @@ -73,6 +73,9 @@ public: static const wl_output_listener output_listener; static const wl_shell_surface_listener shell_surface_listener; static const wl_registry_listener registry_listener; + static const zxdg_shell_v6_listener xdg_shell_listener; + static const zxdg_surface_v6_listener xdg_surface_listener; + static const zxdg_toplevel_v6_listener xdg_toplevel_listener; static void pointer_enter(void* data, wl_pointer* pointer, uint32_t serial, wl_surface* surface, wl_fixed_t sx, wl_fixed_t sy) @@ -425,7 +428,7 @@ public: { CIrrDeviceWayland* device = static_cast(data); - device->m_repeat_rate = 1000 / rate; + device->m_repeat_rate = rate == 0 ? 0 : 1000 / rate; device->m_repeat_delay = delay; } @@ -510,6 +513,52 @@ public: wl_shell_surface* shell_surface) { } + + static void xdg_shell_ping(void* data, zxdg_shell_v6* shell, + uint32_t serial) + { + zxdg_shell_v6_pong(shell, serial); + } + + static void xdg_surface_configure(void* data, zxdg_surface_v6* surface, + uint32_t serial) + { + CIrrDeviceWayland* device = static_cast(data); + + zxdg_surface_v6_ack_configure(surface, serial); + + device->m_surface_configured = true; + } + + static void xdg_toplevel_configure(void* data, zxdg_toplevel_v6* toplevel, + int32_t width, int32_t height, + wl_array* states) + { + void* state_p; + + wl_array_for_each(state_p, states) + { + uint32_t state = *(uint32_t*)state_p; + + switch (state) + { + case ZXDG_TOPLEVEL_V6_STATE_FULLSCREEN: + case ZXDG_TOPLEVEL_V6_STATE_MAXIMIZED: + case ZXDG_TOPLEVEL_V6_STATE_ACTIVATED: + case ZXDG_TOPLEVEL_V6_STATE_RESIZING: + break; + default: + break; + } + } + } + + static void xdg_toplevel_close(void* data, zxdg_toplevel_v6* xdg_toplevel) + { + CIrrDeviceWayland* device = static_cast(data); + + device->closeDevice(); + } static void registry_global(void* data, wl_registry* registry, uint32_t name, const char* interface, @@ -529,27 +578,42 @@ public: } else if (interface_str == "wl_shell") { - device->m_shell = static_cast(wl_registry_bind(registry, - name, &wl_shell_interface, 1)); + device->m_has_wl_shell = true; + device->m_wl_shell_name = name; } else if (interface_str == "wl_seat") { device->m_seat = static_cast(wl_registry_bind(registry, name, &wl_seat_interface, version < 4 ? version : 4)); + wl_seat_add_listener(device->m_seat, &seat_listener, device); } else if (interface_str == "wl_shm") { - device->m_shm = static_cast(wl_registry_bind(registry, name, - &wl_shm_interface, 1)); + device->m_shm = static_cast(wl_registry_bind(registry, + name, &wl_shm_interface, 1)); } else if (interface_str == "wl_output") { - device->m_output = static_cast(wl_registry_bind(registry, - name, &wl_output_interface, 2)); + device->m_output = static_cast(wl_registry_bind( + registry, name, &wl_output_interface, + version < 2 ? version : 2)); + wl_output_add_listener(device->m_output, &output_listener, device); } + else if (interface_str == "org_kde_kwin_server_decoration_manager") + { + device->m_decoration_manager = + static_cast( + wl_registry_bind(registry, name, + &org_kde_kwin_server_decoration_manager_interface, 1)); + } + else if (interface_str == "zxdg_shell_v6") + { + device->m_has_xdg_shell = true; + device->m_xdg_shell_name = name; + } } static void registry_global_remove(void* data, wl_registry* registry, @@ -604,6 +668,22 @@ const wl_registry_listener WaylandCallbacks::registry_listener = WaylandCallbacks::registry_global_remove }; +const zxdg_shell_v6_listener WaylandCallbacks::xdg_shell_listener = +{ + WaylandCallbacks::xdg_shell_ping +}; + +const zxdg_surface_v6_listener WaylandCallbacks::xdg_surface_listener = +{ + WaylandCallbacks::xdg_surface_configure +}; + +const zxdg_toplevel_v6_listener WaylandCallbacks::xdg_toplevel_listener = +{ + WaylandCallbacks::xdg_toplevel_configure, + WaylandCallbacks::xdg_toplevel_close +}; + bool CIrrDeviceWayland::isWaylandDeviceWorking() @@ -624,10 +704,6 @@ bool CIrrDeviceWayland::isWaylandDeviceWorking() CIrrDeviceWayland::CIrrDeviceWayland(const SIrrlichtCreationParameters& params) : CIrrDeviceStub(params) { - #ifdef _DEBUG - setDebugName("CIrrDeviceWayland"); - #endif - m_compositor = NULL; m_cursor = NULL; m_cursor_theme = NULL; @@ -638,13 +714,26 @@ CIrrDeviceWayland::CIrrDeviceWayland(const SIrrlichtCreationParameters& params) m_pointer = NULL; m_registry = NULL; m_seat = NULL; - m_shell = NULL; - m_shell_surface = NULL; m_shm = NULL; m_cursor_surface = NULL; m_surface = NULL; m_enter_serial = 0; + m_shell = NULL; + m_shell_surface = NULL; + m_has_wl_shell = false; + m_wl_shell_name = 0; + + m_xdg_shell = NULL; + m_xdg_surface = NULL; + m_xdg_toplevel = NULL; + m_has_xdg_shell = false; + m_surface_configured = false; + m_xdg_shell_name = 0; + + m_decoration_manager = NULL; + m_decoration = NULL; + m_xkb_context = NULL; m_xkb_compose_table = NULL; m_xkb_compose_state = NULL; @@ -669,6 +758,10 @@ CIrrDeviceWayland::CIrrDeviceWayland(const SIrrlichtCreationParameters& params) m_height = params.WindowSize.Height; m_window_has_focus = false; m_window_minimized = false; + + #ifdef _DEBUG + setDebugName("CIrrDeviceWayland"); + #endif utsname LinuxInfo; uname(&LinuxInfo); @@ -688,36 +781,30 @@ CIrrDeviceWayland::CIrrDeviceWayland(const SIrrlichtCreationParameters& params) CursorControl = new CCursorControl(this); createKeyMap(); - - m_display = wl_display_connect(NULL); - m_registry = wl_display_get_registry(m_display); - wl_registry_add_listener(m_registry, &WaylandCallbacks::registry_listener, this); - wl_display_dispatch(m_display); - - m_xkb_context = xkb_context_new(XKB_CONTEXT_NO_FLAGS); - - if (CreationParams.DriverType != video::EDT_NULL) - { - if (!createWindow()) - return; - } + + bool success = initWayland(); + + if (!success) + return; createDriver(); if (VideoDriver) + { createGUIAndScene(); - - wl_display_dispatch(m_display); + } } -//! destructor CIrrDeviceWayland::~CIrrDeviceWayland() { delete m_egl_context; - if (m_egl_window) - wl_egl_window_destroy(m_egl_window); - + if (m_decoration) + org_kde_kwin_server_decoration_destroy(m_decoration); + + if (m_decoration_manager) + org_kde_kwin_server_decoration_manager_destroy(m_decoration_manager); + if (m_keyboard) wl_keyboard_destroy(m_keyboard); @@ -729,15 +816,27 @@ CIrrDeviceWayland::~CIrrDeviceWayland() if (m_cursor_theme) wl_cursor_theme_destroy(m_cursor_theme); + + if (m_xdg_toplevel) + zxdg_toplevel_v6_destroy(m_xdg_toplevel); + if (m_xdg_surface) + zxdg_surface_v6_destroy(m_xdg_surface); + + if (m_xdg_shell) + zxdg_shell_v6_destroy(m_xdg_shell); + if (m_shell_surface) wl_shell_surface_destroy(m_shell_surface); - if (m_surface) - wl_surface_destroy(m_surface); - if (m_shell) wl_shell_destroy(m_shell); + + if (m_egl_window) + wl_egl_window_destroy(m_egl_window); + + if (m_surface) + wl_surface_destroy(m_surface); if (m_shm) wl_shm_destroy(m_shm); @@ -769,12 +868,80 @@ CIrrDeviceWayland::~CIrrDeviceWayland() if (m_xkb_context) xkb_context_unref(m_xkb_context); - wl_display_flush(m_display); - wl_display_disconnect(m_display); + if (m_display) + { + wl_display_flush(m_display); + wl_display_disconnect(m_display); + } closeJoysticks(); } +bool CIrrDeviceWayland::initWayland() +{ + m_display = wl_display_connect(NULL); + + if (m_display == NULL) + { + os::Printer::log("Coudn't open display.", ELL_ERROR); + return false; + } + + m_xkb_context = xkb_context_new(XKB_CONTEXT_NO_FLAGS); + + if (m_xkb_context == NULL) + { + os::Printer::log("Coudn't create xkb context.", ELL_ERROR); + return false; + } + + m_registry = wl_display_get_registry(m_display); + wl_registry_add_listener(m_registry, &WaylandCallbacks::registry_listener, + this); + + wl_display_dispatch(m_display); + wl_display_roundtrip(m_display); + + if (m_compositor == NULL || m_seat == NULL || m_output == NULL) + { + os::Printer::log("Important protocols are not available.", ELL_ERROR); + return false; + } + + if (!m_has_wl_shell && !m_has_xdg_shell) + { + os::Printer::log("Shell protocol is not available.", ELL_ERROR); + return false; + } + + if (CreationParams.DriverType != video::EDT_NULL) + { + if (m_has_xdg_shell) + { + m_xdg_shell = static_cast(wl_registry_bind( + m_registry, m_xdg_shell_name, &zxdg_shell_v6_interface, 1)); + + zxdg_shell_v6_add_listener(m_xdg_shell, + &WaylandCallbacks::xdg_shell_listener, this); + } + else if (m_has_wl_shell) + { + m_shell = static_cast(wl_registry_bind(m_registry, + m_wl_shell_name, &wl_shell_interface, 1)); + } + + bool success = createWindow(); + + if (!success) + { + os::Printer::log("Couldn't create window.", ELL_ERROR); + return false; + } + } + + return true; +} + bool CIrrDeviceWayland::initEGL() { m_egl_window = wl_egl_window_create(m_surface, m_width, m_height); @@ -797,6 +964,7 @@ bool CIrrDeviceWayland::initEGL() egl_params.handle_srgb = CreationParams.HandleSRGB; egl_params.with_alpha_channel = CreationParams.WithAlphaChannel; egl_params.vsync_enabled = CreationParams.Vsync; + egl_params.platform = CEGL_PLATFORM_WAYLAND; egl_params.window = m_egl_window; egl_params.display = m_display; @@ -824,23 +992,7 @@ bool CIrrDeviceWayland::initEGL() bool CIrrDeviceWayland::createWindow() { m_surface = wl_compositor_create_surface(m_compositor); - m_shell_surface = wl_shell_get_shell_surface(m_shell, m_surface); - - wl_shell_surface_add_listener(m_shell_surface, - &WaylandCallbacks::shell_surface_listener, this); - - if (CreationParams.Fullscreen) - { - wl_shell_surface_set_fullscreen(m_shell_surface, - WL_SHELL_SURFACE_FULLSCREEN_METHOD_DEFAULT, 0, m_output); - } - else - { - wl_shell_surface_set_toplevel(m_shell_surface); - } - - wl_display_flush(m_display); - + bool success = initEGL(); if (!success) @@ -849,15 +1001,82 @@ bool CIrrDeviceWayland::createWindow() return false; } + if (m_xdg_shell != NULL) + { + m_xdg_surface = zxdg_shell_v6_get_xdg_surface(m_xdg_shell, m_surface); + + zxdg_surface_v6_add_listener(m_xdg_surface, + &WaylandCallbacks::xdg_surface_listener, + this); + + m_xdg_toplevel = zxdg_surface_v6_get_toplevel(m_xdg_surface); + + zxdg_toplevel_v6_add_listener(m_xdg_toplevel, + &WaylandCallbacks::xdg_toplevel_listener, + this); + + wl_surface_commit(m_surface); + + if (CreationParams.Fullscreen) + { + zxdg_toplevel_v6_set_fullscreen(m_xdg_toplevel, NULL); + } + + zxdg_surface_v6_set_window_geometry(m_xdg_surface, 0, 0, m_width, + m_height); + + while (!m_surface_configured) + { + wl_display_dispatch(m_display); + usleep(1000); + } + } + else if (m_shell != NULL) + { + m_shell_surface = wl_shell_get_shell_surface(m_shell, m_surface); + + wl_shell_surface_add_listener(m_shell_surface, + &WaylandCallbacks::shell_surface_listener, + this); + + if (CreationParams.Fullscreen) + { + wl_shell_surface_set_fullscreen(m_shell_surface, + WL_SHELL_SURFACE_FULLSCREEN_METHOD_DEFAULT, 0, m_output); + } + else + { + wl_shell_surface_set_toplevel(m_shell_surface); + } + } + else + { + os::Printer::log("Cannot create shell surface.", ELL_ERROR); + return false; + } + + if (m_decoration_manager != NULL) + { + m_decoration = org_kde_kwin_server_decoration_manager_create( + m_decoration_manager, m_surface); + } + + if (m_decoration != NULL) + { + org_kde_kwin_server_decoration_request_mode(m_decoration, + ORG_KDE_KWIN_SERVER_DECORATION_MODE_SERVER); + } + wl_region* region = wl_compositor_create_region(m_compositor); wl_region_add(region, 0, 0, m_width, m_height); wl_surface_set_opaque_region(m_surface, region); wl_region_destroy(region); - wl_display_flush(m_display); - - m_cursor_surface = wl_compositor_create_surface(m_compositor); - m_cursor_theme = wl_cursor_theme_load(NULL, 32, m_shm); + if (m_shm) + { + m_cursor_surface = wl_compositor_create_surface(m_compositor); + m_cursor_theme = wl_cursor_theme_load(NULL, 32, m_shm); + } if (!m_cursor_theme) { @@ -876,7 +1095,6 @@ bool CIrrDeviceWayland::createWindow() return true; } -//! create the driver void CIrrDeviceWayland::createDriver() { switch(CreationParams.DriverType) @@ -957,7 +1175,9 @@ bool CIrrDeviceWayland::run() } if (!Close) + { pollJoysticks(); + } return !Close; } @@ -971,7 +1191,7 @@ void CIrrDeviceWayland::yield() } //! Pause execution and let other processes to run for a specified amount of time. -void CIrrDeviceWayland::sleep(u32 timeMs, bool pauseTimer=false) +void CIrrDeviceWayland::sleep(u32 timeMs, bool pauseTimer = false) { const bool wasStopped = Timer ? Timer->isStopped() : true; @@ -980,34 +1200,46 @@ void CIrrDeviceWayland::sleep(u32 timeMs, bool pauseTimer=false) ts.tv_nsec = (long) (timeMs % 1000)* 1000000; if (pauseTimer && !wasStopped) + { Timer->stop(); + } nanosleep(&ts, NULL); if (pauseTimer && !wasStopped) + { Timer->start(); + } } //! sets the caption of the window void CIrrDeviceWayland::setWindowCaption(const wchar_t* text) { - if (!m_shell_surface) - return; - char title[1024]; wcstombs(title, text, sizeof(title)); title[1023] = '\0'; - wl_shell_surface_set_title(m_shell_surface, title); + if (m_xdg_toplevel) + { + zxdg_toplevel_v6_set_title(m_xdg_toplevel, title); + } + else if (m_shell_surface) + { + wl_shell_surface_set_title(m_shell_surface, title); + } } //! sets the class of the window void CIrrDeviceWayland::setWindowClass(const char* text) { - if (!m_shell_surface) - return; - - wl_shell_surface_set_class(m_shell_surface, text); + if (m_xdg_toplevel) + { + zxdg_toplevel_v6_set_app_id(m_xdg_toplevel, text); + } + else if (m_shell_surface) + { + wl_shell_surface_set_class(m_shell_surface, text); + } } //! presents a surface in the client area @@ -1050,6 +1282,14 @@ video::ECOLOR_FORMAT CIrrDeviceWayland::getColorFormat() const //! Sets if the window should be resizable in windowed mode. void CIrrDeviceWayland::setResizable(bool resize) { + if (m_xdg_toplevel) + { + int width = resize ? 0 : m_width; + int height = resize ? 0 : m_height; + + zxdg_toplevel_v6_set_min_size(m_xdg_toplevel, width, height); + zxdg_toplevel_v6_set_max_size(m_xdg_toplevel, width, height); + } } //! Return pointer to a list with all video modes supported by the gfx adapter. @@ -1061,16 +1301,28 @@ video::IVideoModeList* CIrrDeviceWayland::getVideoModeList() //! Minimize window void CIrrDeviceWayland::minimizeWindow() { + if (m_xdg_toplevel) + { + zxdg_toplevel_v6_set_minimized(m_xdg_toplevel); + } } //! Maximize window void CIrrDeviceWayland::maximizeWindow() { + if (m_xdg_toplevel) + { + zxdg_toplevel_v6_set_maximized(m_xdg_toplevel); + } } //! Restore original window size void CIrrDeviceWayland::restoreWindow() { + if (m_xdg_toplevel) + { + zxdg_toplevel_v6_unset_maximized(m_xdg_toplevel); + } } //! Move window to requested position diff --git a/lib/irrlicht/source/Irrlicht/CIrrDeviceWayland.h b/lib/irrlicht/source/Irrlicht/CIrrDeviceWayland.h index 0525cb6d9..93aafe71c 100644 --- a/lib/irrlicht/source/Irrlicht/CIrrDeviceWayland.h +++ b/lib/irrlicht/source/Irrlicht/CIrrDeviceWayland.h @@ -26,6 +26,8 @@ #include "CIrrDeviceStub.h" #include "IImagePresenter.h" #include "ICursorControl.h" +#include "server_decoration_client_protocol.h" +#include "xdg-shell-unstable-v6-client-protocol.h" #include #include @@ -171,12 +173,25 @@ namespace irr wl_pointer* m_pointer; wl_registry* m_registry; wl_seat* m_seat; - wl_shell* m_shell; - wl_shell_surface* m_shell_surface; wl_shm* m_shm; wl_surface* m_cursor_surface; wl_surface* m_surface; uint32_t m_enter_serial; + + wl_shell* m_shell; + wl_shell_surface* m_shell_surface; + bool m_has_wl_shell; + uint32_t m_wl_shell_name; + + zxdg_shell_v6* m_xdg_shell; + zxdg_surface_v6* m_xdg_surface; + zxdg_toplevel_v6* m_xdg_toplevel; + bool m_has_xdg_shell; + bool m_surface_configured; + uint32_t m_xdg_shell_name; + + org_kde_kwin_server_decoration_manager* m_decoration_manager; + org_kde_kwin_server_decoration* m_decoration; xkb_context* m_xkb_context; xkb_compose_table* m_xkb_compose_table; @@ -208,6 +223,7 @@ namespace irr std::vector m_modes; ContextManagerEGL* m_egl_context; + bool initWayland(); void createDriver(); void createKeyMap(); bool createWindow(); diff --git a/lib/irrlicht/source/Irrlicht/COGLES2Driver.cpp b/lib/irrlicht/source/Irrlicht/COGLES2Driver.cpp index 6921ce249..e8bbb3eb2 100644 --- a/lib/irrlicht/source/Irrlicht/COGLES2Driver.cpp +++ b/lib/irrlicht/source/Irrlicht/COGLES2Driver.cpp @@ -79,10 +79,12 @@ namespace video HDc = GetDC(data.OpenGLWin32.HWnd); egl_params.display = (NativeDisplayType)(HDc); #elif defined(_IRR_COMPILE_WITH_X11_DEVICE_) + egl_params.platform = CEGL_PLATFORM_X11; egl_params.window = (EGLNativeWindowType)(data.OpenGLLinux.X11Window); egl_params.display = (EGLNativeDisplayType)(data.OpenGLLinux.X11Display); #elif defined(_IRR_COMPILE_WITH_ANDROID_DEVICE_) - egl_params.window = ((struct android_app *)(params.PrivateData))->window; + egl_params.platform = CEGL_PLATFORM_DEFAULT; + egl_params.window = ((struct android_app *)(params.PrivateData))->window; egl_params.display = NULL; #endif diff --git a/lib/irrlicht/source/Irrlicht/CSkinnedMesh.cpp b/lib/irrlicht/source/Irrlicht/CSkinnedMesh.cpp index eb11aeaba..27850ed24 100644 --- a/lib/irrlicht/source/Irrlicht/CSkinnedMesh.cpp +++ b/lib/irrlicht/source/Irrlicht/CSkinnedMesh.cpp @@ -68,7 +68,7 @@ namespace scene //! constructor CSkinnedMesh::CSkinnedMesh() -: SkinningBuffers(0), AnimationFrames(0.f), FramesPerSecond(25.f), +: AnimationFrames(0.f), SkinningBuffers(0), FramesPerSecond(25.f), LastAnimatedFrame(-1), SkinnedLastFrame(false), InterpolationMode(EIM_LINEAR), HasAnimation(false), PreparedForSkinning(false), diff --git a/lib/irrlicht/source/Irrlicht/CSkinnedMesh.h b/lib/irrlicht/source/Irrlicht/CSkinnedMesh.h index 0dd936f0d..24d3306a7 100644 --- a/lib/irrlicht/source/Irrlicht/CSkinnedMesh.h +++ b/lib/irrlicht/source/Irrlicht/CSkinnedMesh.h @@ -175,6 +175,8 @@ namespace scene u32 getTotalJoints() const { return m_total_joints; } + f32 AnimationFrames; + private: void toStaticPose(); @@ -215,7 +217,6 @@ private: core::aabbox3d BoundingBox; - f32 AnimationFrames; f32 FramesPerSecond; f32 LastAnimatedFrame; diff --git a/lib/irrlicht/source/Irrlicht/Irrlicht.cpp b/lib/irrlicht/source/Irrlicht/Irrlicht.cpp index 7b838930c..3fb59e2c5 100644 --- a/lib/irrlicht/source/Irrlicht/Irrlicht.cpp +++ b/lib/irrlicht/source/Irrlicht/Irrlicht.cpp @@ -132,6 +132,12 @@ namespace irr if (CIrrDeviceWayland::isWaylandDeviceWorking()) { dev = new CIrrDeviceWayland(creation_params); + + if (!dev->getVideoDriver()) + { + delete dev; + dev = NULL; + } } } #endif diff --git a/lib/irrlicht/source/Irrlicht/server_decoration_client_protocol.c b/lib/irrlicht/source/Irrlicht/server_decoration_client_protocol.c new file mode 100644 index 000000000..82410f973 --- /dev/null +++ b/lib/irrlicht/source/Irrlicht/server_decoration_client_protocol.c @@ -0,0 +1,61 @@ +/* Generated by wayland-scanner 1.12.0 */ + +/* + * Copyright (C) 2015 Martin Gräßlin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 2.1 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + */ + +#include +#include +#include "wayland-util.h" + +extern const struct wl_interface org_kde_kwin_server_decoration_interface; +extern const struct wl_interface wl_surface_interface; + +static const struct wl_interface *types[] = { + NULL, + &org_kde_kwin_server_decoration_interface, + &wl_surface_interface, +}; + +static const struct wl_message org_kde_kwin_server_decoration_manager_requests[] = { + { "create", "no", types + 1 }, +}; + +static const struct wl_message org_kde_kwin_server_decoration_manager_events[] = { + { "default_mode", "u", types + 0 }, +}; + +WL_EXPORT const struct wl_interface org_kde_kwin_server_decoration_manager_interface = { + "org_kde_kwin_server_decoration_manager", 1, + 1, org_kde_kwin_server_decoration_manager_requests, + 1, org_kde_kwin_server_decoration_manager_events, +}; + +static const struct wl_message org_kde_kwin_server_decoration_requests[] = { + { "release", "", types + 0 }, + { "request_mode", "u", types + 0 }, +}; + +static const struct wl_message org_kde_kwin_server_decoration_events[] = { + { "mode", "u", types + 0 }, +}; + +WL_EXPORT const struct wl_interface org_kde_kwin_server_decoration_interface = { + "org_kde_kwin_server_decoration", 1, + 2, org_kde_kwin_server_decoration_requests, + 1, org_kde_kwin_server_decoration_events, +}; + diff --git a/lib/irrlicht/source/Irrlicht/server_decoration_client_protocol.h b/lib/irrlicht/source/Irrlicht/server_decoration_client_protocol.h new file mode 100644 index 000000000..2a6280934 --- /dev/null +++ b/lib/irrlicht/source/Irrlicht/server_decoration_client_protocol.h @@ -0,0 +1,326 @@ +/* Generated by wayland-scanner 1.12.0 */ + +#ifndef SERVER_DECORATION_CLIENT_PROTOCOL_H +#define SERVER_DECORATION_CLIENT_PROTOCOL_H + +#include +#include +#include "wayland-client.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @page page_server_decoration The server_decoration protocol + * @section page_ifaces_server_decoration Interfaces + * - @subpage page_iface_org_kde_kwin_server_decoration_manager - Server side window decoration manager + * - @subpage page_iface_org_kde_kwin_server_decoration - + * @section page_copyright_server_decoration Copyright + *
+ *
+ * Copyright (C) 2015 Martin Gräßlin
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation, either version 2.1 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program.  If not, see .
+ * 
+ */ +struct org_kde_kwin_server_decoration; +struct org_kde_kwin_server_decoration_manager; +struct wl_surface; + +/** + * @page page_iface_org_kde_kwin_server_decoration_manager org_kde_kwin_server_decoration_manager + * @section page_iface_org_kde_kwin_server_decoration_manager_desc Description + * + * This interface allows to coordinate whether the server should create + * a server-side window decoration around a wl_surface representing a + * shell surface (wl_shell_surface or similar). By announcing support + * for this interface the server indicates that it supports server + * side decorations. + * @section page_iface_org_kde_kwin_server_decoration_manager_api API + * See @ref iface_org_kde_kwin_server_decoration_manager. + */ +/** + * @defgroup iface_org_kde_kwin_server_decoration_manager The org_kde_kwin_server_decoration_manager interface + * + * This interface allows to coordinate whether the server should create + * a server-side window decoration around a wl_surface representing a + * shell surface (wl_shell_surface or similar). By announcing support + * for this interface the server indicates that it supports server + * side decorations. + */ +extern const struct wl_interface org_kde_kwin_server_decoration_manager_interface; +/** + * @page page_iface_org_kde_kwin_server_decoration org_kde_kwin_server_decoration + * @section page_iface_org_kde_kwin_server_decoration_api API + * See @ref iface_org_kde_kwin_server_decoration. + */ +/** + * @defgroup iface_org_kde_kwin_server_decoration The org_kde_kwin_server_decoration interface + */ +extern const struct wl_interface org_kde_kwin_server_decoration_interface; + +#ifndef ORG_KDE_KWIN_SERVER_DECORATION_MANAGER_MODE_ENUM +#define ORG_KDE_KWIN_SERVER_DECORATION_MANAGER_MODE_ENUM +/** + * @ingroup iface_org_kde_kwin_server_decoration_manager + * Possible values to use in request_mode and the event mode. + */ +enum org_kde_kwin_server_decoration_manager_mode { + /** + * Undecorated: The surface is not decorated at all, neither server nor client-side. An example is a popup surface which should not be decorated. + */ + ORG_KDE_KWIN_SERVER_DECORATION_MANAGER_MODE_NONE = 0, + /** + * Client-side decoration: The decoration is part of the surface and the client. + */ + ORG_KDE_KWIN_SERVER_DECORATION_MANAGER_MODE_CLIENT = 1, + /** + * Server-side decoration: The server embeds the surface into a decoration frame. + */ + ORG_KDE_KWIN_SERVER_DECORATION_MANAGER_MODE_SERVER = 2, +}; +#endif /* ORG_KDE_KWIN_SERVER_DECORATION_MANAGER_MODE_ENUM */ + +/** + * @ingroup iface_org_kde_kwin_server_decoration_manager + * @struct org_kde_kwin_server_decoration_manager_listener + */ +struct org_kde_kwin_server_decoration_manager_listener { + /** + * The default mode used on the server + * + * This event is emitted directly after binding the interface. It + * contains the default mode for the decoration. When a new server + * decoration object is created this new object will be in the + * default mode until the first request_mode is requested. + * + * The server may change the default mode at any time. + * @param mode The default decoration mode applied to newly created server decorations. + */ + void (*default_mode)(void *data, + struct org_kde_kwin_server_decoration_manager *org_kde_kwin_server_decoration_manager, + uint32_t mode); +}; + +/** + * @ingroup org_kde_kwin_server_decoration_manager_iface + */ +static inline int +org_kde_kwin_server_decoration_manager_add_listener(struct org_kde_kwin_server_decoration_manager *org_kde_kwin_server_decoration_manager, + const struct org_kde_kwin_server_decoration_manager_listener *listener, void *data) +{ + return wl_proxy_add_listener((struct wl_proxy *) org_kde_kwin_server_decoration_manager, + (void (**)(void)) listener, data); +} + +#define ORG_KDE_KWIN_SERVER_DECORATION_MANAGER_CREATE 0 + +/** + * @ingroup iface_org_kde_kwin_server_decoration_manager + */ +#define ORG_KDE_KWIN_SERVER_DECORATION_MANAGER_DEFAULT_MODE_SINCE_VERSION 1 + +/** + * @ingroup iface_org_kde_kwin_server_decoration_manager + */ +#define ORG_KDE_KWIN_SERVER_DECORATION_MANAGER_CREATE_SINCE_VERSION 1 + +/** @ingroup iface_org_kde_kwin_server_decoration_manager */ +static inline void +org_kde_kwin_server_decoration_manager_set_user_data(struct org_kde_kwin_server_decoration_manager *org_kde_kwin_server_decoration_manager, void *user_data) +{ + wl_proxy_set_user_data((struct wl_proxy *) org_kde_kwin_server_decoration_manager, user_data); +} + +/** @ingroup iface_org_kde_kwin_server_decoration_manager */ +static inline void * +org_kde_kwin_server_decoration_manager_get_user_data(struct org_kde_kwin_server_decoration_manager *org_kde_kwin_server_decoration_manager) +{ + return wl_proxy_get_user_data((struct wl_proxy *) org_kde_kwin_server_decoration_manager); +} + +static inline uint32_t +org_kde_kwin_server_decoration_manager_get_version(struct org_kde_kwin_server_decoration_manager *org_kde_kwin_server_decoration_manager) +{ + return wl_proxy_get_version((struct wl_proxy *) org_kde_kwin_server_decoration_manager); +} + +/** @ingroup iface_org_kde_kwin_server_decoration_manager */ +static inline void +org_kde_kwin_server_decoration_manager_destroy(struct org_kde_kwin_server_decoration_manager *org_kde_kwin_server_decoration_manager) +{ + wl_proxy_destroy((struct wl_proxy *) org_kde_kwin_server_decoration_manager); +} + +/** + * @ingroup iface_org_kde_kwin_server_decoration_manager + * + * When a client creates a server-side decoration object it indicates + * that it supports the protocol. The client is supposed to tell the + * server whether it wants server-side decorations or will provide + * client-side decorations. + * + * If the client does not create a server-side decoration object for + * a surface the server interprets this as lack of support for this + * protocol and considers it as client-side decorated. Nevertheless a + * client-side decorated surface should use this protocol to indicate + * to the server that it does not want a server-side deco. + */ +static inline struct org_kde_kwin_server_decoration * +org_kde_kwin_server_decoration_manager_create(struct org_kde_kwin_server_decoration_manager *org_kde_kwin_server_decoration_manager, struct wl_surface *surface) +{ + struct wl_proxy *id; + + id = wl_proxy_marshal_constructor((struct wl_proxy *) org_kde_kwin_server_decoration_manager, + ORG_KDE_KWIN_SERVER_DECORATION_MANAGER_CREATE, &org_kde_kwin_server_decoration_interface, NULL, surface); + + return (struct org_kde_kwin_server_decoration *) id; +} + +#ifndef ORG_KDE_KWIN_SERVER_DECORATION_MODE_ENUM +#define ORG_KDE_KWIN_SERVER_DECORATION_MODE_ENUM +/** + * @ingroup iface_org_kde_kwin_server_decoration + * Possible values to use in request_mode and the event mode. + */ +enum org_kde_kwin_server_decoration_mode { + /** + * Undecorated: The surface is not decorated at all, neither server nor client-side. An example is a popup surface which should not be decorated. + */ + ORG_KDE_KWIN_SERVER_DECORATION_MODE_NONE = 0, + /** + * Client-side decoration: The decoration is part of the surface and the client. + */ + ORG_KDE_KWIN_SERVER_DECORATION_MODE_CLIENT = 1, + /** + * Server-side decoration: The server embeds the surface into a decoration frame. + */ + ORG_KDE_KWIN_SERVER_DECORATION_MODE_SERVER = 2, +}; +#endif /* ORG_KDE_KWIN_SERVER_DECORATION_MODE_ENUM */ + +/** + * @ingroup iface_org_kde_kwin_server_decoration + * @struct org_kde_kwin_server_decoration_listener + */ +struct org_kde_kwin_server_decoration_listener { + /** + * The new decoration mode applied by the server + * + * This event is emitted directly after the decoration is created + * and represents the base decoration policy by the server. E.g. a + * server which wants all surfaces to be client-side decorated will + * send Client, a server which wants server-side decoration will + * send Server. + * + * The client can request a different mode through the decoration + * request. The server will acknowledge this by another event with + * the same mode. So even if a server prefers server-side + * decoration it's possible to force a client-side decoration. + * + * The server may emit this event at any time. In this case the + * client can again request a different mode. It's the + * responsibility of the server to prevent a feedback loop. + * @param mode The decoration mode applied to the surface by the server. + */ + void (*mode)(void *data, + struct org_kde_kwin_server_decoration *org_kde_kwin_server_decoration, + uint32_t mode); +}; + +/** + * @ingroup org_kde_kwin_server_decoration_iface + */ +static inline int +org_kde_kwin_server_decoration_add_listener(struct org_kde_kwin_server_decoration *org_kde_kwin_server_decoration, + const struct org_kde_kwin_server_decoration_listener *listener, void *data) +{ + return wl_proxy_add_listener((struct wl_proxy *) org_kde_kwin_server_decoration, + (void (**)(void)) listener, data); +} + +#define ORG_KDE_KWIN_SERVER_DECORATION_RELEASE 0 +#define ORG_KDE_KWIN_SERVER_DECORATION_REQUEST_MODE 1 + +/** + * @ingroup iface_org_kde_kwin_server_decoration + */ +#define ORG_KDE_KWIN_SERVER_DECORATION_MODE_SINCE_VERSION 1 + +/** + * @ingroup iface_org_kde_kwin_server_decoration + */ +#define ORG_KDE_KWIN_SERVER_DECORATION_RELEASE_SINCE_VERSION 1 +/** + * @ingroup iface_org_kde_kwin_server_decoration + */ +#define ORG_KDE_KWIN_SERVER_DECORATION_REQUEST_MODE_SINCE_VERSION 1 + +/** @ingroup iface_org_kde_kwin_server_decoration */ +static inline void +org_kde_kwin_server_decoration_set_user_data(struct org_kde_kwin_server_decoration *org_kde_kwin_server_decoration, void *user_data) +{ + wl_proxy_set_user_data((struct wl_proxy *) org_kde_kwin_server_decoration, user_data); +} + +/** @ingroup iface_org_kde_kwin_server_decoration */ +static inline void * +org_kde_kwin_server_decoration_get_user_data(struct org_kde_kwin_server_decoration *org_kde_kwin_server_decoration) +{ + return wl_proxy_get_user_data((struct wl_proxy *) org_kde_kwin_server_decoration); +} + +static inline uint32_t +org_kde_kwin_server_decoration_get_version(struct org_kde_kwin_server_decoration *org_kde_kwin_server_decoration) +{ + return wl_proxy_get_version((struct wl_proxy *) org_kde_kwin_server_decoration); +} + +/** @ingroup iface_org_kde_kwin_server_decoration */ +static inline void +org_kde_kwin_server_decoration_destroy(struct org_kde_kwin_server_decoration *org_kde_kwin_server_decoration) +{ + wl_proxy_destroy((struct wl_proxy *) org_kde_kwin_server_decoration); +} + +/** + * @ingroup iface_org_kde_kwin_server_decoration + */ +static inline void +org_kde_kwin_server_decoration_release(struct org_kde_kwin_server_decoration *org_kde_kwin_server_decoration) +{ + wl_proxy_marshal((struct wl_proxy *) org_kde_kwin_server_decoration, + ORG_KDE_KWIN_SERVER_DECORATION_RELEASE); + + wl_proxy_destroy((struct wl_proxy *) org_kde_kwin_server_decoration); +} + +/** + * @ingroup iface_org_kde_kwin_server_decoration + */ +static inline void +org_kde_kwin_server_decoration_request_mode(struct org_kde_kwin_server_decoration *org_kde_kwin_server_decoration, uint32_t mode) +{ + wl_proxy_marshal((struct wl_proxy *) org_kde_kwin_server_decoration, + ORG_KDE_KWIN_SERVER_DECORATION_REQUEST_MODE, mode); +} + +#ifdef __cplusplus +} +#endif + +#endif + + diff --git a/lib/irrlicht/source/Irrlicht/xdg-shell-unstable-v6-client-protocol.h b/lib/irrlicht/source/Irrlicht/xdg-shell-unstable-v6-client-protocol.h new file mode 100644 index 000000000..8a1fb516d --- /dev/null +++ b/lib/irrlicht/source/Irrlicht/xdg-shell-unstable-v6-client-protocol.h @@ -0,0 +1,1744 @@ +/* Generated by wayland-scanner 1.12.0 */ + +#ifndef XDG_SHELL_UNSTABLE_V6_CLIENT_PROTOCOL_H +#define XDG_SHELL_UNSTABLE_V6_CLIENT_PROTOCOL_H + +#include +#include +#include "wayland-client.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @page page_xdg_shell_unstable_v6 The xdg_shell_unstable_v6 protocol + * @section page_ifaces_xdg_shell_unstable_v6 Interfaces + * - @subpage page_iface_zxdg_shell_v6 - create desktop-style surfaces + * - @subpage page_iface_zxdg_positioner_v6 - child surface positioner + * - @subpage page_iface_zxdg_surface_v6 - desktop user interface surface base interface + * - @subpage page_iface_zxdg_toplevel_v6 - toplevel surface + * - @subpage page_iface_zxdg_popup_v6 - short-lived, popup surfaces for menus + * @section page_copyright_xdg_shell_unstable_v6 Copyright + *
+ *
+ * Copyright © 2008-2013 Kristian Høgsberg
+ * Copyright © 2013      Rafael Antognolli
+ * Copyright © 2013      Jasper St. Pierre
+ * Copyright © 2010-2013 Intel Corporation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ * 
+ */ +struct wl_output; +struct wl_seat; +struct wl_surface; +struct zxdg_popup_v6; +struct zxdg_positioner_v6; +struct zxdg_shell_v6; +struct zxdg_surface_v6; +struct zxdg_toplevel_v6; + +/** + * @page page_iface_zxdg_shell_v6 zxdg_shell_v6 + * @section page_iface_zxdg_shell_v6_desc Description + * + * xdg_shell allows clients to turn a wl_surface into a "real window" + * which can be dragged, resized, stacked, and moved around by the + * user. Everything about this interface is suited towards traditional + * desktop environments. + * @section page_iface_zxdg_shell_v6_api API + * See @ref iface_zxdg_shell_v6. + */ +/** + * @defgroup iface_zxdg_shell_v6 The zxdg_shell_v6 interface + * + * xdg_shell allows clients to turn a wl_surface into a "real window" + * which can be dragged, resized, stacked, and moved around by the + * user. Everything about this interface is suited towards traditional + * desktop environments. + */ +extern const struct wl_interface zxdg_shell_v6_interface; +/** + * @page page_iface_zxdg_positioner_v6 zxdg_positioner_v6 + * @section page_iface_zxdg_positioner_v6_desc Description + * + * The xdg_positioner provides a collection of rules for the placement of a + * child surface relative to a parent surface. Rules can be defined to ensure + * the child surface remains within the visible area's borders, and to + * specify how the child surface changes its position, such as sliding along + * an axis, or flipping around a rectangle. + * + * See the various requests for details about possible rules. + * + * At the time of the request, the compositor makes a copy of the rules + * specified by the xdg_positioner. Thus, after the request is complete the + * xdg_positioner object can be destroyed or reused; further changes to the + * object will have no effect on previous usages. + * + * For an xdg_positioner object to be considered complete, it must have a + * non-zero size set by set_size, and a non-zero anchor rectangle set by + * set_anchor_rect. Passing an incomplete xdg_positioner object when + * positioning a surface raises an error. + * @section page_iface_zxdg_positioner_v6_api API + * See @ref iface_zxdg_positioner_v6. + */ +/** + * @defgroup iface_zxdg_positioner_v6 The zxdg_positioner_v6 interface + * + * The xdg_positioner provides a collection of rules for the placement of a + * child surface relative to a parent surface. Rules can be defined to ensure + * the child surface remains within the visible area's borders, and to + * specify how the child surface changes its position, such as sliding along + * an axis, or flipping around a rectangle. + * + * See the various requests for details about possible rules. + * + * At the time of the request, the compositor makes a copy of the rules + * specified by the xdg_positioner. Thus, after the request is complete the + * xdg_positioner object can be destroyed or reused; further changes to the + * object will have no effect on previous usages. + * + * For an xdg_positioner object to be considered complete, it must have a + * non-zero size set by set_size, and a non-zero anchor rectangle set by + * set_anchor_rect. Passing an incomplete xdg_positioner object when + * positioning a surface raises an error. + */ +extern const struct wl_interface zxdg_positioner_v6_interface; +/** + * @page page_iface_zxdg_surface_v6 zxdg_surface_v6 + * @section page_iface_zxdg_surface_v6_desc Description + * + * An interface that may be implemented by a wl_surface, for + * implementations that provide a desktop-style user interface. + * + * It provides a base set of functionality required to construct user + * interface elements requiring management by the compositor, such as + * toplevel windows, menus, etc. The types of functionality are split into + * xdg_surface roles. + * + * Creating an xdg_surface does not set the role for a wl_surface. In order + * to map an xdg_surface, the client must create a role-specific object + * using, e.g., get_toplevel, get_popup. The wl_surface for any given + * xdg_surface can have at most one role, and may not be assigned any role + * not based on xdg_surface. + * + * A role must be assigned before any other requests are made to the + * xdg_surface object. + * + * The client must call wl_surface.commit on the corresponding wl_surface + * for the xdg_surface state to take effect. + * + * Creating an xdg_surface from a wl_surface which has a buffer attached or + * committed is a client error, and any attempts by a client to attach or + * manipulate a buffer prior to the first xdg_surface.configure call must + * also be treated as errors. + * + * For a surface to be mapped by the compositor, the following conditions + * must be met: (1) the client has assigned a xdg_surface based role to the + * surface, (2) the client has set and committed the xdg_surface state and + * the role dependent state to the surface and (3) the client has committed a + * buffer to the surface. + * @section page_iface_zxdg_surface_v6_api API + * See @ref iface_zxdg_surface_v6. + */ +/** + * @defgroup iface_zxdg_surface_v6 The zxdg_surface_v6 interface + * + * An interface that may be implemented by a wl_surface, for + * implementations that provide a desktop-style user interface. + * + * It provides a base set of functionality required to construct user + * interface elements requiring management by the compositor, such as + * toplevel windows, menus, etc. The types of functionality are split into + * xdg_surface roles. + * + * Creating an xdg_surface does not set the role for a wl_surface. In order + * to map an xdg_surface, the client must create a role-specific object + * using, e.g., get_toplevel, get_popup. The wl_surface for any given + * xdg_surface can have at most one role, and may not be assigned any role + * not based on xdg_surface. + * + * A role must be assigned before any other requests are made to the + * xdg_surface object. + * + * The client must call wl_surface.commit on the corresponding wl_surface + * for the xdg_surface state to take effect. + * + * Creating an xdg_surface from a wl_surface which has a buffer attached or + * committed is a client error, and any attempts by a client to attach or + * manipulate a buffer prior to the first xdg_surface.configure call must + * also be treated as errors. + * + * For a surface to be mapped by the compositor, the following conditions + * must be met: (1) the client has assigned a xdg_surface based role to the + * surface, (2) the client has set and committed the xdg_surface state and + * the role dependent state to the surface and (3) the client has committed a + * buffer to the surface. + */ +extern const struct wl_interface zxdg_surface_v6_interface; +/** + * @page page_iface_zxdg_toplevel_v6 zxdg_toplevel_v6 + * @section page_iface_zxdg_toplevel_v6_desc Description + * + * This interface defines an xdg_surface role which allows a surface to, + * among other things, set window-like properties such as maximize, + * fullscreen, and minimize, set application-specific metadata like title and + * id, and well as trigger user interactive operations such as interactive + * resize and move. + * @section page_iface_zxdg_toplevel_v6_api API + * See @ref iface_zxdg_toplevel_v6. + */ +/** + * @defgroup iface_zxdg_toplevel_v6 The zxdg_toplevel_v6 interface + * + * This interface defines an xdg_surface role which allows a surface to, + * among other things, set window-like properties such as maximize, + * fullscreen, and minimize, set application-specific metadata like title and + * id, and well as trigger user interactive operations such as interactive + * resize and move. + */ +extern const struct wl_interface zxdg_toplevel_v6_interface; +/** + * @page page_iface_zxdg_popup_v6 zxdg_popup_v6 + * @section page_iface_zxdg_popup_v6_desc Description + * + * A popup surface is a short-lived, temporary surface. It can be used to + * implement for example menus, popovers, tooltips and other similar user + * interface concepts. + * + * A popup can be made to take an explicit grab. See xdg_popup.grab for + * details. + * + * When the popup is dismissed, a popup_done event will be sent out, and at + * the same time the surface will be unmapped. See the xdg_popup.popup_done + * event for details. + * + * Explicitly destroying the xdg_popup object will also dismiss the popup and + * unmap the surface. Clients that want to dismiss the popup when another + * surface of their own is clicked should dismiss the popup using the destroy + * request. + * + * The parent surface must have either the xdg_toplevel or xdg_popup surface + * role. + * + * A newly created xdg_popup will be stacked on top of all previously created + * xdg_popup surfaces associated with the same xdg_toplevel. + * + * The parent of an xdg_popup must be mapped (see the xdg_surface + * description) before the xdg_popup itself. + * + * The x and y arguments passed when creating the popup object specify + * where the top left of the popup should be placed, relative to the + * local surface coordinates of the parent surface. See + * xdg_surface.get_popup. + * + * The client must call wl_surface.commit on the corresponding wl_surface + * for the xdg_popup state to take effect. + * @section page_iface_zxdg_popup_v6_api API + * See @ref iface_zxdg_popup_v6. + */ +/** + * @defgroup iface_zxdg_popup_v6 The zxdg_popup_v6 interface + * + * A popup surface is a short-lived, temporary surface. It can be used to + * implement for example menus, popovers, tooltips and other similar user + * interface concepts. + * + * A popup can be made to take an explicit grab. See xdg_popup.grab for + * details. + * + * When the popup is dismissed, a popup_done event will be sent out, and at + * the same time the surface will be unmapped. See the xdg_popup.popup_done + * event for details. + * + * Explicitly destroying the xdg_popup object will also dismiss the popup and + * unmap the surface. Clients that want to dismiss the popup when another + * surface of their own is clicked should dismiss the popup using the destroy + * request. + * + * The parent surface must have either the xdg_toplevel or xdg_popup surface + * role. + * + * A newly created xdg_popup will be stacked on top of all previously created + * xdg_popup surfaces associated with the same xdg_toplevel. + * + * The parent of an xdg_popup must be mapped (see the xdg_surface + * description) before the xdg_popup itself. + * + * The x and y arguments passed when creating the popup object specify + * where the top left of the popup should be placed, relative to the + * local surface coordinates of the parent surface. See + * xdg_surface.get_popup. + * + * The client must call wl_surface.commit on the corresponding wl_surface + * for the xdg_popup state to take effect. + */ +extern const struct wl_interface zxdg_popup_v6_interface; + +#ifndef ZXDG_SHELL_V6_ERROR_ENUM +#define ZXDG_SHELL_V6_ERROR_ENUM +enum zxdg_shell_v6_error { + /** + * given wl_surface has another role + */ + ZXDG_SHELL_V6_ERROR_ROLE = 0, + /** + * xdg_shell was destroyed before children + */ + ZXDG_SHELL_V6_ERROR_DEFUNCT_SURFACES = 1, + /** + * the client tried to map or destroy a non-topmost popup + */ + ZXDG_SHELL_V6_ERROR_NOT_THE_TOPMOST_POPUP = 2, + /** + * the client specified an invalid popup parent surface + */ + ZXDG_SHELL_V6_ERROR_INVALID_POPUP_PARENT = 3, + /** + * the client provided an invalid surface state + */ + ZXDG_SHELL_V6_ERROR_INVALID_SURFACE_STATE = 4, + /** + * the client provided an invalid positioner + */ + ZXDG_SHELL_V6_ERROR_INVALID_POSITIONER = 5, +}; +#endif /* ZXDG_SHELL_V6_ERROR_ENUM */ + +/** + * @ingroup iface_zxdg_shell_v6 + * @struct zxdg_shell_v6_listener + */ +struct zxdg_shell_v6_listener { + /** + * check if the client is alive + * + * The ping event asks the client if it's still alive. Pass the + * serial specified in the event back to the compositor by sending + * a "pong" request back with the specified serial. See + * xdg_shell.ping. + * + * Compositors can use this to determine if the client is still + * alive. It's unspecified what will happen if the client doesn't + * respond to the ping request, or in what timeframe. Clients + * should try to respond in a reasonable amount of time. + * + * A compositor is free to ping in any way it wants, but a client + * must always respond to any xdg_shell object it created. + * @param serial pass this to the pong request + */ + void (*ping)(void *data, + struct zxdg_shell_v6 *zxdg_shell_v6, + uint32_t serial); +}; + +/** + * @ingroup zxdg_shell_v6_iface + */ +static inline int +zxdg_shell_v6_add_listener(struct zxdg_shell_v6 *zxdg_shell_v6, + const struct zxdg_shell_v6_listener *listener, void *data) +{ + return wl_proxy_add_listener((struct wl_proxy *) zxdg_shell_v6, + (void (**)(void)) listener, data); +} + +#define ZXDG_SHELL_V6_DESTROY 0 +#define ZXDG_SHELL_V6_CREATE_POSITIONER 1 +#define ZXDG_SHELL_V6_GET_XDG_SURFACE 2 +#define ZXDG_SHELL_V6_PONG 3 + +/** + * @ingroup iface_zxdg_shell_v6 + */ +#define ZXDG_SHELL_V6_PING_SINCE_VERSION 1 + +/** + * @ingroup iface_zxdg_shell_v6 + */ +#define ZXDG_SHELL_V6_DESTROY_SINCE_VERSION 1 +/** + * @ingroup iface_zxdg_shell_v6 + */ +#define ZXDG_SHELL_V6_CREATE_POSITIONER_SINCE_VERSION 1 +/** + * @ingroup iface_zxdg_shell_v6 + */ +#define ZXDG_SHELL_V6_GET_XDG_SURFACE_SINCE_VERSION 1 +/** + * @ingroup iface_zxdg_shell_v6 + */ +#define ZXDG_SHELL_V6_PONG_SINCE_VERSION 1 + +/** @ingroup iface_zxdg_shell_v6 */ +static inline void +zxdg_shell_v6_set_user_data(struct zxdg_shell_v6 *zxdg_shell_v6, void *user_data) +{ + wl_proxy_set_user_data((struct wl_proxy *) zxdg_shell_v6, user_data); +} + +/** @ingroup iface_zxdg_shell_v6 */ +static inline void * +zxdg_shell_v6_get_user_data(struct zxdg_shell_v6 *zxdg_shell_v6) +{ + return wl_proxy_get_user_data((struct wl_proxy *) zxdg_shell_v6); +} + +static inline uint32_t +zxdg_shell_v6_get_version(struct zxdg_shell_v6 *zxdg_shell_v6) +{ + return wl_proxy_get_version((struct wl_proxy *) zxdg_shell_v6); +} + +/** + * @ingroup iface_zxdg_shell_v6 + * + * Destroy this xdg_shell object. + * + * Destroying a bound xdg_shell object while there are surfaces + * still alive created by this xdg_shell object instance is illegal + * and will result in a protocol error. + */ +static inline void +zxdg_shell_v6_destroy(struct zxdg_shell_v6 *zxdg_shell_v6) +{ + wl_proxy_marshal((struct wl_proxy *) zxdg_shell_v6, + ZXDG_SHELL_V6_DESTROY); + + wl_proxy_destroy((struct wl_proxy *) zxdg_shell_v6); +} + +/** + * @ingroup iface_zxdg_shell_v6 + * + * Create a positioner object. A positioner object is used to position + * surfaces relative to some parent surface. See the interface description + * and xdg_surface.get_popup for details. + */ +static inline struct zxdg_positioner_v6 * +zxdg_shell_v6_create_positioner(struct zxdg_shell_v6 *zxdg_shell_v6) +{ + struct wl_proxy *id; + + id = wl_proxy_marshal_constructor((struct wl_proxy *) zxdg_shell_v6, + ZXDG_SHELL_V6_CREATE_POSITIONER, &zxdg_positioner_v6_interface, NULL); + + return (struct zxdg_positioner_v6 *) id; +} + +/** + * @ingroup iface_zxdg_shell_v6 + * + * This creates an xdg_surface for the given surface. While xdg_surface + * itself is not a role, the corresponding surface may only be assigned + * a role extending xdg_surface, such as xdg_toplevel or xdg_popup. + * + * This creates an xdg_surface for the given surface. An xdg_surface is + * used as basis to define a role to a given surface, such as xdg_toplevel + * or xdg_popup. It also manages functionality shared between xdg_surface + * based surface roles. + * + * See the documentation of xdg_surface for more details about what an + * xdg_surface is and how it is used. + */ +static inline struct zxdg_surface_v6 * +zxdg_shell_v6_get_xdg_surface(struct zxdg_shell_v6 *zxdg_shell_v6, struct wl_surface *surface) +{ + struct wl_proxy *id; + + id = wl_proxy_marshal_constructor((struct wl_proxy *) zxdg_shell_v6, + ZXDG_SHELL_V6_GET_XDG_SURFACE, &zxdg_surface_v6_interface, NULL, surface); + + return (struct zxdg_surface_v6 *) id; +} + +/** + * @ingroup iface_zxdg_shell_v6 + * + * A client must respond to a ping event with a pong request or + * the client may be deemed unresponsive. See xdg_shell.ping. + */ +static inline void +zxdg_shell_v6_pong(struct zxdg_shell_v6 *zxdg_shell_v6, uint32_t serial) +{ + wl_proxy_marshal((struct wl_proxy *) zxdg_shell_v6, + ZXDG_SHELL_V6_PONG, serial); +} + +#ifndef ZXDG_POSITIONER_V6_ERROR_ENUM +#define ZXDG_POSITIONER_V6_ERROR_ENUM +enum zxdg_positioner_v6_error { + /** + * invalid input provided + */ + ZXDG_POSITIONER_V6_ERROR_INVALID_INPUT = 0, +}; +#endif /* ZXDG_POSITIONER_V6_ERROR_ENUM */ + +#ifndef ZXDG_POSITIONER_V6_ANCHOR_ENUM +#define ZXDG_POSITIONER_V6_ANCHOR_ENUM +enum zxdg_positioner_v6_anchor { + /** + * the center of the anchor rectangle + */ + ZXDG_POSITIONER_V6_ANCHOR_NONE = 0, + /** + * the top edge of the anchor rectangle + */ + ZXDG_POSITIONER_V6_ANCHOR_TOP = 1, + /** + * the bottom edge of the anchor rectangle + */ + ZXDG_POSITIONER_V6_ANCHOR_BOTTOM = 2, + /** + * the left edge of the anchor rectangle + */ + ZXDG_POSITIONER_V6_ANCHOR_LEFT = 4, + /** + * the right edge of the anchor rectangle + */ + ZXDG_POSITIONER_V6_ANCHOR_RIGHT = 8, +}; +#endif /* ZXDG_POSITIONER_V6_ANCHOR_ENUM */ + +#ifndef ZXDG_POSITIONER_V6_GRAVITY_ENUM +#define ZXDG_POSITIONER_V6_GRAVITY_ENUM +enum zxdg_positioner_v6_gravity { + /** + * center over the anchor edge + */ + ZXDG_POSITIONER_V6_GRAVITY_NONE = 0, + /** + * position above the anchor edge + */ + ZXDG_POSITIONER_V6_GRAVITY_TOP = 1, + /** + * position below the anchor edge + */ + ZXDG_POSITIONER_V6_GRAVITY_BOTTOM = 2, + /** + * position to the left of the anchor edge + */ + ZXDG_POSITIONER_V6_GRAVITY_LEFT = 4, + /** + * position to the right of the anchor edge + */ + ZXDG_POSITIONER_V6_GRAVITY_RIGHT = 8, +}; +#endif /* ZXDG_POSITIONER_V6_GRAVITY_ENUM */ + +#ifndef ZXDG_POSITIONER_V6_CONSTRAINT_ADJUSTMENT_ENUM +#define ZXDG_POSITIONER_V6_CONSTRAINT_ADJUSTMENT_ENUM +/** + * @ingroup iface_zxdg_positioner_v6 + * vertically resize the surface + * + * Resize the surface vertically so that it is completely unconstrained. + */ +enum zxdg_positioner_v6_constraint_adjustment { + ZXDG_POSITIONER_V6_CONSTRAINT_ADJUSTMENT_NONE = 0, + ZXDG_POSITIONER_V6_CONSTRAINT_ADJUSTMENT_SLIDE_X = 1, + ZXDG_POSITIONER_V6_CONSTRAINT_ADJUSTMENT_SLIDE_Y = 2, + ZXDG_POSITIONER_V6_CONSTRAINT_ADJUSTMENT_FLIP_X = 4, + ZXDG_POSITIONER_V6_CONSTRAINT_ADJUSTMENT_FLIP_Y = 8, + ZXDG_POSITIONER_V6_CONSTRAINT_ADJUSTMENT_RESIZE_X = 16, + ZXDG_POSITIONER_V6_CONSTRAINT_ADJUSTMENT_RESIZE_Y = 32, +}; +#endif /* ZXDG_POSITIONER_V6_CONSTRAINT_ADJUSTMENT_ENUM */ + +#define ZXDG_POSITIONER_V6_DESTROY 0 +#define ZXDG_POSITIONER_V6_SET_SIZE 1 +#define ZXDG_POSITIONER_V6_SET_ANCHOR_RECT 2 +#define ZXDG_POSITIONER_V6_SET_ANCHOR 3 +#define ZXDG_POSITIONER_V6_SET_GRAVITY 4 +#define ZXDG_POSITIONER_V6_SET_CONSTRAINT_ADJUSTMENT 5 +#define ZXDG_POSITIONER_V6_SET_OFFSET 6 + + +/** + * @ingroup iface_zxdg_positioner_v6 + */ +#define ZXDG_POSITIONER_V6_DESTROY_SINCE_VERSION 1 +/** + * @ingroup iface_zxdg_positioner_v6 + */ +#define ZXDG_POSITIONER_V6_SET_SIZE_SINCE_VERSION 1 +/** + * @ingroup iface_zxdg_positioner_v6 + */ +#define ZXDG_POSITIONER_V6_SET_ANCHOR_RECT_SINCE_VERSION 1 +/** + * @ingroup iface_zxdg_positioner_v6 + */ +#define ZXDG_POSITIONER_V6_SET_ANCHOR_SINCE_VERSION 1 +/** + * @ingroup iface_zxdg_positioner_v6 + */ +#define ZXDG_POSITIONER_V6_SET_GRAVITY_SINCE_VERSION 1 +/** + * @ingroup iface_zxdg_positioner_v6 + */ +#define ZXDG_POSITIONER_V6_SET_CONSTRAINT_ADJUSTMENT_SINCE_VERSION 1 +/** + * @ingroup iface_zxdg_positioner_v6 + */ +#define ZXDG_POSITIONER_V6_SET_OFFSET_SINCE_VERSION 1 + +/** @ingroup iface_zxdg_positioner_v6 */ +static inline void +zxdg_positioner_v6_set_user_data(struct zxdg_positioner_v6 *zxdg_positioner_v6, void *user_data) +{ + wl_proxy_set_user_data((struct wl_proxy *) zxdg_positioner_v6, user_data); +} + +/** @ingroup iface_zxdg_positioner_v6 */ +static inline void * +zxdg_positioner_v6_get_user_data(struct zxdg_positioner_v6 *zxdg_positioner_v6) +{ + return wl_proxy_get_user_data((struct wl_proxy *) zxdg_positioner_v6); +} + +static inline uint32_t +zxdg_positioner_v6_get_version(struct zxdg_positioner_v6 *zxdg_positioner_v6) +{ + return wl_proxy_get_version((struct wl_proxy *) zxdg_positioner_v6); +} + +/** + * @ingroup iface_zxdg_positioner_v6 + * + * Notify the compositor that the xdg_positioner will no longer be used. + */ +static inline void +zxdg_positioner_v6_destroy(struct zxdg_positioner_v6 *zxdg_positioner_v6) +{ + wl_proxy_marshal((struct wl_proxy *) zxdg_positioner_v6, + ZXDG_POSITIONER_V6_DESTROY); + + wl_proxy_destroy((struct wl_proxy *) zxdg_positioner_v6); +} + +/** + * @ingroup iface_zxdg_positioner_v6 + * + * Set the size of the surface that is to be positioned with the positioner + * object. The size is in surface-local coordinates and corresponds to the + * window geometry. See xdg_surface.set_window_geometry. + * + * If a zero or negative size is set the invalid_input error is raised. + */ +static inline void +zxdg_positioner_v6_set_size(struct zxdg_positioner_v6 *zxdg_positioner_v6, int32_t width, int32_t height) +{ + wl_proxy_marshal((struct wl_proxy *) zxdg_positioner_v6, + ZXDG_POSITIONER_V6_SET_SIZE, width, height); +} + +/** + * @ingroup iface_zxdg_positioner_v6 + * + * Specify the anchor rectangle within the parent surface that the child + * surface will be placed relative to. The rectangle is relative to the + * window geometry as defined by xdg_surface.set_window_geometry of the + * parent surface. The rectangle must be at least 1x1 large. + * + * When the xdg_positioner object is used to position a child surface, the + * anchor rectangle may not extend outside the window geometry of the + * positioned child's parent surface. + * + * If a zero or negative size is set the invalid_input error is raised. + */ +static inline void +zxdg_positioner_v6_set_anchor_rect(struct zxdg_positioner_v6 *zxdg_positioner_v6, int32_t x, int32_t y, int32_t width, int32_t height) +{ + wl_proxy_marshal((struct wl_proxy *) zxdg_positioner_v6, + ZXDG_POSITIONER_V6_SET_ANCHOR_RECT, x, y, width, height); +} + +/** + * @ingroup iface_zxdg_positioner_v6 + * + * Defines a set of edges for the anchor rectangle. These are used to + * derive an anchor point that the child surface will be positioned + * relative to. If two orthogonal edges are specified (e.g. 'top' and + * 'left'), then the anchor point will be the intersection of the edges + * (e.g. the top left position of the rectangle); otherwise, the derived + * anchor point will be centered on the specified edge, or in the center of + * the anchor rectangle if no edge is specified. + * + * If two parallel anchor edges are specified (e.g. 'left' and 'right'), + * the invalid_input error is raised. + */ +static inline void +zxdg_positioner_v6_set_anchor(struct zxdg_positioner_v6 *zxdg_positioner_v6, uint32_t anchor) +{ + wl_proxy_marshal((struct wl_proxy *) zxdg_positioner_v6, + ZXDG_POSITIONER_V6_SET_ANCHOR, anchor); +} + +/** + * @ingroup iface_zxdg_positioner_v6 + * + * Defines in what direction a surface should be positioned, relative to + * the anchor point of the parent surface. If two orthogonal gravities are + * specified (e.g. 'bottom' and 'right'), then the child surface will be + * placed in the specified direction; otherwise, the child surface will be + * centered over the anchor point on any axis that had no gravity + * specified. + * + * If two parallel gravities are specified (e.g. 'left' and 'right'), the + * invalid_input error is raised. + */ +static inline void +zxdg_positioner_v6_set_gravity(struct zxdg_positioner_v6 *zxdg_positioner_v6, uint32_t gravity) +{ + wl_proxy_marshal((struct wl_proxy *) zxdg_positioner_v6, + ZXDG_POSITIONER_V6_SET_GRAVITY, gravity); +} + +/** + * @ingroup iface_zxdg_positioner_v6 + * + * Specify how the window should be positioned if the originally intended + * position caused the surface to be constrained, meaning at least + * partially outside positioning boundaries set by the compositor. The + * adjustment is set by constructing a bitmask describing the adjustment to + * be made when the surface is constrained on that axis. + * + * If no bit for one axis is set, the compositor will assume that the child + * surface should not change its position on that axis when constrained. + * + * If more than one bit for one axis is set, the order of how adjustments + * are applied is specified in the corresponding adjustment descriptions. + * + * The default adjustment is none. + */ +static inline void +zxdg_positioner_v6_set_constraint_adjustment(struct zxdg_positioner_v6 *zxdg_positioner_v6, uint32_t constraint_adjustment) +{ + wl_proxy_marshal((struct wl_proxy *) zxdg_positioner_v6, + ZXDG_POSITIONER_V6_SET_CONSTRAINT_ADJUSTMENT, constraint_adjustment); +} + +/** + * @ingroup iface_zxdg_positioner_v6 + * + * Specify the surface position offset relative to the position of the + * anchor on the anchor rectangle and the anchor on the surface. For + * example if the anchor of the anchor rectangle is at (x, y), the surface + * has the gravity bottom|right, and the offset is (ox, oy), the calculated + * surface position will be (x + ox, y + oy). The offset position of the + * surface is the one used for constraint testing. See + * set_constraint_adjustment. + * + * An example use case is placing a popup menu on top of a user interface + * element, while aligning the user interface element of the parent surface + * with some user interface element placed somewhere in the popup surface. + */ +static inline void +zxdg_positioner_v6_set_offset(struct zxdg_positioner_v6 *zxdg_positioner_v6, int32_t x, int32_t y) +{ + wl_proxy_marshal((struct wl_proxy *) zxdg_positioner_v6, + ZXDG_POSITIONER_V6_SET_OFFSET, x, y); +} + +#ifndef ZXDG_SURFACE_V6_ERROR_ENUM +#define ZXDG_SURFACE_V6_ERROR_ENUM +enum zxdg_surface_v6_error { + ZXDG_SURFACE_V6_ERROR_NOT_CONSTRUCTED = 1, + ZXDG_SURFACE_V6_ERROR_ALREADY_CONSTRUCTED = 2, + ZXDG_SURFACE_V6_ERROR_UNCONFIGURED_BUFFER = 3, +}; +#endif /* ZXDG_SURFACE_V6_ERROR_ENUM */ + +/** + * @ingroup iface_zxdg_surface_v6 + * @struct zxdg_surface_v6_listener + */ +struct zxdg_surface_v6_listener { + /** + * suggest a surface change + * + * The configure event marks the end of a configure sequence. A + * configure sequence is a set of one or more events configuring + * the state of the xdg_surface, including the final + * xdg_surface.configure event. + * + * Where applicable, xdg_surface surface roles will during a + * configure sequence extend this event as a latched state sent as + * events before the xdg_surface.configure event. Such events + * should be considered to make up a set of atomically applied + * configuration states, where the xdg_surface.configure commits + * the accumulated state. + * + * Clients should arrange their surface for the new states, and + * then send an ack_configure request with the serial sent in this + * configure event at some point before committing the new surface. + * + * If the client receives multiple configure events before it can + * respond to one, it is free to discard all but the last event it + * received. + * @param serial serial of the configure event + */ + void (*configure)(void *data, + struct zxdg_surface_v6 *zxdg_surface_v6, + uint32_t serial); +}; + +/** + * @ingroup zxdg_surface_v6_iface + */ +static inline int +zxdg_surface_v6_add_listener(struct zxdg_surface_v6 *zxdg_surface_v6, + const struct zxdg_surface_v6_listener *listener, void *data) +{ + return wl_proxy_add_listener((struct wl_proxy *) zxdg_surface_v6, + (void (**)(void)) listener, data); +} + +#define ZXDG_SURFACE_V6_DESTROY 0 +#define ZXDG_SURFACE_V6_GET_TOPLEVEL 1 +#define ZXDG_SURFACE_V6_GET_POPUP 2 +#define ZXDG_SURFACE_V6_SET_WINDOW_GEOMETRY 3 +#define ZXDG_SURFACE_V6_ACK_CONFIGURE 4 + +/** + * @ingroup iface_zxdg_surface_v6 + */ +#define ZXDG_SURFACE_V6_CONFIGURE_SINCE_VERSION 1 + +/** + * @ingroup iface_zxdg_surface_v6 + */ +#define ZXDG_SURFACE_V6_DESTROY_SINCE_VERSION 1 +/** + * @ingroup iface_zxdg_surface_v6 + */ +#define ZXDG_SURFACE_V6_GET_TOPLEVEL_SINCE_VERSION 1 +/** + * @ingroup iface_zxdg_surface_v6 + */ +#define ZXDG_SURFACE_V6_GET_POPUP_SINCE_VERSION 1 +/** + * @ingroup iface_zxdg_surface_v6 + */ +#define ZXDG_SURFACE_V6_SET_WINDOW_GEOMETRY_SINCE_VERSION 1 +/** + * @ingroup iface_zxdg_surface_v6 + */ +#define ZXDG_SURFACE_V6_ACK_CONFIGURE_SINCE_VERSION 1 + +/** @ingroup iface_zxdg_surface_v6 */ +static inline void +zxdg_surface_v6_set_user_data(struct zxdg_surface_v6 *zxdg_surface_v6, void *user_data) +{ + wl_proxy_set_user_data((struct wl_proxy *) zxdg_surface_v6, user_data); +} + +/** @ingroup iface_zxdg_surface_v6 */ +static inline void * +zxdg_surface_v6_get_user_data(struct zxdg_surface_v6 *zxdg_surface_v6) +{ + return wl_proxy_get_user_data((struct wl_proxy *) zxdg_surface_v6); +} + +static inline uint32_t +zxdg_surface_v6_get_version(struct zxdg_surface_v6 *zxdg_surface_v6) +{ + return wl_proxy_get_version((struct wl_proxy *) zxdg_surface_v6); +} + +/** + * @ingroup iface_zxdg_surface_v6 + * + * Destroy the xdg_surface object. An xdg_surface must only be destroyed + * after its role object has been destroyed. + */ +static inline void +zxdg_surface_v6_destroy(struct zxdg_surface_v6 *zxdg_surface_v6) +{ + wl_proxy_marshal((struct wl_proxy *) zxdg_surface_v6, + ZXDG_SURFACE_V6_DESTROY); + + wl_proxy_destroy((struct wl_proxy *) zxdg_surface_v6); +} + +/** + * @ingroup iface_zxdg_surface_v6 + * + * This creates an xdg_toplevel object for the given xdg_surface and gives + * the associated wl_surface the xdg_toplevel role. + * + * See the documentation of xdg_toplevel for more details about what an + * xdg_toplevel is and how it is used. + */ +static inline struct zxdg_toplevel_v6 * +zxdg_surface_v6_get_toplevel(struct zxdg_surface_v6 *zxdg_surface_v6) +{ + struct wl_proxy *id; + + id = wl_proxy_marshal_constructor((struct wl_proxy *) zxdg_surface_v6, + ZXDG_SURFACE_V6_GET_TOPLEVEL, &zxdg_toplevel_v6_interface, NULL); + + return (struct zxdg_toplevel_v6 *) id; +} + +/** + * @ingroup iface_zxdg_surface_v6 + * + * This creates an xdg_popup object for the given xdg_surface and gives the + * associated wl_surface the xdg_popup role. + * + * See the documentation of xdg_popup for more details about what an + * xdg_popup is and how it is used. + */ +static inline struct zxdg_popup_v6 * +zxdg_surface_v6_get_popup(struct zxdg_surface_v6 *zxdg_surface_v6, struct zxdg_surface_v6 *parent, struct zxdg_positioner_v6 *positioner) +{ + struct wl_proxy *id; + + id = wl_proxy_marshal_constructor((struct wl_proxy *) zxdg_surface_v6, + ZXDG_SURFACE_V6_GET_POPUP, &zxdg_popup_v6_interface, NULL, parent, positioner); + + return (struct zxdg_popup_v6 *) id; +} + +/** + * @ingroup iface_zxdg_surface_v6 + * + * The window geometry of a surface is its "visible bounds" from the + * user's perspective. Client-side decorations often have invisible + * portions like drop-shadows which should be ignored for the + * purposes of aligning, placing and constraining windows. + * + * The window geometry is double buffered, and will be applied at the + * time wl_surface.commit of the corresponding wl_surface is called. + * + * Once the window geometry of the surface is set, it is not possible to + * unset it, and it will remain the same until set_window_geometry is + * called again, even if a new subsurface or buffer is attached. + * + * If never set, the value is the full bounds of the surface, + * including any subsurfaces. This updates dynamically on every + * commit. This unset is meant for extremely simple clients. + * + * The arguments are given in the surface-local coordinate space of + * the wl_surface associated with this xdg_surface. + * + * The width and height must be greater than zero. Setting an invalid size + * will raise an error. When applied, the effective window geometry will be + * the set window geometry clamped to the bounding rectangle of the + * combined geometry of the surface of the xdg_surface and the associated + * subsurfaces. + */ +static inline void +zxdg_surface_v6_set_window_geometry(struct zxdg_surface_v6 *zxdg_surface_v6, int32_t x, int32_t y, int32_t width, int32_t height) +{ + wl_proxy_marshal((struct wl_proxy *) zxdg_surface_v6, + ZXDG_SURFACE_V6_SET_WINDOW_GEOMETRY, x, y, width, height); +} + +/** + * @ingroup iface_zxdg_surface_v6 + * + * When a configure event is received, if a client commits the + * surface in response to the configure event, then the client + * must make an ack_configure request sometime before the commit + * request, passing along the serial of the configure event. + * + * For instance, for toplevel surfaces the compositor might use this + * information to move a surface to the top left only when the client has + * drawn itself for the maximized or fullscreen state. + * + * If the client receives multiple configure events before it + * can respond to one, it only has to ack the last configure event. + * + * A client is not required to commit immediately after sending + * an ack_configure request - it may even ack_configure several times + * before its next surface commit. + * + * A client may send multiple ack_configure requests before committing, but + * only the last request sent before a commit indicates which configure + * event the client really is responding to. + */ +static inline void +zxdg_surface_v6_ack_configure(struct zxdg_surface_v6 *zxdg_surface_v6, uint32_t serial) +{ + wl_proxy_marshal((struct wl_proxy *) zxdg_surface_v6, + ZXDG_SURFACE_V6_ACK_CONFIGURE, serial); +} + +#ifndef ZXDG_TOPLEVEL_V6_RESIZE_EDGE_ENUM +#define ZXDG_TOPLEVEL_V6_RESIZE_EDGE_ENUM +/** + * @ingroup iface_zxdg_toplevel_v6 + * edge values for resizing + * + * These values are used to indicate which edge of a surface + * is being dragged in a resize operation. + */ +enum zxdg_toplevel_v6_resize_edge { + ZXDG_TOPLEVEL_V6_RESIZE_EDGE_NONE = 0, + ZXDG_TOPLEVEL_V6_RESIZE_EDGE_TOP = 1, + ZXDG_TOPLEVEL_V6_RESIZE_EDGE_BOTTOM = 2, + ZXDG_TOPLEVEL_V6_RESIZE_EDGE_LEFT = 4, + ZXDG_TOPLEVEL_V6_RESIZE_EDGE_TOP_LEFT = 5, + ZXDG_TOPLEVEL_V6_RESIZE_EDGE_BOTTOM_LEFT = 6, + ZXDG_TOPLEVEL_V6_RESIZE_EDGE_RIGHT = 8, + ZXDG_TOPLEVEL_V6_RESIZE_EDGE_TOP_RIGHT = 9, + ZXDG_TOPLEVEL_V6_RESIZE_EDGE_BOTTOM_RIGHT = 10, +}; +#endif /* ZXDG_TOPLEVEL_V6_RESIZE_EDGE_ENUM */ + +#ifndef ZXDG_TOPLEVEL_V6_STATE_ENUM +#define ZXDG_TOPLEVEL_V6_STATE_ENUM +/** + * @ingroup iface_zxdg_toplevel_v6 + * the surface is now activated + * + * Client window decorations should be painted as if the window is + * active. Do not assume this means that the window actually has + * keyboard or pointer focus. + */ +enum zxdg_toplevel_v6_state { + /** + * the surface is maximized + */ + ZXDG_TOPLEVEL_V6_STATE_MAXIMIZED = 1, + /** + * the surface is fullscreen + */ + ZXDG_TOPLEVEL_V6_STATE_FULLSCREEN = 2, + /** + * the surface is being resized + */ + ZXDG_TOPLEVEL_V6_STATE_RESIZING = 3, + /** + * the surface is now activated + */ + ZXDG_TOPLEVEL_V6_STATE_ACTIVATED = 4, +}; +#endif /* ZXDG_TOPLEVEL_V6_STATE_ENUM */ + +/** + * @ingroup iface_zxdg_toplevel_v6 + * @struct zxdg_toplevel_v6_listener + */ +struct zxdg_toplevel_v6_listener { + /** + * suggest a surface change + * + * This configure event asks the client to resize its toplevel + * surface or to change its state. The configured state should not + * be applied immediately. See xdg_surface.configure for details. + * + * The width and height arguments specify a hint to the window + * about how its surface should be resized in window geometry + * coordinates. See set_window_geometry. + * + * If the width or height arguments are zero, it means the client + * should decide its own window dimension. This may happen when the + * compositor need to configure the state of the surface but + * doesn't have any information about any previous or expected + * dimension. + * + * The states listed in the event specify how the width/height + * arguments should be interpreted, and possibly how it should be + * drawn. + * + * Clients must send an ack_configure in response to this event. + * See xdg_surface.configure and xdg_surface.ack_configure for + * details. + */ + void (*configure)(void *data, + struct zxdg_toplevel_v6 *zxdg_toplevel_v6, + int32_t width, + int32_t height, + struct wl_array *states); + /** + * surface wants to be closed + * + * The close event is sent by the compositor when the user wants + * the surface to be closed. This should be equivalent to the user + * clicking the close button in client-side decorations, if your + * application has any... + * + * This is only a request that the user intends to close your + * window. The client may choose to ignore this request, or show a + * dialog to ask the user to save their data... + */ + void (*close)(void *data, + struct zxdg_toplevel_v6 *zxdg_toplevel_v6); +}; + +/** + * @ingroup zxdg_toplevel_v6_iface + */ +static inline int +zxdg_toplevel_v6_add_listener(struct zxdg_toplevel_v6 *zxdg_toplevel_v6, + const struct zxdg_toplevel_v6_listener *listener, void *data) +{ + return wl_proxy_add_listener((struct wl_proxy *) zxdg_toplevel_v6, + (void (**)(void)) listener, data); +} + +#define ZXDG_TOPLEVEL_V6_DESTROY 0 +#define ZXDG_TOPLEVEL_V6_SET_PARENT 1 +#define ZXDG_TOPLEVEL_V6_SET_TITLE 2 +#define ZXDG_TOPLEVEL_V6_SET_APP_ID 3 +#define ZXDG_TOPLEVEL_V6_SHOW_WINDOW_MENU 4 +#define ZXDG_TOPLEVEL_V6_MOVE 5 +#define ZXDG_TOPLEVEL_V6_RESIZE 6 +#define ZXDG_TOPLEVEL_V6_SET_MAX_SIZE 7 +#define ZXDG_TOPLEVEL_V6_SET_MIN_SIZE 8 +#define ZXDG_TOPLEVEL_V6_SET_MAXIMIZED 9 +#define ZXDG_TOPLEVEL_V6_UNSET_MAXIMIZED 10 +#define ZXDG_TOPLEVEL_V6_SET_FULLSCREEN 11 +#define ZXDG_TOPLEVEL_V6_UNSET_FULLSCREEN 12 +#define ZXDG_TOPLEVEL_V6_SET_MINIMIZED 13 + +/** + * @ingroup iface_zxdg_toplevel_v6 + */ +#define ZXDG_TOPLEVEL_V6_CONFIGURE_SINCE_VERSION 1 +/** + * @ingroup iface_zxdg_toplevel_v6 + */ +#define ZXDG_TOPLEVEL_V6_CLOSE_SINCE_VERSION 1 + +/** + * @ingroup iface_zxdg_toplevel_v6 + */ +#define ZXDG_TOPLEVEL_V6_DESTROY_SINCE_VERSION 1 +/** + * @ingroup iface_zxdg_toplevel_v6 + */ +#define ZXDG_TOPLEVEL_V6_SET_PARENT_SINCE_VERSION 1 +/** + * @ingroup iface_zxdg_toplevel_v6 + */ +#define ZXDG_TOPLEVEL_V6_SET_TITLE_SINCE_VERSION 1 +/** + * @ingroup iface_zxdg_toplevel_v6 + */ +#define ZXDG_TOPLEVEL_V6_SET_APP_ID_SINCE_VERSION 1 +/** + * @ingroup iface_zxdg_toplevel_v6 + */ +#define ZXDG_TOPLEVEL_V6_SHOW_WINDOW_MENU_SINCE_VERSION 1 +/** + * @ingroup iface_zxdg_toplevel_v6 + */ +#define ZXDG_TOPLEVEL_V6_MOVE_SINCE_VERSION 1 +/** + * @ingroup iface_zxdg_toplevel_v6 + */ +#define ZXDG_TOPLEVEL_V6_RESIZE_SINCE_VERSION 1 +/** + * @ingroup iface_zxdg_toplevel_v6 + */ +#define ZXDG_TOPLEVEL_V6_SET_MAX_SIZE_SINCE_VERSION 1 +/** + * @ingroup iface_zxdg_toplevel_v6 + */ +#define ZXDG_TOPLEVEL_V6_SET_MIN_SIZE_SINCE_VERSION 1 +/** + * @ingroup iface_zxdg_toplevel_v6 + */ +#define ZXDG_TOPLEVEL_V6_SET_MAXIMIZED_SINCE_VERSION 1 +/** + * @ingroup iface_zxdg_toplevel_v6 + */ +#define ZXDG_TOPLEVEL_V6_UNSET_MAXIMIZED_SINCE_VERSION 1 +/** + * @ingroup iface_zxdg_toplevel_v6 + */ +#define ZXDG_TOPLEVEL_V6_SET_FULLSCREEN_SINCE_VERSION 1 +/** + * @ingroup iface_zxdg_toplevel_v6 + */ +#define ZXDG_TOPLEVEL_V6_UNSET_FULLSCREEN_SINCE_VERSION 1 +/** + * @ingroup iface_zxdg_toplevel_v6 + */ +#define ZXDG_TOPLEVEL_V6_SET_MINIMIZED_SINCE_VERSION 1 + +/** @ingroup iface_zxdg_toplevel_v6 */ +static inline void +zxdg_toplevel_v6_set_user_data(struct zxdg_toplevel_v6 *zxdg_toplevel_v6, void *user_data) +{ + wl_proxy_set_user_data((struct wl_proxy *) zxdg_toplevel_v6, user_data); +} + +/** @ingroup iface_zxdg_toplevel_v6 */ +static inline void * +zxdg_toplevel_v6_get_user_data(struct zxdg_toplevel_v6 *zxdg_toplevel_v6) +{ + return wl_proxy_get_user_data((struct wl_proxy *) zxdg_toplevel_v6); +} + +static inline uint32_t +zxdg_toplevel_v6_get_version(struct zxdg_toplevel_v6 *zxdg_toplevel_v6) +{ + return wl_proxy_get_version((struct wl_proxy *) zxdg_toplevel_v6); +} + +/** + * @ingroup iface_zxdg_toplevel_v6 + * + * Unmap and destroy the window. The window will be effectively + * hidden from the user's point of view, and all state like + * maximization, fullscreen, and so on, will be lost. + */ +static inline void +zxdg_toplevel_v6_destroy(struct zxdg_toplevel_v6 *zxdg_toplevel_v6) +{ + wl_proxy_marshal((struct wl_proxy *) zxdg_toplevel_v6, + ZXDG_TOPLEVEL_V6_DESTROY); + + wl_proxy_destroy((struct wl_proxy *) zxdg_toplevel_v6); +} + +/** + * @ingroup iface_zxdg_toplevel_v6 + * + * Set the "parent" of this surface. This window should be stacked + * above a parent. The parent surface must be mapped as long as this + * surface is mapped. + * + * Parent windows should be set on dialogs, toolboxes, or other + * "auxiliary" surfaces, so that the parent is raised when the dialog + * is raised. + */ +static inline void +zxdg_toplevel_v6_set_parent(struct zxdg_toplevel_v6 *zxdg_toplevel_v6, struct zxdg_toplevel_v6 *parent) +{ + wl_proxy_marshal((struct wl_proxy *) zxdg_toplevel_v6, + ZXDG_TOPLEVEL_V6_SET_PARENT, parent); +} + +/** + * @ingroup iface_zxdg_toplevel_v6 + * + * Set a short title for the surface. + * + * This string may be used to identify the surface in a task bar, + * window list, or other user interface elements provided by the + * compositor. + * + * The string must be encoded in UTF-8. + */ +static inline void +zxdg_toplevel_v6_set_title(struct zxdg_toplevel_v6 *zxdg_toplevel_v6, const char *title) +{ + wl_proxy_marshal((struct wl_proxy *) zxdg_toplevel_v6, + ZXDG_TOPLEVEL_V6_SET_TITLE, title); +} + +/** + * @ingroup iface_zxdg_toplevel_v6 + * + * Set an application identifier for the surface. + * + * The app ID identifies the general class of applications to which + * the surface belongs. The compositor can use this to group multiple + * surfaces together, or to determine how to launch a new application. + * + * For D-Bus activatable applications, the app ID is used as the D-Bus + * service name. + * + * The compositor shell will try to group application surfaces together + * by their app ID. As a best practice, it is suggested to select app + * ID's that match the basename of the application's .desktop file. + * For example, "org.freedesktop.FooViewer" where the .desktop file is + * "org.freedesktop.FooViewer.desktop". + * + * See the desktop-entry specification [0] for more details on + * application identifiers and how they relate to well-known D-Bus + * names and .desktop files. + * + * [0] http://standards.freedesktop.org/desktop-entry-spec/ + */ +static inline void +zxdg_toplevel_v6_set_app_id(struct zxdg_toplevel_v6 *zxdg_toplevel_v6, const char *app_id) +{ + wl_proxy_marshal((struct wl_proxy *) zxdg_toplevel_v6, + ZXDG_TOPLEVEL_V6_SET_APP_ID, app_id); +} + +/** + * @ingroup iface_zxdg_toplevel_v6 + * + * Clients implementing client-side decorations might want to show + * a context menu when right-clicking on the decorations, giving the + * user a menu that they can use to maximize or minimize the window. + * + * This request asks the compositor to pop up such a window menu at + * the given position, relative to the local surface coordinates of + * the parent surface. There are no guarantees as to what menu items + * the window menu contains. + * + * This request must be used in response to some sort of user action + * like a button press, key press, or touch down event. + */ +static inline void +zxdg_toplevel_v6_show_window_menu(struct zxdg_toplevel_v6 *zxdg_toplevel_v6, struct wl_seat *seat, uint32_t serial, int32_t x, int32_t y) +{ + wl_proxy_marshal((struct wl_proxy *) zxdg_toplevel_v6, + ZXDG_TOPLEVEL_V6_SHOW_WINDOW_MENU, seat, serial, x, y); +} + +/** + * @ingroup iface_zxdg_toplevel_v6 + * + * Start an interactive, user-driven move of the surface. + * + * This request must be used in response to some sort of user action + * like a button press, key press, or touch down event. The passed + * serial is used to determine the type of interactive move (touch, + * pointer, etc). + * + * The server may ignore move requests depending on the state of + * the surface (e.g. fullscreen or maximized), or if the passed serial + * is no longer valid. + * + * If triggered, the surface will lose the focus of the device + * (wl_pointer, wl_touch, etc) used for the move. It is up to the + * compositor to visually indicate that the move is taking place, such as + * updating a pointer cursor, during the move. There is no guarantee + * that the device focus will return when the move is completed. + */ +static inline void +zxdg_toplevel_v6_move(struct zxdg_toplevel_v6 *zxdg_toplevel_v6, struct wl_seat *seat, uint32_t serial) +{ + wl_proxy_marshal((struct wl_proxy *) zxdg_toplevel_v6, + ZXDG_TOPLEVEL_V6_MOVE, seat, serial); +} + +/** + * @ingroup iface_zxdg_toplevel_v6 + * + * Start a user-driven, interactive resize of the surface. + * + * This request must be used in response to some sort of user action + * like a button press, key press, or touch down event. The passed + * serial is used to determine the type of interactive resize (touch, + * pointer, etc). + * + * The server may ignore resize requests depending on the state of + * the surface (e.g. fullscreen or maximized). + * + * If triggered, the client will receive configure events with the + * "resize" state enum value and the expected sizes. See the "resize" + * enum value for more details about what is required. The client + * must also acknowledge configure events using "ack_configure". After + * the resize is completed, the client will receive another "configure" + * event without the resize state. + * + * If triggered, the surface also will lose the focus of the device + * (wl_pointer, wl_touch, etc) used for the resize. It is up to the + * compositor to visually indicate that the resize is taking place, + * such as updating a pointer cursor, during the resize. There is no + * guarantee that the device focus will return when the resize is + * completed. + * + * The edges parameter specifies how the surface should be resized, + * and is one of the values of the resize_edge enum. The compositor + * may use this information to update the surface position for + * example when dragging the top left corner. The compositor may also + * use this information to adapt its behavior, e.g. choose an + * appropriate cursor image. + */ +static inline void +zxdg_toplevel_v6_resize(struct zxdg_toplevel_v6 *zxdg_toplevel_v6, struct wl_seat *seat, uint32_t serial, uint32_t edges) +{ + wl_proxy_marshal((struct wl_proxy *) zxdg_toplevel_v6, + ZXDG_TOPLEVEL_V6_RESIZE, seat, serial, edges); +} + +/** + * @ingroup iface_zxdg_toplevel_v6 + * + * Set a maximum size for the window. + * + * The client can specify a maximum size so that the compositor does + * not try to configure the window beyond this size. + * + * The width and height arguments are in window geometry coordinates. + * See xdg_surface.set_window_geometry. + * + * Values set in this way are double-buffered. They will get applied + * on the next commit. + * + * The compositor can use this information to allow or disallow + * different states like maximize or fullscreen and draw accurate + * animations. + * + * Similarly, a tiling window manager may use this information to + * place and resize client windows in a more effective way. + * + * The client should not rely on the compositor to obey the maximum + * size. The compositor may decide to ignore the values set by the + * client and request a larger size. + * + * If never set, or a value of zero in the request, means that the + * client has no expected maximum size in the given dimension. + * As a result, a client wishing to reset the maximum size + * to an unspecified state can use zero for width and height in the + * request. + * + * Requesting a maximum size to be smaller than the minimum size of + * a surface is illegal and will result in a protocol error. + * + * The width and height must be greater than or equal to zero. Using + * strictly negative values for width and height will result in a + * protocol error. + */ +static inline void +zxdg_toplevel_v6_set_max_size(struct zxdg_toplevel_v6 *zxdg_toplevel_v6, int32_t width, int32_t height) +{ + wl_proxy_marshal((struct wl_proxy *) zxdg_toplevel_v6, + ZXDG_TOPLEVEL_V6_SET_MAX_SIZE, width, height); +} + +/** + * @ingroup iface_zxdg_toplevel_v6 + * + * Set a minimum size for the window. + * + * The client can specify a minimum size so that the compositor does + * not try to configure the window below this size. + * + * The width and height arguments are in window geometry coordinates. + * See xdg_surface.set_window_geometry. + * + * Values set in this way are double-buffered. They will get applied + * on the next commit. + * + * The compositor can use this information to allow or disallow + * different states like maximize or fullscreen and draw accurate + * animations. + * + * Similarly, a tiling window manager may use this information to + * place and resize client windows in a more effective way. + * + * The client should not rely on the compositor to obey the minimum + * size. The compositor may decide to ignore the values set by the + * client and request a smaller size. + * + * If never set, or a value of zero in the request, means that the + * client has no expected minimum size in the given dimension. + * As a result, a client wishing to reset the minimum size + * to an unspecified state can use zero for width and height in the + * request. + * + * Requesting a minimum size to be larger than the maximum size of + * a surface is illegal and will result in a protocol error. + * + * The width and height must be greater than or equal to zero. Using + * strictly negative values for width and height will result in a + * protocol error. + */ +static inline void +zxdg_toplevel_v6_set_min_size(struct zxdg_toplevel_v6 *zxdg_toplevel_v6, int32_t width, int32_t height) +{ + wl_proxy_marshal((struct wl_proxy *) zxdg_toplevel_v6, + ZXDG_TOPLEVEL_V6_SET_MIN_SIZE, width, height); +} + +/** + * @ingroup iface_zxdg_toplevel_v6 + * + * Maximize the surface. + * + * After requesting that the surface should be maximized, the compositor + * will respond by emitting a configure event with the "maximized" state + * and the required window geometry. The client should then update its + * content, drawing it in a maximized state, i.e. without shadow or other + * decoration outside of the window geometry. The client must also + * acknowledge the configure when committing the new content (see + * ack_configure). + * + * It is up to the compositor to decide how and where to maximize the + * surface, for example which output and what region of the screen should + * be used. + * + * If the surface was already maximized, the compositor will still emit + * a configure event with the "maximized" state. + */ +static inline void +zxdg_toplevel_v6_set_maximized(struct zxdg_toplevel_v6 *zxdg_toplevel_v6) +{ + wl_proxy_marshal((struct wl_proxy *) zxdg_toplevel_v6, + ZXDG_TOPLEVEL_V6_SET_MAXIMIZED); +} + +/** + * @ingroup iface_zxdg_toplevel_v6 + * + * Unmaximize the surface. + * + * After requesting that the surface should be unmaximized, the compositor + * will respond by emitting a configure event without the "maximized" + * state. If available, the compositor will include the window geometry + * dimensions the window had prior to being maximized in the configure + * request. The client must then update its content, drawing it in a + * regular state, i.e. potentially with shadow, etc. The client must also + * acknowledge the configure when committing the new content (see + * ack_configure). + * + * It is up to the compositor to position the surface after it was + * unmaximized; usually the position the surface had before maximizing, if + * applicable. + * + * If the surface was already not maximized, the compositor will still + * emit a configure event without the "maximized" state. + */ +static inline void +zxdg_toplevel_v6_unset_maximized(struct zxdg_toplevel_v6 *zxdg_toplevel_v6) +{ + wl_proxy_marshal((struct wl_proxy *) zxdg_toplevel_v6, + ZXDG_TOPLEVEL_V6_UNSET_MAXIMIZED); +} + +/** + * @ingroup iface_zxdg_toplevel_v6 + * + * Make the surface fullscreen. + * + * You can specify an output that you would prefer to be fullscreen. + * If this value is NULL, it's up to the compositor to choose which + * display will be used to map this surface. + * + * If the surface doesn't cover the whole output, the compositor will + * position the surface in the center of the output and compensate with + * black borders filling the rest of the output. + */ +static inline void +zxdg_toplevel_v6_set_fullscreen(struct zxdg_toplevel_v6 *zxdg_toplevel_v6, struct wl_output *output) +{ + wl_proxy_marshal((struct wl_proxy *) zxdg_toplevel_v6, + ZXDG_TOPLEVEL_V6_SET_FULLSCREEN, output); +} + +/** + * @ingroup iface_zxdg_toplevel_v6 + */ +static inline void +zxdg_toplevel_v6_unset_fullscreen(struct zxdg_toplevel_v6 *zxdg_toplevel_v6) +{ + wl_proxy_marshal((struct wl_proxy *) zxdg_toplevel_v6, + ZXDG_TOPLEVEL_V6_UNSET_FULLSCREEN); +} + +/** + * @ingroup iface_zxdg_toplevel_v6 + * + * Request that the compositor minimize your surface. There is no + * way to know if the surface is currently minimized, nor is there + * any way to unset minimization on this surface. + * + * If you are looking to throttle redrawing when minimized, please + * instead use the wl_surface.frame event for this, as this will + * also work with live previews on windows in Alt-Tab, Expose or + * similar compositor features. + */ +static inline void +zxdg_toplevel_v6_set_minimized(struct zxdg_toplevel_v6 *zxdg_toplevel_v6) +{ + wl_proxy_marshal((struct wl_proxy *) zxdg_toplevel_v6, + ZXDG_TOPLEVEL_V6_SET_MINIMIZED); +} + +#ifndef ZXDG_POPUP_V6_ERROR_ENUM +#define ZXDG_POPUP_V6_ERROR_ENUM +enum zxdg_popup_v6_error { + /** + * tried to grab after being mapped + */ + ZXDG_POPUP_V6_ERROR_INVALID_GRAB = 0, +}; +#endif /* ZXDG_POPUP_V6_ERROR_ENUM */ + +/** + * @ingroup iface_zxdg_popup_v6 + * @struct zxdg_popup_v6_listener + */ +struct zxdg_popup_v6_listener { + /** + * configure the popup surface + * + * This event asks the popup surface to configure itself given + * the configuration. The configured state should not be applied + * immediately. See xdg_surface.configure for details. + * + * The x and y arguments represent the position the popup was + * placed at given the xdg_positioner rule, relative to the upper + * left corner of the window geometry of the parent surface. + * @param x x position relative to parent surface window geometry + * @param y y position relative to parent surface window geometry + * @param width window geometry width + * @param height window geometry height + */ + void (*configure)(void *data, + struct zxdg_popup_v6 *zxdg_popup_v6, + int32_t x, + int32_t y, + int32_t width, + int32_t height); + /** + * popup interaction is done + * + * The popup_done event is sent out when a popup is dismissed by + * the compositor. The client should destroy the xdg_popup object + * at this point. + */ + void (*popup_done)(void *data, + struct zxdg_popup_v6 *zxdg_popup_v6); +}; + +/** + * @ingroup zxdg_popup_v6_iface + */ +static inline int +zxdg_popup_v6_add_listener(struct zxdg_popup_v6 *zxdg_popup_v6, + const struct zxdg_popup_v6_listener *listener, void *data) +{ + return wl_proxy_add_listener((struct wl_proxy *) zxdg_popup_v6, + (void (**)(void)) listener, data); +} + +#define ZXDG_POPUP_V6_DESTROY 0 +#define ZXDG_POPUP_V6_GRAB 1 + +/** + * @ingroup iface_zxdg_popup_v6 + */ +#define ZXDG_POPUP_V6_CONFIGURE_SINCE_VERSION 1 +/** + * @ingroup iface_zxdg_popup_v6 + */ +#define ZXDG_POPUP_V6_POPUP_DONE_SINCE_VERSION 1 + +/** + * @ingroup iface_zxdg_popup_v6 + */ +#define ZXDG_POPUP_V6_DESTROY_SINCE_VERSION 1 +/** + * @ingroup iface_zxdg_popup_v6 + */ +#define ZXDG_POPUP_V6_GRAB_SINCE_VERSION 1 + +/** @ingroup iface_zxdg_popup_v6 */ +static inline void +zxdg_popup_v6_set_user_data(struct zxdg_popup_v6 *zxdg_popup_v6, void *user_data) +{ + wl_proxy_set_user_data((struct wl_proxy *) zxdg_popup_v6, user_data); +} + +/** @ingroup iface_zxdg_popup_v6 */ +static inline void * +zxdg_popup_v6_get_user_data(struct zxdg_popup_v6 *zxdg_popup_v6) +{ + return wl_proxy_get_user_data((struct wl_proxy *) zxdg_popup_v6); +} + +static inline uint32_t +zxdg_popup_v6_get_version(struct zxdg_popup_v6 *zxdg_popup_v6) +{ + return wl_proxy_get_version((struct wl_proxy *) zxdg_popup_v6); +} + +/** + * @ingroup iface_zxdg_popup_v6 + * + * This destroys the popup. Explicitly destroying the xdg_popup + * object will also dismiss the popup, and unmap the surface. + * + * If this xdg_popup is not the "topmost" popup, a protocol error + * will be sent. + */ +static inline void +zxdg_popup_v6_destroy(struct zxdg_popup_v6 *zxdg_popup_v6) +{ + wl_proxy_marshal((struct wl_proxy *) zxdg_popup_v6, + ZXDG_POPUP_V6_DESTROY); + + wl_proxy_destroy((struct wl_proxy *) zxdg_popup_v6); +} + +/** + * @ingroup iface_zxdg_popup_v6 + * + * This request makes the created popup take an explicit grab. An explicit + * grab will be dismissed when the user dismisses the popup, or when the + * client destroys the xdg_popup. This can be done by the user clicking + * outside the surface, using the keyboard, or even locking the screen + * through closing the lid or a timeout. + * + * If the compositor denies the grab, the popup will be immediately + * dismissed. + * + * This request must be used in response to some sort of user action like a + * button press, key press, or touch down event. The serial number of the + * event should be passed as 'serial'. + * + * The parent of a grabbing popup must either be an xdg_toplevel surface or + * another xdg_popup with an explicit grab. If the parent is another + * xdg_popup it means that the popups are nested, with this popup now being + * the topmost popup. + * + * Nested popups must be destroyed in the reverse order they were created + * in, e.g. the only popup you are allowed to destroy at all times is the + * topmost one. + * + * When compositors choose to dismiss a popup, they may dismiss every + * nested grabbing popup as well. When a compositor dismisses popups, it + * will follow the same dismissing order as required from the client. + * + * The parent of a grabbing popup must either be another xdg_popup with an + * active explicit grab, or an xdg_popup or xdg_toplevel, if there are no + * explicit grabs already taken. + * + * If the topmost grabbing popup is destroyed, the grab will be returned to + * the parent of the popup, if that parent previously had an explicit grab. + * + * If the parent is a grabbing popup which has already been dismissed, this + * popup will be immediately dismissed. If the parent is a popup that did + * not take an explicit grab, an error will be raised. + * + * During a popup grab, the client owning the grab will receive pointer + * and touch events for all their surfaces as normal (similar to an + * "owner-events" grab in X11 parlance), while the top most grabbing popup + * will always have keyboard focus. + */ +static inline void +zxdg_popup_v6_grab(struct zxdg_popup_v6 *zxdg_popup_v6, struct wl_seat *seat, uint32_t serial) +{ + wl_proxy_marshal((struct wl_proxy *) zxdg_popup_v6, + ZXDG_POPUP_V6_GRAB, seat, serial); +} + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/lib/irrlicht/source/Irrlicht/xdg-shell-unstable-v6-protocol.c b/lib/irrlicht/source/Irrlicht/xdg-shell-unstable-v6-protocol.c new file mode 100644 index 000000000..f579993cf --- /dev/null +++ b/lib/irrlicht/source/Irrlicht/xdg-shell-unstable-v6-protocol.c @@ -0,0 +1,162 @@ +/* Generated by wayland-scanner 1.12.0 */ + +/* + * Copyright © 2008-2013 Kristian Høgsberg + * Copyright © 2013 Rafael Antognolli + * Copyright © 2013 Jasper St. Pierre + * Copyright © 2010-2013 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ + +#include +#include +#include "wayland-util.h" + +extern const struct wl_interface wl_output_interface; +extern const struct wl_interface wl_seat_interface; +extern const struct wl_interface wl_surface_interface; +extern const struct wl_interface zxdg_popup_v6_interface; +extern const struct wl_interface zxdg_positioner_v6_interface; +extern const struct wl_interface zxdg_surface_v6_interface; +extern const struct wl_interface zxdg_toplevel_v6_interface; + +static const struct wl_interface *types[] = { + NULL, + NULL, + NULL, + NULL, + &zxdg_positioner_v6_interface, + &zxdg_surface_v6_interface, + &wl_surface_interface, + &zxdg_toplevel_v6_interface, + &zxdg_popup_v6_interface, + &zxdg_surface_v6_interface, + &zxdg_positioner_v6_interface, + &zxdg_toplevel_v6_interface, + &wl_seat_interface, + NULL, + NULL, + NULL, + &wl_seat_interface, + NULL, + &wl_seat_interface, + NULL, + NULL, + &wl_output_interface, + &wl_seat_interface, + NULL, +}; + +static const struct wl_message zxdg_shell_v6_requests[] = { + { "destroy", "", types + 0 }, + { "create_positioner", "n", types + 4 }, + { "get_xdg_surface", "no", types + 5 }, + { "pong", "u", types + 0 }, +}; + +static const struct wl_message zxdg_shell_v6_events[] = { + { "ping", "u", types + 0 }, +}; + +WL_EXPORT const struct wl_interface zxdg_shell_v6_interface = { + "zxdg_shell_v6", 1, + 4, zxdg_shell_v6_requests, + 1, zxdg_shell_v6_events, +}; + +static const struct wl_message zxdg_positioner_v6_requests[] = { + { "destroy", "", types + 0 }, + { "set_size", "ii", types + 0 }, + { "set_anchor_rect", "iiii", types + 0 }, + { "set_anchor", "u", types + 0 }, + { "set_gravity", "u", types + 0 }, + { "set_constraint_adjustment", "u", types + 0 }, + { "set_offset", "ii", types + 0 }, +}; + +WL_EXPORT const struct wl_interface zxdg_positioner_v6_interface = { + "zxdg_positioner_v6", 1, + 7, zxdg_positioner_v6_requests, + 0, NULL, +}; + +static const struct wl_message zxdg_surface_v6_requests[] = { + { "destroy", "", types + 0 }, + { "get_toplevel", "n", types + 7 }, + { "get_popup", "noo", types + 8 }, + { "set_window_geometry", "iiii", types + 0 }, + { "ack_configure", "u", types + 0 }, +}; + +static const struct wl_message zxdg_surface_v6_events[] = { + { "configure", "u", types + 0 }, +}; + +WL_EXPORT const struct wl_interface zxdg_surface_v6_interface = { + "zxdg_surface_v6", 1, + 5, zxdg_surface_v6_requests, + 1, zxdg_surface_v6_events, +}; + +static const struct wl_message zxdg_toplevel_v6_requests[] = { + { "destroy", "", types + 0 }, + { "set_parent", "?o", types + 11 }, + { "set_title", "s", types + 0 }, + { "set_app_id", "s", types + 0 }, + { "show_window_menu", "ouii", types + 12 }, + { "move", "ou", types + 16 }, + { "resize", "ouu", types + 18 }, + { "set_max_size", "ii", types + 0 }, + { "set_min_size", "ii", types + 0 }, + { "set_maximized", "", types + 0 }, + { "unset_maximized", "", types + 0 }, + { "set_fullscreen", "?o", types + 21 }, + { "unset_fullscreen", "", types + 0 }, + { "set_minimized", "", types + 0 }, +}; + +static const struct wl_message zxdg_toplevel_v6_events[] = { + { "configure", "iia", types + 0 }, + { "close", "", types + 0 }, +}; + +WL_EXPORT const struct wl_interface zxdg_toplevel_v6_interface = { + "zxdg_toplevel_v6", 1, + 14, zxdg_toplevel_v6_requests, + 2, zxdg_toplevel_v6_events, +}; + +static const struct wl_message zxdg_popup_v6_requests[] = { + { "destroy", "", types + 0 }, + { "grab", "ou", types + 22 }, +}; + +static const struct wl_message zxdg_popup_v6_events[] = { + { "configure", "iiii", types + 0 }, + { "popup_done", "", types + 0 }, +}; + +WL_EXPORT const struct wl_interface zxdg_popup_v6_interface = { + "zxdg_popup_v6", 1, + 2, zxdg_popup_v6_requests, + 2, zxdg_popup_v6_events, +}; + diff --git a/sources.cmake b/sources.cmake index d4f28ae4d..13db008ff 100644 --- a/sources.cmake +++ b/sources.cmake @@ -1,5 +1,5 @@ # Modify this file to change the last-modified date when you add/remove a file. -# This will then trigger a new cmake run automatically. +# This will then trigger a new cmake run automatically. file(GLOB_RECURSE STK_HEADERS RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "src/*.hpp") file(GLOB_RECURSE STK_SOURCES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "src/*.cpp") file(GLOB_RECURSE STK_SHADERS RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "data/shaders/*") diff --git a/src/config/user_config.cpp b/src/config/user_config.cpp index 79511fd2a..788efc0dc 100644 --- a/src/config/user_config.cpp +++ b/src/config/user_config.cpp @@ -321,7 +321,7 @@ core::stringc ListUserConfigParam::toString() const return ""; } // toString - // ============================================================================ +// ---------------------------------------------------------------------------- template MapUserConfigParam::MapUserConfigParam(const char* param_name, const char* comment) @@ -331,7 +331,7 @@ MapUserConfigParam::MapUserConfigParam(const char* param_name, if (comment != NULL) m_comment = comment; } // MapUserConfigParam - // ============================================================================ +// ---------------------------------------------------------------------------- template MapUserConfigParam::MapUserConfigParam(const char* param_name, const char* comment, @@ -345,7 +345,7 @@ MapUserConfigParam::MapUserConfigParam(const char* param_name, // add the default list va_list arguments; va_start(arguments, nb_elements); - + struct pair_type { T key; U value; }; for (int i = 0; i < nb_elements; i++) @@ -356,7 +356,7 @@ MapUserConfigParam::MapUserConfigParam(const char* param_name, va_end(arguments); // Cleans up the list } // MapUserConfigParam - // ============================================================================ +// ---------------------------------------------------------------------------- template MapUserConfigParam::MapUserConfigParam(const char* param_name, GroupUserConfigParam* group, @@ -367,7 +367,7 @@ MapUserConfigParam::MapUserConfigParam(const char* param_name, if (comment != NULL) m_comment = comment; } // MapUserConfigParam - // ============================================================================ +// ---------------------------------------------------------------------------- template MapUserConfigParam::MapUserConfigParam(const char* param_name, GroupUserConfigParam* group, @@ -382,30 +382,25 @@ MapUserConfigParam::MapUserConfigParam(const char* param_name, // add the default list va_list arguments; va_start(arguments, nb_elements); - + struct pair_type { T key; U value; }; - for (int i = 0; i < nb_elements; i++) { + for (int i = 0; i < nb_elements; i++) + { pair_type key_value_pair = va_arg(arguments, pair_type); m_elements.insert(std::pair(key_value_pair.key, key_value_pair.value)); } va_end(arguments); // Cleans up the list } // MapUserConfigParam - // ---------------------------------------------------------------------------- +// ---------------------------------------------------------------------------- template void MapUserConfigParam::write(std::ofstream& stream) const { - const int elts_amount = m_elements.size(); - // comment if (m_comment.size() > 0) stream << " \n <" << m_param_name.c_str() << "\n"; - stream << " Size=\"" << elts_amount << "\"\n"; - // actual elements - //for (int n = 0; n::write(std::ofstream& stream) const stream << " \n\n"; } // write - // ---------------------------------------------------------------------------- +// ---------------------------------------------------------------------------- template void MapUserConfigParam::findYourDataInAChildOf(const XMLNode* node) @@ -425,56 +420,30 @@ void MapUserConfigParam::findYourDataInAChildOf(const XMLNode* node) //Log::error("User Config", "Couldn't find parameter group %s", m_param_name.c_str()); return; } - - int attr_count = 0; - child->get("Size", &attr_count); - - for (const auto& kv : m_elements) - { - std::pair elt; - elt.first = kv.first; - elt.second = kv.second; - - - bool there = false; - - for (const auto& kvRHS : m_elements) - { - if (elt.second == kvRHS.second) - { - there = true; - break; - } - - } - if (!there) - { - m_elements.insert(elt); - } - } + child->get(&m_elements); } // findYourDataInAChildOf - // ---------------------------------------------------------------------------- +// ---------------------------------------------------------------------------- template void MapUserConfigParam::findYourDataInAnAttributeOf(const XMLNode* node) { } // findYourDataInAnAttributeOf - // ---------------------------------------------------------------------------- +// ---------------------------------------------------------------------------- template void MapUserConfigParam::addElement(T element, U value) { m_elements[element] = value; } // findYourDataInAnAttributeOf - // ---------------------------------------------------------------------------- +// ---------------------------------------------------------------------------- template core::stringc MapUserConfigParam::toString() const { return ""; } // toString -// ============================================================================ +// ---------------------------------------------------------------------------- IntUserConfigParam::IntUserConfigParam(int default_value, const char* param_name, const char* comment) diff --git a/src/graphics/command_buffer.cpp b/src/graphics/command_buffer.cpp index 761ae122b..3c5e9762c 100644 --- a/src/graphics/command_buffer.cpp +++ b/src/graphics/command_buffer.cpp @@ -166,7 +166,6 @@ void SolidCommandBuffer::fill(MeshMap *mesh_map) fillInstanceData (mesh_map, four_tex_material_list, InstanceTypeFourTex); - if (!CVS->supportsAsyncInstanceUpload()) glUnmapBuffer(GL_DRAW_INDIRECT_BUFFER); } //SolidCommandBuffer::fill diff --git a/src/graphics/command_buffer.hpp b/src/graphics/command_buffer.hpp index 35021a8f4..2706b9239 100644 --- a/src/graphics/command_buffer.hpp +++ b/src/graphics/command_buffer.hpp @@ -218,7 +218,6 @@ protected: mesh_map, instance_buffer); } - if (!CVS->supportsAsyncInstanceUpload()) { glUnmapBuffer(GL_ARRAY_BUFFER); diff --git a/src/graphics/glwrap.cpp b/src/graphics/glwrap.cpp index e889ade21..9bbc9c002 100644 --- a/src/graphics/glwrap.cpp +++ b/src/graphics/glwrap.cpp @@ -160,6 +160,7 @@ void initGL() { if (is_gl_init) return; + is_gl_init = true; // For Mesa extension reporting #if !defined(USE_GLES2) @@ -167,8 +168,15 @@ void initGL() glewExperimental = GL_TRUE; #endif GLenum err = glewInit(); - if (GLEW_OK != err) - Log::fatal("GLEW", "Glew initialisation failed with error %s", glewGetErrorString(err)); + + if (err == GLEW_ERROR_NO_GLX_DISPLAY) + { + Log::info("GLEW", "Glew couldn't open glx display."); + } + else if (err != GLEW_OK) + { + Log::fatal("GLEW", "Glew initialization failed with error %s", glewGetErrorString(err)); + } #else #ifdef ARB_DEBUG_OUTPUT glDebugMessageCallbackARB = (PFNGLDEBUGMESSAGECALLBACKKHRPROC)eglGetProcAddress("glDebugMessageCallbackKHR"); diff --git a/src/graphics/sp_mesh_loader.cpp b/src/graphics/sp_mesh_loader.cpp index fec1a8e2c..57c1cd614 100644 --- a/src/graphics/sp_mesh_loader.cpp +++ b/src/graphics/sp_mesh_loader.cpp @@ -20,6 +20,7 @@ #include "utils/constants.hpp" #include "utils/mini_glm.hpp" +#include "../../lib/irrlicht/source/Irrlicht/CSkinnedMesh.h" const uint8_t VERSION_NOW = 1; #include @@ -47,7 +48,7 @@ scene::IAnimatedMesh* SPMeshLoader::createMesh(io::IReadFile* f) } m_bind_frame = 0; m_joint_count = 0; - //m_frame_count = 0; + m_frame_count = 0; m_mesh = NULL; m_mesh = m_scene_manager->createSkinnedMesh(); io::IFileSystem* fs = m_scene_manager->getFileSystem(); @@ -196,6 +197,9 @@ scene::IAnimatedMesh* SPMeshLoader::createMesh(io::IReadFile* f) f->read(&pre_computed_size, 2); } m_mesh->finalize(); + // Because the last frame in spm is usable + static_cast(m_mesh)->AnimationFrames = + (float)m_frame_count + 1.0f; m_all_armatures.clear(); m_to_bind_pose_matrices.clear(); m_joints.clear(); @@ -366,8 +370,8 @@ void SPMeshLoader::createAnimationData(irr::io::IReadFile* spm) } for (unsigned i = 0; i < armature_size; i++) { - //m_frame_count = std::max(m_frame_count, - // (unsigned)m_all_armatures[i].m_frame_pose_matrices.back().first); + m_frame_count = std::max(m_frame_count, + (unsigned)m_all_armatures[i].m_frame_pose_matrices.back().first); m_joint_count += m_all_armatures[i].m_joint_used; } diff --git a/src/graphics/sp_mesh_loader.hpp b/src/graphics/sp_mesh_loader.hpp index 64e257bf8..55fc031ae 100644 --- a/src/graphics/sp_mesh_loader.hpp +++ b/src/graphics/sp_mesh_loader.hpp @@ -79,7 +79,7 @@ private: unsigned id); }; // ------------------------------------------------------------------------ - unsigned m_bind_frame, m_joint_count;//, m_frame_count; + unsigned m_bind_frame, m_joint_count, m_frame_count; // ------------------------------------------------------------------------ std::vector m_all_armatures; // ------------------------------------------------------------------------ diff --git a/src/guiengine/scalable_font.cpp b/src/guiengine/scalable_font.cpp index 7173e177d..e106f1038 100644 --- a/src/guiengine/scalable_font.cpp +++ b/src/guiengine/scalable_font.cpp @@ -52,12 +52,16 @@ void ScalableFont::setShadow(const irr::video::SColor &col) m_font_settings->setShadow(true); m_font_settings->setShadowColor(col); } // setShadow - // ---------------------------------------------------------------------------- void ScalableFont::disableShadow() { m_font_settings->setShadow(false); } // setShadow +// ---------------------------------------------------------------------------- +void ScalableFont::setBlackBorder(bool enabled) +{ + m_font_settings->setBlackBorder(enabled); +} // setShadow // ---------------------------------------------------------------------------- void ScalableFont::setScale(float scale) diff --git a/src/guiengine/scalable_font.hpp b/src/guiengine/scalable_font.hpp index 2f03508a8..d96164c2a 100644 --- a/src/guiengine/scalable_font.hpp +++ b/src/guiengine/scalable_font.hpp @@ -57,6 +57,8 @@ public: // ------------------------------------------------------------------------ void disableShadow(); // ------------------------------------------------------------------------ + void setBlackBorder(bool enabled); + // ------------------------------------------------------------------------ void updateRTL(); // ------------------------------------------------------------------------ void draw(const core::stringw& text, const core::rect& position, diff --git a/src/input/gamepad_device.cpp b/src/input/gamepad_device.cpp index 423c1894f..0ea8cfc0a 100644 --- a/src/input/gamepad_device.cpp +++ b/src/input/gamepad_device.cpp @@ -94,7 +94,10 @@ int GamePadDevice::getNumberOfButtons() const // ---------------------------------------------------------------------------- bool GamePadDevice::isButtonPressed(const int i) { - return m_button_pressed[i]; + if (i < m_button_pressed.size()) + return m_button_pressed[i]; + else + return false; } // isButtonPressed // ---------------------------------------------------------------------------- diff --git a/src/io/xml_node.cpp b/src/io/xml_node.cpp index cbc8dc21a..12d38c1e7 100644 --- a/src/io/xml_node.cpp +++ b/src/io/xml_node.cpp @@ -18,7 +18,6 @@ #include "io/file_manager.hpp" #include "io/xml_node.hpp" -#include "utils/string_utils.hpp" #include "utils/interpolation_array.hpp" #include "utils/vec3.hpp" diff --git a/src/io/xml_node.hpp b/src/io/xml_node.hpp index ed990dab4..66baea9db 100644 --- a/src/io/xml_node.hpp +++ b/src/io/xml_node.hpp @@ -33,9 +33,11 @@ using namespace irr; #include "utils/leak_check.hpp" #include "utils/no_copy.hpp" +#include "utils/string_utils.hpp" #include "utils/time.hpp" #include "utils/types.hpp" + class InterpolationArray; class Vec3; @@ -95,6 +97,27 @@ public: int getHPR(core::vector3df *value) const; int getHPR(Vec3 *value) const; + template + int get(std::map* out_map) const + { + using namespace StringUtils; + for (auto& p : m_attributes) + { + T val_1; + if (!fromString(p.first, val_1)) + { + return 0; + } + U val_2; + if (!fromString(wideToUtf8(p.second), val_2)) + { + return 0; + } + (*out_map)[val_1] = val_2; + } + return (int)m_attributes.size(); + } + bool hasChildNamed(const char* name) const; /** Handy functions to test the bit pattern returned by get(vector3df*).*/ diff --git a/src/items/attachment.cpp b/src/items/attachment.cpp index b4b1dfd9f..1afd432d2 100644 --- a/src/items/attachment.cpp +++ b/src/items/attachment.cpp @@ -497,6 +497,28 @@ void Attachment::update(float dt) bool is_shield = (m_type == ATTACH_BUBBLEGUM_SHIELD|| m_type == ATTACH_NOLOK_BUBBLEGUM_SHIELD); float m_wanted_node_scale = is_shield ? std::max(1.0f, m_kart->getHighestPoint()*1.1f) : 1.0f; + int slow_flashes = 3; + if (is_shield && m_time_left < slow_flashes) + { + int flashes_per_second = 4; + int divisor = 2; + + float fast_flashes = 0.5F; + if (m_time_left < fast_flashes) + { + flashes_per_second = 12; + } + + float mod = (int)(m_time_left * flashes_per_second * 2) % divisor; + if (mod < divisor / 2) + { + m_node->setVisible(false); + } + else + { + m_node->setVisible(true); + } + } if (m_node_scale < m_wanted_node_scale) { diff --git a/src/karts/controller/local_player_controller.cpp b/src/karts/controller/local_player_controller.cpp index 2c8b96b47..55abba84f 100644 --- a/src/karts/controller/local_player_controller.cpp +++ b/src/karts/controller/local_player_controller.cpp @@ -239,9 +239,11 @@ void LocalPlayerController::displayPenaltyWarning() if (m) { m->addMessage(_("Penalty time!!"), m_kart, 2.0f, - GUIEngine::getSkin()->getColor("font::top")); + GUIEngine::getSkin()->getColor("font::top"), true /* important */, + false /* big font */, true /* outline */); m->addMessage(_("Don't accelerate before go"), m_kart, 2.0f, - GUIEngine::getSkin()->getColor("font::normal")); + GUIEngine::getSkin()->getColor("font::normal"), true /* important */, + false /* big font */, true /* outline */); } m_kart->playSound(m_bzzt_sound); } // displayPenaltyWarning diff --git a/src/karts/kart.cpp b/src/karts/kart.cpp index 938273ad7..79edf6f93 100644 --- a/src/karts/kart.cpp +++ b/src/karts/kart.cpp @@ -2181,7 +2181,7 @@ void Kart::playCrashSFX(const Material* m, AbstractKart *k) { const float speed_for_max_volume = 15; //The speed at which the sound plays at maximum volume const float max_volume = 1; //The maximum volume a sound is played at - const float min_volume = 0.2; //The minimum volume a sound is played at + const float min_volume = 0.2f; //The minimum volume a sound is played at float volume; //The volume the crash sound will be played at diff --git a/src/main.cpp b/src/main.cpp index c3868be7b..28ba7201e 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -594,6 +594,7 @@ void cmdLineHelp() " -h, --help Show this help.\n" " --log=N Set the verbosity to a value between\n" " 0 (Debug) and 5 (Only Fatal messages)\n" + " --logbuffer=N Buffers up to N lines log lines before writing.\n" " --root=DIR Path to add to the list of STK root directories.\n" " You can specify more than one by separating them\n" " with colons (:).\n" @@ -664,6 +665,8 @@ int handleCmdLineOutputModifier() int n; if(CommandLine::has("--log", &n)) Log::setLogLevel(n); + if (CommandLine::has("--logbuffer", &n)) + Log::setBufferSize(n); if(CommandLine::has("--log=nocolor")) { @@ -1807,8 +1810,10 @@ int main(int argc, char *argv[] ) } // try catch (std::exception &e) { + Log::flushBuffers(); Log::error("main", "Exception caught : %s.",e.what()); Log::error("main", "Aborting SuperTuxKart."); + Log::flushBuffers(); } /* Program closing...*/ @@ -1832,6 +1837,8 @@ int main(int argc, char *argv[] ) MemoryLeaks::checkForLeaks(); #endif + Log::flushBuffers(); + #ifndef WIN32 if (user_config) //close logfiles { diff --git a/src/race/race_manager.cpp b/src/race/race_manager.cpp index c1251dfd8..1c9ad2b97 100644 --- a/src/race/race_manager.cpp +++ b/src/race/race_manager.cpp @@ -431,7 +431,9 @@ void RaceManager::startNew(bool from_overworld) { if (m_continue_saved_gp) { - m_track_number = m_saved_gp->getNextTrack(); + int next_track = m_saved_gp->getNextTrack(); + if (next_track < m_tracks.size()) + m_track_number = next_track; m_saved_gp->loadKarts(m_kart_status); } else diff --git a/src/scriptengine/script_track.cpp b/src/scriptengine/script_track.cpp index 2ca00ea0c..a221e0ce4 100644 --- a/src/scriptengine/script_track.cpp +++ b/src/scriptengine/script_track.cpp @@ -295,6 +295,33 @@ namespace Scripting return -1; } + /** Remove all animation set for a skeletal animation */ + void removeAllAnimationSet(/** \cond DOXYGEN_IGNORE */void *memory /** \endcond */) + { + if (memory) + { + ((scene::IAnimatedMeshSceneNode*)(memory))->removeAllAnimationSet(); + } + } + + /** Add an animation set for a skeletal animation */ + void addAnimationSet(int start/** \cond DOXYGEN_IGNORE */, int end/** \cond DOXYGEN_IGNORE */, /** \cond DOXYGEN_IGNORE */void *memory /** \endcond */) + { + if (memory) + { + ((scene::IAnimatedMeshSceneNode*)(memory))->addAnimationSet(start, end); + } + } + + /** use an current frame for a skeletal animation */ + void useAnimationSet(int set_num /** \cond DOXYGEN_IGNORE */, void *memory /** \endcond */) + { + if (memory) + { + ((scene::IAnimatedMeshSceneNode*)(memory))->useAnimationSet(set_num); + } + } + /** Sets the current frame for a skeletal animation */ void setCurrentFrame(int frame /** \cond DOXYGEN_IGNORE */, void *memory /** \endcond */) { @@ -465,6 +492,8 @@ namespace Scripting r = engine->RegisterObjectMethod("TrackObject", "void moveTo(const Vec3 &in, bool)", asMETHOD(::TrackObject, moveTo), asCALL_THISCALL); assert(r >= 0); r = engine->RegisterObjectMethod("TrackObject", "Vec3 getCenterPosition()", asFUNCTION(TrackObject::getCenterPosition), asCALL_CDECL_OBJLAST); assert(r >= 0); r = engine->RegisterObjectMethod("TrackObject", "Vec3 getOrigin()", asFUNCTION(TrackObject::getOrigin), asCALL_CDECL_OBJLAST); assert(r >= 0); + r = engine->RegisterObjectMethod("TrackObject", "TrackObject@ getParentLibrary()", asMETHOD(::TrackObject, getParentLibrary), asCALL_THISCALL); assert(r >= 0); + r = engine->RegisterObjectMethod("TrackObject", "string getName()", asMETHOD(::TrackObject, getName), asCALL_THISCALL); assert(r >= 0); // PhysicalObject r = engine->RegisterObjectMethod("PhysicalObject", "bool isFlattenKartObject()", asMETHOD(PhysicalObject, isFlattenKartObject), asCALL_THISCALL); assert(r >= 0); @@ -476,6 +505,9 @@ namespace Scripting r = engine->RegisterObjectMethod("Mesh", "void setFrameLoopOnce(int start, int end)", asFUNCTION(Mesh::setFrameLoopOnce), asCALL_CDECL_OBJLAST); assert(r >= 0); r = engine->RegisterObjectMethod("Mesh", "int getFrameNr()", asFUNCTION(Mesh::getFrameNr), asCALL_CDECL_OBJLAST); assert(r >= 0); r = engine->RegisterObjectMethod("Mesh", "int getAnimationSet()", asFUNCTION(Mesh::getAnimationSet), asCALL_CDECL_OBJLAST); assert(r >= 0); + r = engine->RegisterObjectMethod("Mesh", "void useAnimationSet(int set_num)", asFUNCTION(Mesh::useAnimationSet), asCALL_CDECL_OBJLAST); assert(r >= 0); + r = engine->RegisterObjectMethod("Mesh", "void addAnimationSet(int start, int end)", asFUNCTION(Mesh::addAnimationSet), asCALL_CDECL_OBJLAST); assert(r >= 0); + r = engine->RegisterObjectMethod("Mesh", "void removeAllAnimationSet()", asFUNCTION(Mesh::removeAllAnimationSet), asCALL_CDECL_OBJLAST); assert(r >= 0); r = engine->RegisterObjectMethod("Mesh", "void setCurrentFrame(int frame)", asFUNCTION(Mesh::setCurrentFrame), asCALL_CDECL_OBJLAST); assert(r >= 0); //r = engine->RegisterObjectMethod("Mesh", "void move(Vec3 &in)", asFUNCTION(movePresentation), asCALL_CDECL_OBJLAST); assert(r >= 0); diff --git a/src/states_screens/feature_unlocked.cpp b/src/states_screens/feature_unlocked.cpp index 8ae059181..eb69539b4 100644 --- a/src/states_screens/feature_unlocked.cpp +++ b/src/states_screens/feature_unlocked.cpp @@ -581,20 +581,20 @@ bool FeatureUnlockedCutScene::onEscapePressed() void FeatureUnlockedCutScene::continueButtonPressed() { - //if (m_global_time < GIFT_EXIT_TO) - //{ - // // If animation was not over yet, the button is used to skip the animation - // while (m_global_time < GIFT_EXIT_TO) - // { - // // simulate all the steps of the animation until we reach the end - // onUpdate(0.4f); - // World::getWorld()->updateWorld(0.4f); - // } - //} - //else - //{ + if (m_global_time < GIFT_EXIT_TO) + { + // If animation was not over yet, the button is used to skip the animation + while (m_global_time < GIFT_EXIT_TO) + { + // simulate all the steps of the animation until we reach the end + onUpdate(0.4f); + World::getWorld()->updateWorld(0.4f); + } + } + else + { ((CutsceneWorld*)World::getWorld())->abortCutscene(); - //} + } } // continueButtonPressed diff --git a/src/states_screens/ghost_replay_selection.cpp b/src/states_screens/ghost_replay_selection.cpp index c5e90191b..3205ce918 100644 --- a/src/states_screens/ghost_replay_selection.cpp +++ b/src/states_screens/ghost_replay_selection.cpp @@ -128,7 +128,7 @@ void GhostReplaySelection::loadList() row.push_back(GUIEngine::ListWidget::ListCell (StringUtils::toWString(rd.m_min_time) + L"s", -1, 1, true)); row.push_back(GUIEngine::ListWidget::ListCell - (rd.m_user_name, -1, 1, true)); + (rd.m_user_name.empty() ? " " : rd.m_user_name, -1, 1, true)); m_replay_list_widget->addItem(StringUtils::toString(i), row); } } // loadList diff --git a/src/states_screens/grand_prix_win.cpp b/src/states_screens/grand_prix_win.cpp index 30e9bca59..4e7271c67 100644 --- a/src/states_screens/grand_prix_win.cpp +++ b/src/states_screens/grand_prix_win.cpp @@ -203,6 +203,7 @@ void GrandPrixWin::init() m_unlocked_label->add(); manualAddWidget(m_unlocked_label); + m_unlocked_label->setColor(video::SColor(255, 255, 255, 255)); } else { diff --git a/src/states_screens/main_menu_screen.cpp b/src/states_screens/main_menu_screen.cpp index 35523b85d..17f1d3257 100644 --- a/src/states_screens/main_menu_screen.cpp +++ b/src/states_screens/main_menu_screen.cpp @@ -46,6 +46,7 @@ #include "states_screens/offline_kart_selection.hpp" #include "states_screens/online_profile_achievements.hpp" #include "states_screens/online_profile_servers.hpp" +#include "states_screens/online_screen.hpp" #include "states_screens/options_screen_video.hpp" #include "states_screens/state_manager.hpp" #include "states_screens/user_screen.hpp" @@ -75,9 +76,6 @@ bool MainMenuScreen::m_enable_online = false; MainMenuScreen::MainMenuScreen() : Screen("main_menu.stkgui") { - m_online_string = _("Online"); - //I18N: Used as a verb, appears on the main menu (login button) - m_login_string = _("Login"); } // MainMenuScreen // ---------------------------------------------------------------------------- @@ -151,10 +149,7 @@ void MainMenuScreen::init() w->setBadge(LOADING_BADGE); } - m_online = getWidget("online"); - - if(!m_enable_online) - m_online->setActive(false); + IconButtonWidget* online = getWidget("online"); LabelWidget* w = getWidget("info_addons"); const core::stringw &news_text = NewsManager::get()->getNextNewsMessage(); @@ -179,32 +174,25 @@ void MainMenuScreen::init() } // init // ---------------------------------------------------------------------------- -void MainMenuScreen::onUpdate(float delta) +void MainMenuScreen::onUpdate(float delta) { PlayerProfile *player = PlayerManager::getCurrentPlayer(); if(PlayerManager::getCurrentOnlineState() == PlayerProfile::OS_GUEST || PlayerManager::getCurrentOnlineState() == PlayerProfile::OS_SIGNED_IN) { m_user_id->setText(player->getLastOnlineName() + "@stk"); - m_online->setActive(true); - m_online->setLabel(m_online_string); } else if (PlayerManager::getCurrentOnlineState() == PlayerProfile::OS_SIGNED_OUT) { - m_online->setActive(true); - m_online->setLabel(m_login_string); m_user_id->setText(player->getName()); } else { // now must be either logging in or logging out - m_online->setActive(false); m_user_id->setText(player->getName()); } - m_online->setLabel(PlayerManager::getCurrentOnlineId() ? m_online_string - : m_login_string); IconButtonWidget* addons_icon = getWidget("addons"); if (addons_icon != NULL) { @@ -472,6 +460,7 @@ void MainMenuScreen::eventCallback(Widget* widget, const std::string& name, } else if (selection == "story") { + NetworkConfig::get()->unsetNetworking(); PlayerProfile *player = PlayerManager::getCurrentPlayer(); if (player->isFirstTime()) { @@ -505,23 +494,30 @@ void MainMenuScreen::eventCallback(Widget* widget, const std::string& name, } else if (selection == "online") { - if(UserConfigParams::m_internet_status!=RequestManager::IPERM_ALLOWED) + if (MainMenuScreen::m_enable_online) { - new MessageDialog(_("You can not play online without internet access. " - "If you want to play online, go to options, select " - " tab 'User Interface', and edit " - "\"Connect to the Internet\".")); - return; - } - - if (PlayerManager::getCurrentOnlineId()) - { - ProfileManager::get()->setVisiting(PlayerManager::getCurrentOnlineId()); - OnlineProfileServers::getInstance()->push(); + OnlineScreen::getInstance()->push(); } else { - UserScreen::getInstance()->push(); + if (UserConfigParams::m_internet_status != RequestManager::IPERM_ALLOWED) + { + new MessageDialog(_("You can not play online without internet access. " + "If you want to play online, go to options, select " + " tab 'User Interface', and edit " + "\"Connect to the Internet\".")); + return; + } + + if (PlayerManager::getCurrentOnlineId()) + { + ProfileManager::get()->setVisiting(PlayerManager::getCurrentOnlineId()); + TabOnlineProfileAchievements::getInstance()->push(); + } + else + { + UserScreen::getInstance()->push(); + } } } else if (selection == "addons") diff --git a/src/states_screens/main_menu_screen.hpp b/src/states_screens/main_menu_screen.hpp index 4e79c4532..8da6c94ab 100644 --- a/src/states_screens/main_menu_screen.hpp +++ b/src/states_screens/main_menu_screen.hpp @@ -32,13 +32,6 @@ class MainMenuScreen : public GUIEngine::Screen, public GUIEngine::ScreenSinglet private: friend class GUIEngine::ScreenSingleton; - core::stringw m_online_string; - - core::stringw m_login_string; - - /** Keep the widget to avoid looking it up every frame. */ - GUIEngine::IconButtonWidget* m_online; - /** Keep the widget to to the user name. */ GUIEngine::ButtonWidget *m_user_id; diff --git a/src/states_screens/online_lan.cpp b/src/states_screens/online_lan.cpp new file mode 100644 index 000000000..9e22fa104 --- /dev/null +++ b/src/states_screens/online_lan.cpp @@ -0,0 +1,112 @@ +// SuperTuxKart - a fun racing game with go-kart +// Copyright (C) 2010-2015 Glenn De Jonghe +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 3 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#include "states_screens/online_profile_servers.hpp" + +#include "audio/sfx_manager.hpp" +#include "config/player_manager.hpp" +#include "guiengine/engine.hpp" +#include "guiengine/scalable_font.hpp" +#include "guiengine/screen.hpp" +#include "guiengine/widget.hpp" +#include "network/network_config.hpp" +#include "network/protocol_manager.hpp" +#include "network/protocols/connect_to_server.hpp" +#include "network/protocols/request_connection.hpp" +#include "network/servers_manager.hpp" +#include "states_screens/state_manager.hpp" +#include "states_screens/create_server_screen.hpp" +#include "states_screens/networking_lobby.hpp" +#include "states_screens/online_lan.hpp" +#include "states_screens/server_selection.hpp" +#include "utils/translation.hpp" + +#include + +#include +#include + +using namespace GUIEngine; +using namespace irr::core; +using namespace irr::gui; +using namespace Online; + +DEFINE_SCREEN_SINGLETON( OnlineLanScreen ); + +// ----------------------------------------------------------------------------- + +OnlineLanScreen::OnlineLanScreen() : GUIEngine::Screen("online/lan.stkgui") +{ +} // OnlineLanScreen + +// ----------------------------------------------------------------------------- + +void OnlineLanScreen::loadedFromFile() +{ +} // loadedFromFile + +// ----------------------------------------------------------------------------- + +void OnlineLanScreen::init() +{ + RibbonWidget* ribbon = getWidget("lan"); + assert(ribbon != NULL); + ribbon->select("find_lan_server", PLAYER_ID_GAME_MASTER); + ribbon->setFocusForPlayer(PLAYER_ID_GAME_MASTER); +} // init + +// ----------------------------------------------------------------------------- + +void OnlineLanScreen::eventCallback(Widget* widget, const std::string& name, const int playerID) +{ + if (name == "back") + { + StateManager::get()->popMenu(); + return; + } + if (name == "lan") + { + RibbonWidget* ribbon = dynamic_cast(widget); + std::string selection = ribbon->getSelectionIDString(PLAYER_ID_GAME_MASTER); + if (selection == "create_lan_server") + { + NetworkConfig::get()->setIsLAN(); + NetworkConfig::get()->setIsServer(true); + CreateServerScreen::getInstance()->push(); + // TODO: create lan server + } + else if (selection == "find_lan_server") + { + NetworkConfig::get()->setIsLAN(); + NetworkConfig::get()->setIsServer(false); + ServerSelection::getInstance()->push(); + } + } + +} // eventCallback + +// ---------------------------------------------------------------------------- +/** Also called when pressing the back button. It resets the flags to indicate + * a networked game. + */ +bool OnlineLanScreen::onEscapePressed() +{ + NetworkConfig::get()->unsetNetworking(); + //StateManager::get()->popMenu(); + return true; +} // onEscapePressed + diff --git a/src/states_screens/online_lan.hpp b/src/states_screens/online_lan.hpp new file mode 100644 index 000000000..615cb9e37 --- /dev/null +++ b/src/states_screens/online_lan.hpp @@ -0,0 +1,57 @@ +// SuperTuxKart - a fun racing game with go-kart +// Copyright (C) 2013-2015 Glenn De Jonghe +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 3 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + + +#ifndef __HEADER_OLAN_HPP__ +#define __HEADER_OLAN_HPP__ + +#include +#include + +#include "guiengine/screen.hpp" +#include "guiengine/widgets.hpp" +#include "states_screens/online_profile_base.hpp" + +namespace GUIEngine { class Widget; } + + +/** + * \brief Online profiel overview screen + * \ingroup states_screens + */ +class OnlineLanScreen : public GUIEngine::Screen, public GUIEngine::ScreenSingleton +{ +protected: + OnlineLanScreen(); + +public: + friend class GUIEngine::ScreenSingleton; + + /** \brief implement callback from parent class GUIEngine::Screen */ + virtual void loadedFromFile() OVERRIDE; + + /** \brief implement callback from parent class GUIEngine::Screen */ + virtual void eventCallback(GUIEngine::Widget* widget, const std::string& name, + const int playerID) OVERRIDE; + + /** \brief implement callback from parent class GUIEngine::Screen */ + virtual void init() OVERRIDE; + virtual bool onEscapePressed() OVERRIDE; + +}; // class OnlineProfileServers + +#endif diff --git a/src/states_screens/online_profile_base.cpp b/src/states_screens/online_profile_base.cpp index 208123750..0088cdaf3 100644 --- a/src/states_screens/online_profile_base.cpp +++ b/src/states_screens/online_profile_base.cpp @@ -42,7 +42,6 @@ using namespace Online; OnlineProfileBase::OnlineProfileBase(const std::string &filename) : Screen(filename.c_str()) { - m_servers_tab = NULL; m_friends_tab = NULL; m_achievements_tab = NULL; m_settings_tab = NULL; @@ -63,9 +62,6 @@ void OnlineProfileBase::loadedFromFile() m_friends_tab = (IconButtonWidget *)m_profile_tabs->findWidgetNamed("tab_friends"); assert(m_friends_tab != NULL); - m_servers_tab = (IconButtonWidget *)m_profile_tabs->findWidgetNamed("tab_servers"); - assert(m_servers_tab != NULL); - m_achievements_tab = (IconButtonWidget*)m_profile_tabs->findWidgetNamed("tab_achievements"); assert(m_profile_tabs == NULL || m_achievements_tab != NULL); @@ -107,7 +103,6 @@ void OnlineProfileBase::init() if (m_profile_tabs) { - m_servers_tab->setTooltip(_("Servers")); m_friends_tab->setTooltip(_("Friends")); m_achievements_tab->setTooltip(_("Achievements")); m_settings_tab->setTooltip(_("Account Settings")); @@ -159,8 +154,6 @@ void OnlineProfileBase::eventCallback(Widget* widget, const std::string& name, sm->replaceTopMostScreen(TabOnlineProfileAchievements::getInstance()); else if (selection == m_settings_tab->m_properties[PROP_ID]) sm->replaceTopMostScreen(OnlineProfileSettings::getInstance()); - else if (selection == m_servers_tab->m_properties[PROP_ID]) - sm->replaceTopMostScreen(OnlineProfileServers::getInstance()); } else if (name == "back") { diff --git a/src/states_screens/online_profile_base.hpp b/src/states_screens/online_profile_base.hpp index 95a6906fa..0285edb4b 100644 --- a/src/states_screens/online_profile_base.hpp +++ b/src/states_screens/online_profile_base.hpp @@ -42,7 +42,6 @@ protected: /** Pointer to the various widgets on the screen. */ GUIEngine::LabelWidget * m_header; GUIEngine::RibbonWidget* m_profile_tabs; - GUIEngine::IconButtonWidget * m_servers_tab; GUIEngine::IconButtonWidget * m_friends_tab; GUIEngine::IconButtonWidget * m_achievements_tab; GUIEngine::IconButtonWidget * m_settings_tab; diff --git a/src/states_screens/online_profile_servers.cpp b/src/states_screens/online_profile_servers.cpp index 7d3400b0f..0787d2fef 100644 --- a/src/states_screens/online_profile_servers.cpp +++ b/src/states_screens/online_profile_servers.cpp @@ -48,7 +48,7 @@ DEFINE_SCREEN_SINGLETON( OnlineProfileServers ); // ----------------------------------------------------------------------------- -OnlineProfileServers::OnlineProfileServers() : OnlineProfileBase("online/profile_servers.stkgui") +OnlineProfileServers::OnlineProfileServers() : GUIEngine::Screen("online/profile_servers.stkgui") { } // OnlineProfileServers @@ -56,44 +56,28 @@ OnlineProfileServers::OnlineProfileServers() : OnlineProfileBase("online/profile void OnlineProfileServers::loadedFromFile() { - OnlineProfileBase::loadedFromFile(); } // loadedFromFile // ----------------------------------------------------------------------------- void OnlineProfileServers::init() { - OnlineProfileBase::init(); - m_profile_tabs->select( m_servers_tab->m_properties[PROP_ID], PLAYER_ID_GAME_MASTER ); - m_servers_tab->setFocusForPlayer(PLAYER_ID_GAME_MASTER); - // OnlineScreen::getInstance()->push(); + RibbonWidget* ribbon = getWidget("wan"); + assert(ribbon != NULL); + ribbon->select("find_wan_server", PLAYER_ID_GAME_MASTER); + ribbon->setFocusForPlayer(PLAYER_ID_GAME_MASTER); } // init // ----------------------------------------------------------------------------- void OnlineProfileServers::eventCallback(Widget* widget, const std::string& name, const int playerID) { - OnlineProfileBase::eventCallback( widget, name, playerID); - - if (name == "lan") + if (name == "back") { - RibbonWidget* ribbon = dynamic_cast(widget); - std::string selection = ribbon->getSelectionIDString(PLAYER_ID_GAME_MASTER); - if (selection == "create_lan_server") - { - NetworkConfig::get()->setIsLAN(); - NetworkConfig::get()->setIsServer(true); - CreateServerScreen::getInstance()->push(); - // TODO: create lan server - } - else if (selection == "find_lan_server") - { - NetworkConfig::get()->setIsLAN(); - NetworkConfig::get()->setIsServer(false); - ServerSelection::getInstance()->push(); - } + StateManager::get()->popMenu(); + return; } - else if (name == "wan") + if (name == "wan") { RibbonWidget* ribbon = dynamic_cast(widget); std::string selection = ribbon->getSelectionIDString(PLAYER_ID_GAME_MASTER); @@ -176,6 +160,6 @@ void OnlineProfileServers::doQuickPlay() bool OnlineProfileServers::onEscapePressed() { NetworkConfig::get()->unsetNetworking(); - return OnlineProfileBase::onEscapePressed(); + return true; } // onEscapePressed diff --git a/src/states_screens/online_profile_servers.hpp b/src/states_screens/online_profile_servers.hpp index b840f103e..0d30b6fe6 100644 --- a/src/states_screens/online_profile_servers.hpp +++ b/src/states_screens/online_profile_servers.hpp @@ -33,7 +33,7 @@ namespace GUIEngine { class Widget; } * \brief Online profiel overview screen * \ingroup states_screens */ -class OnlineProfileServers : public OnlineProfileBase, public GUIEngine::ScreenSingleton +class OnlineProfileServers : public GUIEngine::Screen, public GUIEngine::ScreenSingleton { protected: OnlineProfileServers(); diff --git a/src/states_screens/online_screen.cpp b/src/states_screens/online_screen.cpp new file mode 100644 index 000000000..e0601c56e --- /dev/null +++ b/src/states_screens/online_screen.cpp @@ -0,0 +1,198 @@ +// SuperTuxKart - a fun racing game with go-kart +// Copyright (C) 2009-2015 Marianne Gagnon +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 3 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + + +#include "states_screens/main_menu_screen.hpp" + +#include "config/player_manager.hpp" +#include "config/user_config.hpp" +#include "graphics/irr_driver.hpp" +#include "guiengine/scalable_font.hpp" +#include "guiengine/widgets/label_widget.hpp" +#include "guiengine/widgets/list_widget.hpp" +#include "guiengine/widgets/ribbon_widget.hpp" +#include "input/device_manager.hpp" +#include "input/input_manager.hpp" +#include "input/keyboard_device.hpp" +#include "io/file_manager.hpp" +#include "main_loop.hpp" +#include "network/network_config.hpp" +#include "online/request_manager.hpp" +#include "states_screens/online_lan.hpp" +#include "states_screens/online_profile_achievements.hpp" +#include "states_screens/online_profile_servers.hpp" +#include "states_screens/online_screen.hpp" +#include "states_screens/state_manager.hpp" +#include "states_screens/user_screen.hpp" +#include "states_screens/dialogs/message_dialog.hpp" +#include "tracks/track_manager.hpp" +#include "utils/string_utils.hpp" + + +#include + + +using namespace GUIEngine; +using namespace Online; + +DEFINE_SCREEN_SINGLETON( OnlineScreen ); + +// ---------------------------------------------------------------------------- + +OnlineScreen::OnlineScreen() : Screen("online/online.stkgui") +{ + m_online_string = _("Your profile"); + //I18N: Used as a verb, appears on the main networking menu (login button) + m_login_string = _("Login"); +} // OnlineScreen + +// ---------------------------------------------------------------------------- + +void OnlineScreen::loadedFromFile() +{ +} // loadedFromFile + +// ---------------------------------------------------------------------------- + +void OnlineScreen::beforeAddingWidget() +{ + bool is_logged_in = false; + PlayerProfile *player = PlayerManager::getCurrentPlayer(); + if (PlayerManager::getCurrentOnlineState() == PlayerProfile::OS_GUEST || + PlayerManager::getCurrentOnlineState() == PlayerProfile::OS_SIGNED_IN) + { + is_logged_in = true; + } + + IconButtonWidget* wan = getWidget("wan"); + wan->setActive(is_logged_in); + wan->setVisible(is_logged_in); +} // beforeAddingWidget + +// ---------------------------------------------------------------------------- +// +void OnlineScreen::init() +{ + Screen::init(); + + m_online = getWidget("online"); + + if (!MainMenuScreen::m_enable_online) + m_online->setActive(false); + + m_user_id = getWidget("user-id"); + assert(m_user_id); + + RibbonWidget* r = getWidget("menu_toprow"); + r->setFocusForPlayer(PLAYER_ID_GAME_MASTER); + +} // init + +// ---------------------------------------------------------------------------- + +void OnlineScreen::onUpdate(float delta) +{ + PlayerProfile *player = PlayerManager::getCurrentPlayer(); + if (PlayerManager::getCurrentOnlineState() == PlayerProfile::OS_GUEST || + PlayerManager::getCurrentOnlineState() == PlayerProfile::OS_SIGNED_IN) + { + m_online->setActive(true); + m_online->setLabel(m_online_string); + m_user_id->setText(player->getLastOnlineName() + "@stk"); + } + else if (PlayerManager::getCurrentOnlineState() == PlayerProfile::OS_SIGNED_OUT) + { + m_online->setActive(true); + m_online->setLabel(m_login_string); + m_user_id->setText(player->getName()); + } + else + { + // now must be either logging in or logging out + m_online->setActive(false); + m_user_id->setText(player->getName()); + } + + m_online->setLabel(PlayerManager::getCurrentOnlineId() ? m_online_string + : m_login_string); +} // onUpdate + +// ---------------------------------------------------------------------------- + +void OnlineScreen::eventCallback(Widget* widget, const std::string& name, + const int playerID) +{ + if (name == "user-id") + { + UserScreen::getInstance()->push(); + return; + } + else if (name == "back") + { + StateManager::get()->popMenu(); + return; + } + + RibbonWidget* ribbon = dynamic_cast(widget); + if (ribbon == NULL) return; // what's that event?? + + // ---- A ribbon icon was clicked + std::string selection = + ribbon->getSelectionIDString(PLAYER_ID_GAME_MASTER); + + if (selection == "lan") + { + OnlineLanScreen::getInstance()->push(); + } + else if (selection == "wan") + { + OnlineProfileServers::getInstance()->push(); + } + else if (selection == "online") + { + if (UserConfigParams::m_internet_status != RequestManager::IPERM_ALLOWED) + { + new MessageDialog(_("You can not play online without internet access. " + "If you want to play online, go to options, select " + " tab 'User Interface', and edit " + "\"Connect to the Internet\".")); + return; + } + + if (PlayerManager::getCurrentOnlineId()) + { + ProfileManager::get()->setVisiting(PlayerManager::getCurrentOnlineId()); + TabOnlineProfileAchievements::getInstance()->push(); + } + else + { + UserScreen::getInstance()->push(); + } + } +} // eventCallback + +// ---------------------------------------------------------------------------- + +void OnlineScreen::tearDown() +{ +} // tearDown + +// ---------------------------------------------------------------------------- + +void OnlineScreen::onDisabledItemClicked(const std::string& item) +{ +} // onDisabledItemClicked diff --git a/src/states_screens/online_screen.hpp b/src/states_screens/online_screen.hpp new file mode 100644 index 000000000..69f2b371b --- /dev/null +++ b/src/states_screens/online_screen.hpp @@ -0,0 +1,71 @@ +// SuperTuxKart - a fun racing game with go-kart +// Copyright (C) 2009-2015 Marianne Gagnon +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 3 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#ifndef HEADER_ONLINE_SCREEN_HPP +#define HEADER_ONLINE_SCREEN_HPP + +#include "guiengine/screen.hpp" + +namespace GUIEngine { class Widget; class ListWidget; + class ButtonWidget; class IconButtonWidget; } + +/** + * \brief Handles the networking main menu + * \ingroup states_screens + */ +class OnlineScreen : public GUIEngine::Screen, public GUIEngine::ScreenSingleton +{ +private: + friend class GUIEngine::ScreenSingleton; + + core::stringw m_online_string; + + core::stringw m_login_string; + + /** Keep the widget to to the user name. */ + GUIEngine::ButtonWidget *m_user_id; + + /** Keep the widget to avoid looking it up every frame. */ + GUIEngine::IconButtonWidget* m_online; + + OnlineScreen(); + +public: + + virtual void onUpdate(float delta) OVERRIDE; + + /** \brief implement callback from parent class GUIEngine::Screen */ + virtual void loadedFromFile() OVERRIDE; + + /** \brief implement callback from parent class GUIEngine::Screen */ + virtual void beforeAddingWidget() OVERRIDE; + + /** \brief implement callback from parent class GUIEngine::Screen */ + virtual void eventCallback(GUIEngine::Widget* widget, const std::string& name, + const int playerID) OVERRIDE; + + /** \brief implement callback from parent class GUIEngine::Screen */ + virtual void init() OVERRIDE; + + /** \brief implement callback from parent class GUIEngine::Screen */ + virtual void tearDown() OVERRIDE; + + /** \brief implement callback from parent class GUIEngine::Screen */ + virtual void onDisabledItemClicked(const std::string& item) OVERRIDE; +}; + +#endif diff --git a/src/states_screens/race_gui_base.cpp b/src/states_screens/race_gui_base.cpp index 8bc208aee..4dd278a89 100644 --- a/src/states_screens/race_gui_base.cpp +++ b/src/states_screens/race_gui_base.cpp @@ -225,9 +225,19 @@ void RaceGUIBase::drawAllMessages(const AbstractKart* kart, if (msg.m_kart && msg.m_kart!=kart) continue; core::rect pos(x - w/2, y, x + w/2, y + m_max_font_height); - GUIEngine::getSmallFont()->draw( + + gui::ScalableFont* font = GUIEngine::getSmallFont(); + + if (msg.m_outline) + font->setBlackBorder(true); + + font->draw( core::stringw(msg.m_message.c_str()).c_str(), pos, msg.m_color, true /* hcenter */, true /* vcenter */); + + if (msg.m_outline) + font->setBlackBorder(false); + y -= m_small_font_max_height; } } @@ -273,9 +283,16 @@ void RaceGUIBase::drawAllMessages(const AbstractKart* kart, } else { + if (msg.m_outline) + font->setBlackBorder(true); + font->draw(core::stringw(msg.m_message.c_str()).c_str(), pos, msg.m_color, true /* hcenter */, true /* vcenter */); + + if (msg.m_outline) + font->setBlackBorder(false); + y += font_height; } } // for i in all messages @@ -460,9 +477,9 @@ void RaceGUIBase::renderPlayerView(const Camera *camera, float dt) void RaceGUIBase::addMessage(const core::stringw &msg, const AbstractKart *kart, float time, const video::SColor &color, - bool important, bool big_font) + bool important, bool big_font, bool outline) { - m_messages.push_back(TimedMessage(msg, kart, time, color, important, big_font)); + m_messages.push_back(TimedMessage(msg, kart, time, color, important, big_font, outline)); } // addMessage //----------------------------------------------------------------------------- diff --git a/src/states_screens/race_gui_base.hpp b/src/states_screens/race_gui_base.hpp index 00b044583..24d4f742a 100644 --- a/src/states_screens/race_gui_base.hpp +++ b/src/states_screens/race_gui_base.hpp @@ -88,6 +88,8 @@ private: bool m_important; bool m_big_font; + bool m_outline; + // ----------------------------------------------------- // std::vector needs standard copy-ctor and std-assignment op. // let compiler create defaults .. they'll do the job, no @@ -95,7 +97,7 @@ private: TimedMessage(const irr::core::stringw &message, const AbstractKart *kart, float time, const video::SColor &color, const bool important, - bool big_font) + bool big_font, bool outline) { m_message = message; m_kart = kart; @@ -103,6 +105,7 @@ private: m_color = color; m_important = important; m_big_font = big_font; + m_outline = outline; } // TimedMessage // ----------------------------------------------------- // in follow leader the clock counts backwards @@ -229,7 +232,7 @@ public: const video::SColor &color= video::SColor(255, 255, 0, 255), bool important=true, - bool big_font=false); + bool big_font=false, bool outline=false); virtual void update(float dt); virtual void preRenderCallback(const Camera *camera); // ------------------------------------------------------------------------ diff --git a/src/states_screens/race_result_gui.hpp b/src/states_screens/race_result_gui.hpp index 0c1960ca0..e32a166e9 100644 --- a/src/states_screens/race_result_gui.hpp +++ b/src/states_screens/race_result_gui.hpp @@ -237,7 +237,8 @@ public: const video::SColor &color= video::SColor(255, 255, 0, 255), bool important=true, - bool big_font=false) OVERRIDE { } + bool big_font=false, + bool outline=false) OVERRIDE { } void nextPhase(); diff --git a/src/states_screens/user_screen.cpp b/src/states_screens/user_screen.cpp index 91071c597..c9ef957ee 100644 --- a/src/states_screens/user_screen.cpp +++ b/src/states_screens/user_screen.cpp @@ -400,7 +400,7 @@ void BaseUserScreen::eventCallback(Widget* widget, */ void BaseUserScreen::closeScreen() { - StateManager::get()->resetAndGoToScreen(MainMenuScreen::getInstance()); + StateManager::get()->popMenu(); } // closeScreen // ---------------------------------------------------------------------------- diff --git a/src/tracks/track.cpp b/src/tracks/track.cpp index f29266e26..48818f4bd 100644 --- a/src/tracks/track.cpp +++ b/src/tracks/track.cpp @@ -466,6 +466,7 @@ void Track::cleanup() } #endif + m_meta_library.clear(); Scripting::ScriptEngine::getInstance()->cleanupCache(); m_current_track = NULL; @@ -1570,6 +1571,39 @@ void Track::createWater(const XMLNode &node) scene_node->getMaterial(0).setFlag(video::EMF_GOURAUD_SHADING, true); } // createWater +// ---------------------------------------------------------------------------- +static void recursiveUpdatePosition(scene::ISceneNode *node) +{ + node->updateAbsolutePosition(); + + scene::ISceneNodeList::ConstIterator it = node->getChildren().begin(); + for (; it != node->getChildren().end(); ++it) + { + recursiveUpdatePosition(*it); + } +} // recursiveUpdatePosition + +// ---------------------------------------------------------------------------- +static void recursiveUpdatePhysics(std::vector& tos) +{ + for (TrackObject* to : tos) + { + if (to->getPhysicalObject()) + { + TrackObjectPresentationSceneNode* sn = to + ->getPresentation(); + if (sn) + { + to->getPhysicalObject()->move( + sn->getNode()->getAbsoluteTransformation().getTranslation(), + sn->getNode()->getAbsoluteTransformation() + .getRotationDegrees()); + } + } + recursiveUpdatePhysics(to->getChildren()); + } +} // recursiveUpdatePhysics + // ---------------------------------------------------------------------------- /** This function load the actual scene, i.e. all parts of the track, * animations, items, ... It is called from world during initialisation. @@ -1757,6 +1791,19 @@ void Track::loadTrackModel(bool reverse_track, unsigned int mode_id) loadObjects(root, path, model_def_loader, true, NULL, NULL); + // Correct the parenting of meta library + for (auto& p : m_meta_library) + { + auto* ln = p.first->getPresentation(); + assert(ln); + TrackObjectPresentationLibraryNode* meta_ln = p.second + ->getPresentation(); + assert(meta_ln); + meta_ln->getNode()->setParent(ln->getNode()); + recursiveUpdatePosition(meta_ln->getNode()); + recursiveUpdatePhysics(p.second->getChildren()); + } + model_def_loader.cleanLibraryNodesAfterLoad(); Scripting::ScriptEngine::getInstance()->compileLoadedScripts(); diff --git a/src/tracks/track.hpp b/src/tracks/track.hpp index a0d5a5adb..f050f5959 100644 --- a/src/tracks/track.hpp +++ b/src/tracks/track.hpp @@ -374,6 +374,8 @@ private: /** List of all bezier curves in the track - for e.g. camera, ... */ std::vector m_all_curves; + std::vector > m_meta_library; + /** The number of laps the track will be raced in a random GP. * m_actual_number_of_laps is initialised with this value.*/ int m_default_number_of_laps; @@ -672,6 +674,10 @@ public: // ------------------------------------------------------------------------ /** Adds mesh to cleanup list */ void addCachedMesh(scene::IMesh* mesh) { m_all_cached_meshes.push_back(mesh); } + // ------------------------------------------------------------------------ + /** Adds the parent of the meta library for correction later */ + void addMetaLibrary(TrackObject* parent, TrackObject* meta_library) + { m_meta_library.emplace_back(parent, meta_library); } }; // class Track #endif diff --git a/src/tracks/track_object.cpp b/src/tracks/track_object.cpp index 0d441d123..255f00129 100644 --- a/src/tracks/track_object.cpp +++ b/src/tracks/track_object.cpp @@ -31,6 +31,7 @@ #include "physics/physical_object.hpp" #include "race/race_manager.hpp" #include "scriptengine/script_engine.hpp" +#include "tracks/track.hpp" #include "tracks/model_definition_loader.hpp" #include @@ -160,6 +161,10 @@ void TrackObject::init(const XMLNode &xml_node, scene::ISceneNode* parent, { xml_node.get("name", &m_name); m_presentation = new TrackObjectPresentationLibraryNode(this, xml_node, model_def_loader); + if (parent_library != NULL) + { + Track::getCurrentTrack()->addMetaLibrary(parent_library, this); + } } else if (type == "sfx-emitter") { diff --git a/src/tracks/track_object_presentation.cpp b/src/tracks/track_object_presentation.cpp index 414106b1b..5fe1e839c 100644 --- a/src/tracks/track_object_presentation.cpp +++ b/src/tracks/track_object_presentation.cpp @@ -180,6 +180,7 @@ TrackObjectPresentationLibraryNode::TrackObjectPresentationLibraryNode( { m_parent = NULL; m_start_executed = false; + m_reset_executed = false; std::string name; xml_node.get("name", &name); @@ -289,6 +290,22 @@ void TrackObjectPresentationLibraryNode::update(float dt) m_start_executed = true; std::string fn_name = StringUtils::insertValues("void %s::onStart(const string)", m_name.c_str()); + if (m_parent != NULL) + { + std::string lib_id = m_parent->getID(); + std::string* lib_id_ptr = &lib_id; + + Scripting::ScriptEngine::getInstance()->runFunction(false, fn_name, + [&](asIScriptContext* ctx) { + ctx->SetArgObject(0, lib_id_ptr); + }); + } + } + if (!m_reset_executed) + { + m_reset_executed = true; + std::string fn_name = StringUtils::insertValues("void %s::onReset(const string)", m_name.c_str()); + if (m_parent != NULL) { std::string lib_id = m_parent->getID(); diff --git a/src/tracks/track_object_presentation.hpp b/src/tracks/track_object_presentation.hpp index a2eedf32a..4a990b296 100644 --- a/src/tracks/track_object_presentation.hpp +++ b/src/tracks/track_object_presentation.hpp @@ -187,13 +187,18 @@ class TrackObjectPresentationLibraryNode : public TrackObjectPresentationSceneNo TrackObject* m_parent; using TrackObjectPresentationSceneNode::move; std::string m_name; - bool m_start_executed; + bool m_start_executed, m_reset_executed; public: TrackObjectPresentationLibraryNode(TrackObject* parent, const XMLNode& xml_node, ModelDefinitionLoader& model_def_loader); virtual ~TrackObjectPresentationLibraryNode(); - virtual void update(float dt); + virtual void update(float dt) OVERRIDE; + virtual void reset() OVERRIDE + { + m_reset_executed = false; + TrackObjectPresentationSceneNode::reset(); + } void move(const core::vector3df& xyz, const core::vector3df& hpr, const core::vector3df& scale, bool isAbsoluteCoord, bool moveChildrenPhysicalBodies); }; // TrackObjectPresentationLibraryNode diff --git a/src/utils/log.cpp b/src/utils/log.cpp index e5d39167e..b349bb9e7 100644 --- a/src/utils/log.cpp +++ b/src/utils/log.cpp @@ -35,6 +35,9 @@ Log::LogLevel Log::m_min_log_level = Log::LL_VERBOSE; bool Log::m_no_colors = false; FILE* Log::m_file_stdout = NULL; +std::string Log::m_prefix = ""; +size_t Log::m_buffer_size = 1; +Synchronised > Log::m_line_buffer; // ---------------------------------------------------------------------------- /** Selects background/foreground colors for the message depending on @@ -106,25 +109,22 @@ void Log::setTerminalColor(LogLevel level) */ void Log::resetTerminalColor() { - if(m_no_colors) - { - printf("\n"); - return; - } - + if(m_no_colors) return; #ifdef WIN32 SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), /*TERM_BLACK*/0 << 4 | /*TERM_LIGHTGRAY*/7); - printf("\n"); #else - printf("%c[0;;m\n", 0x1B); + printf("%c[0;;m", 0x1B); #endif } // resetTerminalColor // ---------------------------------------------------------------------------- -/** This actually prints the log message. If log messages are not redirected - * to a file, it tries to select a terminal colour. +/** This actually creates a log message. If the messages are to be buffered, + * it will be appended to the output buffer. If the buffer is full, it will + * be flushed. If the message is not to be buffered, it will be immediately + * written using writeLine(). + * \param level Log level of the message to print. * \param format A printf-like format string. * \param va_list The values to be printed for the format. @@ -132,105 +132,119 @@ void Log::resetTerminalColor() void Log::printMessage(int level, const char *component, const char *format, VALIST args) { - assert(level>=0 && level <=LL_FATAL); + assert(level >= 0 && level <= LL_FATAL); - if(level= LL_WARN || + if (!m_file_stdout || level >= LL_WARN || UserConfigParams::m_log_errors_to_console) // log to console & file { - VALIST out; - va_copy(out, args); - setTerminalColor((LogLevel)level); - #ifdef ANDROID - __android_log_vprint(alp, "SuperTuxKart", format, out); - #else - printf("[%s] %s: ", names[level], component); - vprintf(format, out); - #endif +#ifdef ANDROID + android_LogPriority alp; + switch (level) + { + // STK is using the levels slightly different from android + // (debug lowest, verbose above it; while android reverses + // this order. So to get the same behaviour (e.g. filter + // out debug message, but still get verbose, we swap + // the order here. + case LL_VERBOSE: alp = ANDROID_LOG_DEBUG; break; + case LL_DEBUG: alp = ANDROID_LOG_VERBOSE; break; + case LL_INFO: alp = ANDROID_LOG_INFO; break; + case LL_WARN: alp = ANDROID_LOG_WARN; break; + case LL_ERROR: alp = ANDROID_LOG_ERROR; break; + case LL_FATAL: alp = ANDROID_LOG_FATAL; break; + default: alp = ANDROID_LOG_FATAL; + } + __android_log_print(alp, "SuperTuxKart", "%s", line); +#else + printf("%s", line); +#endif resetTerminalColor(); // this prints a \n - - va_end(out); } #if defined(_MSC_FULL_VER) && defined(_DEBUG) - static char szBuff[2048]; - vsnprintf(szBuff, sizeof(szBuff), format, copy2); - - OutputDebugString("["); - OutputDebugString(names[level]); - OutputDebugString("] "); - OutputDebugString(component); - OutputDebugString(": "); - OutputDebugString(szBuff); - OutputDebugString("\r\n"); + OutputDebugString(line); #endif - - if(m_file_stdout) - { - fprintf (m_file_stdout, "[%s] %s: ", names[level], component); - vfprintf(m_file_stdout, format, copy); - fprintf (m_file_stdout, "\n"); - va_end(copy); - } + if (m_file_stdout) fprintf(m_file_stdout, "%s", line); #ifdef WIN32 if (level >= LL_FATAL) { - std::string message; - - char tmp[2048]; - sprintf(tmp, "[%s] %s: ", names[level], component); - message += tmp; - - VALIST out; - va_copy(out, args); - vsprintf(tmp, format, out); - message += tmp; - va_end(out); - - MessageBoxA(NULL, message.c_str(), "SuperTuxKart - Fatal error", MB_OK); + MessageBoxA(NULL, line, "SuperTuxKart - Fatal error", MB_OK); } #endif -} // printMessage +} // _fluhBuffers +// ---------------------------------------------------------------------------- +/** Flushes all stored log messages to the various output devices (thread safe). + */ +void Log::flushBuffers() +{ + m_line_buffer.lock(); + for (unsigned int i = 0; i < m_line_buffer.getData().size(); i++) + { + const LineInfo &li = m_line_buffer.getData()[i]; + writeLine(li.m_line.c_str(), li.m_level); + } + m_line_buffer.getData().clear(); + m_line_buffer.unlock(); +} // flushBuffers // ---------------------------------------------------------------------------- /** This function opens the files that will contain the output. diff --git a/src/utils/log.hpp b/src/utils/log.hpp index 61726cb8b..1d5ceb5bc 100644 --- a/src/utils/log.hpp +++ b/src/utils/log.hpp @@ -20,11 +20,15 @@ #ifndef HEADER_LOG_HPP #define HEADER_LOG_HPP +#include "utils/synchronised.hpp" + #include #include #include #include #include +#include + #ifdef __GNUC__ # define VALIST __gnuc_va_list @@ -59,13 +63,30 @@ private: /** The file where stdout output will be written */ static FILE* m_file_stdout; + /** An optional buffer for lines to be output. */ + struct LineInfo + { + std::string m_line; + int m_level; + }; + static Synchronised > m_line_buffer; + + /** <0 if no buffered logging is to be used, otherwise this is + ** the maximum number of lines the buffer should hold. */ + static size_t m_buffer_size; + + /** An optional prefix to be printed. */ + static std::string m_prefix; + static void setTerminalColor(LogLevel level); static void resetTerminalColor(); - -public: + static void writeLine(const char *line, int level); static void printMessage(int level, const char *component, const char *format, VALIST va_list); + +public: + // ------------------------------------------------------------------------ /** A simple macro to define the various log functions. * Note that an assert is added so that a debugger is triggered @@ -95,7 +116,12 @@ public: static void openOutputFiles(const std::string &logout); static void closeOutputFiles(); + static void flushBuffers(); + // ------------------------------------------------------------------------ + /** Sets the number of lines to buffer. Setting the buffer size to a + * a value <=1 means no buffering, lines will be immediately printed. */ + static void setBufferSize(size_t n) { m_buffer_size = n; } // ------------------------------------------------------------------------ /** Defines the minimum log level to be displayed. */ static void setLogLevel(int n) @@ -120,5 +146,9 @@ public: { m_no_colors = true; } // disableColor + // ------------------------------------------------------------------------ + /** Sets a prefix to be printed before each line. To disable the prefix, + * set it to "". */ + static void setPrefix(const std::string &prefix) { m_prefix = prefix; } }; // Log #endif diff --git a/src/utils/profiler.cpp b/src/utils/profiler.cpp index 1c45bc16d..00d6951ba 100644 --- a/src/utils/profiler.cpp +++ b/src/utils/profiler.cpp @@ -347,10 +347,11 @@ void Profiler::draw() double start = 99999.0f; double end = -1.0f; - // Use this thread (thread 0) to compute start and end time. All other + // Use this thread to compute start and end time. All other // threads might have 'unfinished' events, or multiple identical events - // in this frame (i.e. start time would be incorrect(. - AllEventData &aed = m_all_threads_data[0].m_all_event_data; + // in this frame (i.e. start time would be incorrect). + int thread_id = getThreadID(); + AllEventData &aed = m_all_threads_data[thread_id].m_all_event_data; AllEventData::iterator j; for (j = aed.begin(); j != aed.end(); ++j) { @@ -381,7 +382,7 @@ void Profiler::draw() { AllEventData::iterator j = aed.find(td.m_ordered_headings[k]); const Marker &marker = j->second.getMarker(indx); - if (i == 0) + if (i == thread_id) start_xpos = factor*marker.getStart(); core::rect pos((s32)(x_offset + start_xpos), (s32)(y_offset + i*line_height), diff --git a/tools/windows_installer/supertuxkart-64bit.nsi b/tools/windows_installer/supertuxkart-64bit.nsi index 5d4f5aaad..c53a1d4ea 100755 --- a/tools/windows_installer/supertuxkart-64bit.nsi +++ b/tools/windows_installer/supertuxkart-64bit.nsi @@ -43,7 +43,7 @@ !define DESCRIPTION "3D open-source arcade racer with a variety characters, tracks, and modes to play" Name "${APPNAMEANDVERSION}" - OutFile "${APPNAMEANDVERSION} installer.exe" + OutFile "${APPNAMEANDVERSION} installer-64bit.exe" # These will be displayed by the "Click here for support information" link in "Add/Remove Programs" # It is possible to use "mailto:" links in here to open the email client @@ -174,12 +174,12 @@ Section "Install" SecMain ; Try to find the binary directory in a list of 'typical' names: ; The first found directory is used - ${!setIfUndefinedAndExists} EXEC_PATH ..\..\bld\bin\RelWithDebInfo\*.* - ${!setIfUndefinedAndExists} EXEC_PATH ..\..\bld\bin\Release\*.* - ${!setIfUndefinedAndExists} EXEC_PATH ..\..\build\bin\RelWithDebInfo\*.* - ${!setIfUndefinedAndExists} EXEC_PATH ..\..\build\bin\Release\*.* - ${!setIfUndefinedAndExists} EXEC_PATH ..\..\cmake_build\bin\RelWithDebInfo\*.* - ${!setIfUndefinedAndExists} EXEC_PATH ..\..\cmake_build\bin\Release\*.* + ${!setIfUndefinedAndExists} EXEC_PATH ..\..\bld-64\bin\RelWithDebInfo\*.* + ${!setIfUndefinedAndExists} EXEC_PATH ..\..\bld-64\bin\Release\*.* + ${!setIfUndefinedAndExists} EXEC_PATH ..\..\build-64\bin\RelWithDebInfo\*.* + ${!setIfUndefinedAndExists} EXEC_PATH ..\..\build-64\bin\Release\*.* + ${!setIfUndefinedAndExists} EXEC_PATH ..\..\cmake_build-64\bin\RelWithDebInfo\*.* + ${!setIfUndefinedAndExists} EXEC_PATH ..\..\cmake_build-64\bin\Release\*.* File /x *.ilk ${EXEC_PATH} @@ -206,7 +206,7 @@ Section "Install" SecMain File *.ico ; prereqs SetOutPath "$INSTDIR\prerequisites" - File /r prerequisites\*.* + File /r prerequisites\vcredist_x64.exe ; data + assets SetOutPath "$INSTDIR\data\" @@ -281,7 +281,6 @@ Section "Uninstall" redist DELETE /REBOOTOK "$INSTDIR\icon.ico" DELETE /REBOOTOK "$INSTDIR\libcurl-4.dll" DELETE /REBOOTOK "$INSTDIR\libeay32.dll" - DELETE /REBOOTOK "$INSTDIR\libidn-11.dll" DELETE /REBOOTOK "$INSTDIR\License.txt" DELETE /REBOOTOK "$INSTDIR\libfreetype.dll" DELETE /REBOOTOK "$INSTDIR\libfribidi-0.dll" diff --git a/tools/windows_installer/supertuxkart.nsi b/tools/windows_installer/supertuxkart.nsi index 4b9aefb22..89e4e498f 100755 --- a/tools/windows_installer/supertuxkart.nsi +++ b/tools/windows_installer/supertuxkart.nsi @@ -35,7 +35,7 @@ !define VERSION_MINOR 9 !define VERSION_REVISION 3 ; Empty means stable, could be -git, -rc1 - !define VERSION_BUILD "-rc1" + !define VERSION_BUILD "-git" ;Name and file !define APPNAME "SuperTuxKart" @@ -43,7 +43,7 @@ !define DESCRIPTION "3D open-source arcade racer with a variety characters, tracks, and modes to play" Name "${APPNAMEANDVERSION}" - OutFile "${APPNAMEANDVERSION} installer.exe" + OutFile "${APPNAMEANDVERSION} installer-32bit.exe" # These will be displayed by the "Click here for support information" link in "Add/Remove Programs" # It is possible to use "mailto:" links in here to open the email client @@ -206,7 +206,7 @@ Section "Install" SecMain File *.ico ; prereqs SetOutPath "$INSTDIR\prerequisites" - File /r prerequisites\*.* + File /r prerequisites\vcredist_x86.exe ; data + assets SetOutPath "$INSTDIR\data\"