# French translation for QEMU.
# This file is put in the public domain.
#
# Aurelien Jarno <aurelien@aurel32.net>, 2013, 2014.
msgid ""
msgstr ""
"Project-Id-Version: QEMU 1.4.50\n"
"Report-Msgid-Bugs-To: qemu-devel@nongnu.org\n"
"POT-Creation-Date: 2014-07-28 23:14+0200\n"
"PO-Revision-Date: 2014-07-28 23:25+0200\n"
"Last-Translator: Aurelien Jarno <aurelien@aurel32.net>\n"
"Language-Team: French <FR@li.org>\n"
"Language: fr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Lokalize 1.4\n"

#: ui/gtk.c:321
msgid " - Press Ctrl+Alt+G to release grab"
msgstr "- Appuyer sur Ctrl+Alt+G pour arrêter la capture"

#: ui/gtk.c:325
msgid " [Paused]"
msgstr " [En pause]"

#: ui/gtk.c:1601
msgid "_Pause"
msgstr "_Pause"

#: ui/gtk.c:1607
msgid "_Reset"
msgstr "_Réinitialiser"

#: ui/gtk.c:1610
msgid "Power _Down"
msgstr "_Éteindre"

#: ui/gtk.c:1616
msgid "_Quit"
msgstr "_Quitter"

#: ui/gtk.c:1692
msgid "_Fullscreen"
msgstr "Mode _plein écran"

#: ui/gtk.c:1702
msgid "Zoom _In"
msgstr "Zoom _avant"

#: ui/gtk.c:1709
msgid "Zoom _Out"
msgstr "_Zoom arrière"

#: ui/gtk.c:1716
msgid "Best _Fit"
msgstr "Zoom _idéal"

#: ui/gtk.c:1723
msgid "Zoom To _Fit"
msgstr "Zoomer pour a_juster"

#: ui/gtk.c:1729
msgid "Grab On _Hover"
msgstr "Capturer en _survolant"

#: ui/gtk.c:1732
msgid "_Grab Input"
msgstr "_Capturer les entrées"

#: ui/gtk.c:1761
msgid "Show _Tabs"
msgstr "Montrer les _onglets"

#: ui/gtk.c:1764
msgid "Detach Tab"
msgstr "_Détacher l'onglet"

#: ui/gtk.c:1778
msgid "_Machine"
msgstr "_Machine"

#: ui/gtk.c:1783
msgid "_View"
msgstr "_Vue"
