diff --git a/create_pot_file.sh b/create_pot_file.sh
new file mode 100755
index 0000000000000000000000000000000000000000..c009b286f5e5f368590bcf9e5469d284c08e6ddd
--- /dev/null
+++ b/create_pot_file.sh
@@ -0,0 +1,3 @@
+#! /bin/sh
+
+xgettext --from-code=UTF-8 --files-from=./files_to_translate --keyword=translatable --keyword=_ --output=pamac.pot
diff --git a/data/polkit/org.manjaro.pamac.policy b/data/polkit/org.manjaro.pamac.policy
index 91f2d77d37a1d95d3a9daf635080924d85905f30..8160f874da6eff5fddb407ae23636d96c0fa2d65 100644
--- a/data/polkit/org.manjaro.pamac.policy
+++ b/data/polkit/org.manjaro.pamac.policy
@@ -4,10 +4,11 @@
  "http://www.freedesktop.org/standards/PolicyKit/1.0/policyconfig.dtd">
 <policyconfig>
   <vendor>Manjaro</vendor>
-  <icon_name>pamac</icon_name>
+  <vendor_url>http://manjaro.org/</vendor_url>
+  <icon_name>package-x-generic</icon_name>
   <action id="org.manjaro.pamac.commit">
-    <message>Authentication is required to change alpm database</message>
-    <message xml:lang="fr">L'authentification est nécessaire pour changer la base de données alpm</message>
+    <message>Authentication is required</message>
+    <message xml:lang="fr">Authentification nécessaire</message>
     <defaults>
       <allow_any>no</allow_any>
       <allow_inactive>no</allow_inactive>
diff --git a/files_to_translate b/files_to_translate
new file mode 100644
index 0000000000000000000000000000000000000000..d985b4cb5db1ea45589eea633236809b7f9899bc
--- /dev/null
+++ b/files_to_translate
@@ -0,0 +1,6 @@
+./pamac-daemon.py
+./pamac-tray.py
+./pamac/main.py
+./pamac/common.py
+./gui/manager.glade
+./gui/updater.glade
diff --git a/gui/manager.glade b/gui/manager.glade
index c448bf9331c85a2f10c080ad5438e63f6b426d6d..3f5f9a0f254ab20623ee4065740b296129f830e9 100644
--- a/gui/manager.glade
+++ b/gui/manager.glade
@@ -677,7 +677,7 @@
                           <object class="GtkTreeViewColumn" id="installed_column">
                             <property name="resizable">True</property>
                             <property name="sizing">autosize</property>
-                            <property name="title" translatable="yes">Installed</property>
+                            <property name="title" translatable="yes">State</property>
                             <property name="clickable">True</property>
                             <property name="sort_indicator">True</property>
                             <property name="sort_column_id">1</property>
diff --git a/pamac-daemon b/pamac-daemon.py
similarity index 88%
rename from pamac-daemon
rename to pamac-daemon.py
index 85c908c1da127174d0cf759001c16a152f5154ae..0590271921290ab8c9a777392ec1aa8cebe2f9df 100755
--- a/pamac-daemon
+++ b/pamac-daemon.py
@@ -1,5 +1,5 @@
 #! /usr/bin/python
-# -*-coding:utf-8-*-
+# -*- coding:utf-8 -*-
 
 import dbus
 import dbus.service
@@ -11,6 +11,12 @@ import pyalpm
 from multiprocessing import Process
 from pamac import config, common
 
+# i18n
+import gettext
+gettext.bindtextdomain('pamac', '/usr/share/locale')
+gettext.textdomain('pamac')
+_ = gettext.gettext
+ 
 class PamacDBusService(dbus.service.Object):
 	def __init__(self):
 		bus=dbus.SystemBus()
@@ -21,7 +27,7 @@ class PamacDBusService(dbus.service.Object):
 		self.error = ''
 		self.warning = ''
 		self.previous_action = ''
-		self.action = 'Preparing...'
+		self.action = _('Preparing')+'...'
 		self.previous_icon = ''
 		self.icon = '/usr/share/pamac/icons/24x24/status/setup.png'
 		self.previous_target = ''
@@ -60,48 +66,48 @@ class PamacDBusService(dbus.service.Object):
 
 	def cb_event(self, ID, event, tupel):
 		if ID is 1:
-			self.action = 'Checking dependencies...'
+			self.action = _('Checking dependencies')+'...'
 			self.icon = '/usr/share/pamac/icons/24x24/status/package-search.png'
 		elif ID is 3:
-			self.action = 'Checking file conflicts...'
+			self.action = _('Checking file conflicts')+'...'
 			self.icon = '/usr/share/pamac/icons/24x24/status/package-search.png'
 		elif ID is 5:
-			self.action = 'Resolving dependencies...'
+			self.action = _('Resolving dependencies')+'...'
 			self.icon = '/usr/share/pamac/icons/24x24/status/setup.png'
 		elif ID is 7:
-			self.action = 'Checking inter conflicts...'
+			self.action = _('Checking inter conflicts')+'...'
 			self.icon = '/usr/share/pamac/icons/24x24/status/package-search.png'
 		elif ID is 9:
-			self.action = 'Installing...'
+			self.action = _('Installing')+'...'
 			self.icon = '/usr/share/pamac/icons/24x24/status/package-add.png'
 		elif ID is 10:
-			formatted_event = 'Installed {} ({})'.format(tupel[0].name, tupel[0].version)
+			formatted_event = 'Installed {pkgname} ({pkgversion})'.format(pkgname = tupel[0].name, pkgversion = tupel[0].version)
 			common.write_log_file(formatted_event)
 			print(formatted_event)
 		elif ID is 11:
-			self.action = 'Removing...'
+			self.action = _('Removing')+'...'
 			self.icon = '/usr/share/pamac/icons/24x24/status/package-delete.png'
 		elif ID is 12:
-			formatted_event = 'Removed {} ({})'.format(tupel[0].name, tupel[0].version)
+			formatted_event = 'Removed {pkgname} ({pkgversion})'.format(pkgname = tupel[0].name, pkgversion = tupel[0].version)
 			common.write_log_file(formatted_event)
 			print(formatted_event)
 		elif ID is 13:
-			self.action = 'Upgrading...'
+			self.action = _('Upgrading')+'...'
 			self.icon = '/usr/share/pamac/icons/24x24/status/package-update.png'
 		elif ID is 14:
-			formatted_event = 'Upgraded {} ({} -> {})'.format(tupel[1].name, tupel[1].version, tupel[0].version)
+			formatted_event = 'Upgraded {pkgname} ({oldversion} -> {newversion})'.format(pkgname = tupel[1].name, oldversion = tupel[1].version, newversion = tupel[0].version)
 			common.write_log_file(formatted_event)
 			print(formatted_event)
 		elif ID is 15:
-			self.action = 'Checking integrity...'
+			self.action = _('Checking integrity')+'...'
 			self.icon = '/usr/share/pamac/icons/24x24/status/package-search.png'
 			self.already_transferred = 0
 		elif ID is 17:
-			self.action = 'Loading packages files...'
+			self.action = _('Loading packages files')+'...'
 			self.icon = '/usr/share/pamac/icons/24x24/status/package-search.png'
 			print('Loading packages files')
 		elif ID is 26:
-			self.action = 'Configuring...'
+			self.action = _('Configuring')+'...'
 			self.icon = '/usr/share/pamac/icons/24x24/status/setup.png'
 			self.EmitPercent(str(2))
 			print('Configuring a package')
@@ -153,12 +159,12 @@ class PamacDBusService(dbus.service.Object):
 						size = pkg.size
 				if _transferred == size:
 					self.already_transferred += size
-				self.action = 'Downloading '+common.format_size(self.total_size)
+				self.action = _('Downloading {size}'.format(size = common.format_size(self.total_size)))
 				self.target = _target
 				self.percent = round(fraction, 2)
 				self.icon = '/usr/share/pamac/icons/24x24/status/package-download.png'
 			else:
-				self.action = 'Refreshing...'
+				self.action = _('Refreshing')+'...'
 				self.target = _target
 				self.percent = 2
 				self.icon = '/usr/share/pamac/icons/24x24/status/refresh-cache.png'
@@ -261,7 +267,7 @@ class PamacDBusService(dbus.service.Object):
 			finally:
 				return self.error 
 		else :
-			return 'You are not authorized'
+			return _('Authentication failed')
 
 	@dbus.service.method('org.manjaro.pamac', '', 's')
 	def Sysupgrade(self):
@@ -365,11 +371,11 @@ class PamacDBusService(dbus.service.Object):
 				if self.error:
 					self.EmitTransactionError(self.error)
 				else:
-					self.EmitTransactionDone('Transaction successfully finished')
+					self.EmitTransactionDone(_('Transaction successfully finished'))
 		try:
 			authorized = self.policykit_test(sender,connexion,'org.manjaro.pamac.commit')
 		except dbus.exceptions.DBusException as e:
-			self.EmitTransactionError('You are not authorized')
+			self.EmitTransactionError(_('Authentication failed'))
 			success('')
 		else:
 			if authorized:
@@ -377,7 +383,7 @@ class PamacDBusService(dbus.service.Object):
 				self.task.start()
 			else :
 				self.t.release()
-				self.EmitTransactionError('You are not authorized')
+				self.EmitTransactionError(_('Authentication failed'))
 			success('')
 
 	@dbus.service.signal('org.manjaro.pamac')
@@ -399,7 +405,7 @@ class PamacDBusService(dbus.service.Object):
 			finally:
 				return self.error 
 		else :
-			return 'You are not authorized'
+			return _('Authentication failed')
 
 	@dbus.service.method('org.manjaro.pamac')
 	def StopDaemon(self):
diff --git a/pamac-install b/pamac-install.py
similarity index 98%
rename from pamac-install
rename to pamac-install.py
index db0df044ebcc1941db18fa1f23d9418eb0e93804..602307a0058806e313c99e570485216f0686da41 100755
--- a/pamac-install
+++ b/pamac-install.py
@@ -1,5 +1,5 @@
 #! /usr/bin/python
-# -*-coding:utf-8 -*-
+# -*- coding:utf-8 -*-
 
 from gi.repository import GObject
 from sys import argv
diff --git a/pamac-manager b/pamac-manager.py
similarity index 73%
rename from pamac-manager
rename to pamac-manager.py
index 9c3a8ea2297ba6d60cdb35e6b091226f80088cf8..e24a426708a84485d33e07ab6da59797034e2188 100755
--- a/pamac-manager
+++ b/pamac-manager.py
@@ -1,5 +1,5 @@
 #! /usr/bin/python
-# -*-coding:utf-8 -*-
+# -*- coding:utf-8 -*-
 
 from pamac import main
 
diff --git a/pamac-refresh b/pamac-refresh.py
similarity index 96%
rename from pamac-refresh
rename to pamac-refresh.py
index 033930c0f1b92f9c5e1143ef19494f042d84e482..94e34a198524921b118ba6fdb23cb24222e76411 100755
--- a/pamac-refresh
+++ b/pamac-refresh.py
@@ -1,5 +1,5 @@
 #! /usr/bin/python
-# -*-coding:utf-8-*-
+# -*- coding:utf-8 -*-
 
 from gi.repository import GObject
 from pamac import common, transaction
diff --git a/pamac-tray b/pamac-tray.py
similarity index 81%
rename from pamac-tray
rename to pamac-tray.py
index da44fab7b928536c9a86ae1424338dcb9f45a8d3..fc0defd39f0ea99eda02dbf0c52e502e0dda0bb0 100755
--- a/pamac-tray
+++ b/pamac-tray.py
@@ -1,21 +1,28 @@
 #! /usr/bin/python
-# -*-coding:utf-8-*-
+# -*- coding:utf-8 -*-
 
 from gi.repository import Gtk, GObject
 from subprocess import Popen
-from pamac import transaction
+from pamac import transaction, common
 import dbus
 import threading
 
+# i18n
+import gettext
+gettext.bindtextdomain('pamac', '/usr/share/locale')
+gettext.textdomain('pamac')
+_ = gettext.gettext
+
 GObject.threads_init()
 bus = dbus.SystemBus()
 
 icon = ''
 info = ''
 update_icon = '/usr/share/pamac/icons/scalable/status/update-normal.svg'
-update_info = '{} available updates'
+update_info = _('{number} available updates')
+one_update_info = _('1 available update')
 noupdate_icon = '/usr/share/pamac/icons/scalable/status/update-enhancement.svg'
-noupdate_info = ' No available update'
+noupdate_info = _('Your system is up-to-date')
 
 class Tray:
 	def __init__(self):
@@ -23,13 +30,13 @@ class Tray:
 		self.statusIcon.set_visible(True)
 
 		self.menu = Gtk.Menu()
-		self.menuItem = Gtk.ImageMenuItem('Install/Check for updates')
+		self.menuItem = Gtk.ImageMenuItem(_('Install/Check for updates'))
 		self.menuItem.connect('activate', self.execute_update, self.statusIcon)
 		self.menu.append(self.menuItem)
-		self.menuItem = Gtk.ImageMenuItem('Run pamac-manager')
+		self.menuItem = Gtk.ImageMenuItem(_('Run pamac-manager'))
 		self.menuItem.connect('activate', self.execute_manager, self.statusIcon)
 		self.menu.append(self.menuItem)
-		self.menuItem = Gtk.ImageMenuItem('Quit')
+		self.menuItem = Gtk.ImageMenuItem(_('Quit'))
 		self.menuItem.connect('activate', self.quit_tray, self.statusIcon)
 		self.menu.append(self.menuItem)
 
@@ -90,7 +97,10 @@ def set_icon(updates):
 	global info
 	if updates:
 		icon = update_icon
-		info = update_info.format(updates)
+		if int(updates) == 1:
+			info = one_update_info
+		else:
+			info = update_info.format(number = updates)
 		Popen(['notify-send', '-i', icon, '-u', 'normal', 'Pamac', info])
 	else:
 		icon = noupdate_icon
diff --git a/pamac-updater b/pamac-updater.py
similarity index 73%
rename from pamac-updater
rename to pamac-updater.py
index dc158b45074a7b6a807d3ef9af68bfb163509030..c5b14b11d7ab4e2dc6cdc52ab32966d05c8641ad 100755
--- a/pamac-updater
+++ b/pamac-updater.py
@@ -1,5 +1,5 @@
 #! /usr/bin/python
-# -*-coding:utf-8 -*-
+# -*- coding:utf-8 -*-
 
 from pamac import main
 
diff --git a/pamac.pot b/pamac.pot
new file mode 100644
index 0000000000000000000000000000000000000000..7935c62516175302f025e41196d741cc89b081b4
--- /dev/null
+++ b/pamac.pot
@@ -0,0 +1,339 @@
+## Translation of Pamac.
+# Copyright (C) 2007-2012 Free Software Foundation, Inc.
+# This file is distributed under the same license as the Pamac package.
+# Guillaume Benoit <guillaume@manjaro.org>, 2013.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: pamac\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2013-03-31 18:55+0200\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: pamac-daemon.py:30 pamac/main.py:594
+msgid "Preparing"
+msgstr ""
+
+#: pamac-daemon.py:69
+msgid "Checking dependencies"
+msgstr ""
+
+#: pamac-daemon.py:72
+msgid "Checking file conflicts"
+msgstr ""
+
+#: pamac-daemon.py:75
+msgid "Resolving dependencies"
+msgstr ""
+
+#: pamac-daemon.py:78
+msgid "Checking inter conflicts"
+msgstr ""
+
+#: pamac-daemon.py:81 pamac/main.py:73
+msgid "Installing"
+msgstr ""
+
+#: pamac-daemon.py:88 pamac/main.py:73
+msgid "Removing"
+msgstr ""
+
+#: pamac-daemon.py:95 pamac/main.py:73
+msgid "Upgrading"
+msgstr ""
+
+#: pamac-daemon.py:102
+msgid "Checking integrity"
+msgstr ""
+
+#: pamac-daemon.py:106
+msgid "Loading packages files"
+msgstr ""
+
+#: pamac-daemon.py:110 pamac/main.py:73
+msgid "Configuring"
+msgstr ""
+
+#: pamac-daemon.py:162
+msgid "Downloading {size}"
+msgstr ""
+
+#: pamac-daemon.py:167 pamac/main.py:504
+msgid "Refreshing"
+msgstr ""
+
+#: pamac-daemon.py:270 pamac-daemon.py:378 pamac-daemon.py:386
+#: pamac-daemon.py:408
+msgid "Authentication failed"
+msgstr ""
+
+#: pamac-daemon.py:374
+msgid "Transaction successfully finished"
+msgstr ""
+
+#: pamac-tray.py:22
+msgid "{number} available updates"
+msgstr ""
+
+#: pamac-tray.py:23
+msgid "1 available update"
+msgstr ""
+
+#: pamac-tray.py:25
+msgid "Your system is up-to-date"
+msgstr ""
+
+#: pamac-tray.py:33
+msgid "Install/Check for updates"
+msgstr ""
+
+#: pamac-tray.py:36
+msgid "Run pamac-manager"
+msgstr ""
+
+#: pamac-tray.py:39
+msgid "Quit"
+msgstr ""
+
+#: pamac/main.py:110 pamac/main.py:923
+msgid "Installed"
+msgstr ""
+
+#: pamac/main.py:110 pamac/main.py:925
+msgid "Uninstalled"
+msgstr ""
+
+#: pamac/main.py:110 pamac/main.py:927
+msgid "Orphans"
+msgstr ""
+
+#: pamac/main.py:110 pamac/main.py:428 pamac/main.py:929
+msgid "To install"
+msgstr ""
+
+#: pamac/main.py:110 pamac/main.py:408 pamac/main.py:931
+msgid "To remove"
+msgstr ""
+
+#: pamac/main.py:129 pamac/main.py:939
+msgid "local"
+msgstr ""
+
+#: pamac/main.py:295
+msgid "No package found"
+msgstr ""
+
+#: pamac/main.py:346
+msgid "Licenses"
+msgstr ""
+
+#: pamac/main.py:351
+msgid "Depends On"
+msgstr ""
+
+#: pamac/main.py:353
+msgid "Optional Deps"
+msgstr ""
+
+#: pamac/main.py:356
+msgid "Required By"
+msgstr ""
+
+#: pamac/main.py:358
+msgid "Provides"
+msgstr ""
+
+#: pamac/main.py:360
+msgid "Replaces"
+msgstr ""
+
+#: pamac/main.py:362
+msgid "Conflicts With"
+msgstr ""
+
+#: pamac/main.py:367
+msgid "Repository"
+msgstr ""
+
+#: pamac/main.py:369 gui/manager.glade:539
+msgid "Groups"
+msgstr ""
+
+#: pamac/main.py:371
+msgid "Compressed Size"
+msgstr ""
+
+#: pamac/main.py:372
+msgid "Download Size"
+msgstr ""
+
+#: pamac/main.py:374
+msgid "Installed Size"
+msgstr ""
+
+#: pamac/main.py:375
+msgid "Packager"
+msgstr ""
+
+#: pamac/main.py:379
+msgid "Install Date"
+msgstr ""
+
+#: pamac/main.py:381
+msgid "Explicitly installed"
+msgstr ""
+
+#: pamac/main.py:383
+msgid "Installed as a dependency for another package"
+msgstr ""
+
+#: pamac/main.py:385
+msgid "Unknown"
+msgstr ""
+
+#: pamac/main.py:386
+msgid "Install Reason"
+msgstr ""
+
+#: pamac/main.py:391
+msgid "Signatures"
+msgstr ""
+
+#: pamac/main.py:395
+msgid "Backup files"
+msgstr ""
+
+#: pamac/main.py:405
+msgid "<big><b>Transaction Summary</b></big>"
+msgstr ""
+
+#: pamac/main.py:419 pamac/main.py:528
+msgid "<b>Total download size: </b>"
+msgstr ""
+
+#: pamac/main.py:435
+msgid "To update"
+msgstr ""
+
+#: pamac/main.py:520 pamac/main.py:1048
+msgid "<big><b>Your system is up-to-date</b></big>"
+msgstr ""
+
+#: pamac/main.py:530
+msgid "<big><b>1 available update</b></big>"
+msgstr ""
+
+#: pamac/main.py:532
+msgid "<big><b>{number} available updates</b></big>"
+msgstr ""
+
+#: pamac/main.py:691 pamac/main.py:761
+msgid "{pkgname1} will be replaced by {pkgname2}"
+msgstr ""
+
+#: pamac/main.py:708 pamac/main.py:742
+msgid ""
+"{pkgname1} conflicts with {pkgname2} but cannot be removed because it is "
+"needed by {pkgname3}"
+msgstr ""
+
+#: pamac/main.py:713 pamac/main.py:747
+msgid "{pkgname1} conflicts with {pkgname2}"
+msgstr ""
+
+#: pamac/main.py:723
+msgid ""
+"{pkgname1} conflicts with {pkgname2}\n"
+"None of them will be installed"
+msgstr ""
+
+#: pamac/main.py:782
+msgid ""
+"<b>{pkgname} is provided by {number} packages.\n"
+"Please choose the one(s) you want to install:</b>"
+msgstr ""
+
+#: pamac/main.py:808
+msgid "No package is selected"
+msgstr ""
+
+#: pamac/main.py:849
+msgid "Nothing to do"
+msgstr ""
+
+#: pamac/main.py:1032
+msgid "Pamac is already running"
+msgstr ""
+
+#: pamac/common.py:13
+#, python-format
+msgid "%.1f KiB"
+msgstr ""
+
+#: pamac/common.py:16
+#, python-format
+msgid "%.2f MiB"
+msgstr ""
+
+#: gui/manager.glade:7
+msgid "Choose"
+msgstr ""
+
+#: gui/manager.glade:112
+msgid "Summary"
+msgstr ""
+
+#: gui/manager.glade:256
+msgid "Progress"
+msgstr ""
+
+#: gui/manager.glade:402
+msgid "Package Manager"
+msgstr ""
+
+#: gui/manager.glade:492
+msgid "Search"
+msgstr ""
+
+#: gui/manager.glade:587 gui/manager.glade:680
+msgid "State"
+msgstr ""
+
+#: gui/manager.glade:635
+msgid "Repos"
+msgstr ""
+
+#: gui/manager.glade:710
+msgid "Name"
+msgstr ""
+
+#: gui/manager.glade:728
+msgid "Size"
+msgstr ""
+
+#: gui/manager.glade:829
+msgid "Infos"
+msgstr ""
+
+#: gui/manager.glade:889
+msgid "Deps"
+msgstr ""
+
+#: gui/manager.glade:954
+msgid "Details"
+msgstr ""
+
+#: gui/manager.glade:1002
+msgid "Files"
+msgstr ""
+
+#: gui/updater.glade:6
+msgid "Update Manager"
+msgstr ""
diff --git a/pamac/common.py b/pamac/common.py
index 4cc0089e7396dd6f5a7d608c17eb40d59fc0fa73..48e48e1f0fd4c6e12b5ec5cb186307d827202e5c 100644
--- a/pamac/common.py
+++ b/pamac/common.py
@@ -1,13 +1,19 @@
 #! /usr/bin/python
-# -*-coding:utf-8-*-
+# -*- coding:utf-8 -*-
+
+# i18n
+import gettext
+gettext.bindtextdomain('pamac', '/usr/share/locale')
+gettext.textdomain('pamac')
+_ = gettext.gettext
 
 def format_size(size):
 	KiB_size = size / 1024
 	if KiB_size < 1000:
-		size_string = '%.1f KiB' % (KiB_size)
+		size_string = _('%.1f KiB') % (KiB_size)
 		return size_string
 	else:
-		size_string = '%.2f MiB' % (KiB_size / 1024)
+		size_string = _('%.2f MiB') % (KiB_size / 1024)
 		return size_string
 
 def format_pkg_name(name):
diff --git a/pamac/config.py b/pamac/config.py
index 89d37e8a0e2d6dc4ea89eeda4c58228838d0f6fd..2506d4133468ec9baea80ba8a2aac03603bf6594 100644
--- a/pamac/config.py
+++ b/pamac/config.py
@@ -1,5 +1,5 @@
 #! /usr/bin/python
-# -*-coding:utf-8 -*-
+# -*- coding:utf-8 -*-
 
 import io
 import os
diff --git a/pamac/main.py b/pamac/main.py
index 2ef91ca275f5ebcf716e1d010828ea25c244d9bc..2724626f7b7b0395502ca4faacdf76908105e737 100644
--- a/pamac/main.py
+++ b/pamac/main.py
@@ -1,5 +1,5 @@
 #! /usr/bin/python
-# -*-coding:utf-8 -*-
+# -*- coding:utf-8 -*-
 
 from gi.repository import Gtk
 from gi.repository.GdkPixbuf import Pixbuf
@@ -10,7 +10,16 @@ from time import strftime, localtime
 
 from pamac import config, common, transaction
 
+# i18n
+import gettext
+import locale
+locale.bindtextdomain('pamac', '/usr/share/locale')
+gettext.bindtextdomain('pamac', '/usr/share/locale')
+gettext.textdomain('pamac')
+_ = gettext.gettext
+
 interface = Gtk.Builder()
+interface.set_translation_domain('pamac')
 
 #interface.add_from_file('/usr/share/pamac/gui/dialogs.glade')
 #ErrorDialog = interface.get_object('ErrorDialog')
@@ -63,7 +72,7 @@ update_bottom_label = interface.get_object('update_bottom_label')
 def action_signal_handler(action):
 	if action:
 		progress_label.set_text(action)
-	if ('Installing' in action) or ('Removing' in action) or ('Upgrading' in action) or ('Configuring' in action):
+	if (_('Installing') in action) or (_('Removing') in action) or (_('Upgrading') in action) or (_('Configuring') in action):
 		ProgressCancelButton.set_visible(False)
 	else:
 		ProgressCancelButton.set_visible(True)
@@ -100,7 +109,7 @@ current_filter = (None, None)
 transaction_type = None
 transaction_dict = {}
 mode = None
-states = ['Installed', 'Uninstalled', 'Orphans', 'To install', 'To remove']
+states = [_('Installed'), _('Uninstalled'), _('Orphans'), _('To install'), _('To remove')]
 for state in states:
 	state_list.append([state])
 
@@ -119,7 +128,7 @@ def get_repos():
 	repos_list.clear()
 	for repo in transaction.handle.get_syncdbs():
 		repos_list.append([repo.name])
-	repos_list.append(['local'])
+	repos_list.append([_('local')])
 
 def set_list_dict_search(*patterns):
 	global pkg_name_list
@@ -285,7 +294,7 @@ def set_list_dict_repos(repo):
 def refresh_packages_list():
 	packages_list.clear()
 	if not pkg_name_list:
-		packages_list.append(["No package found", False, False, False, search_icon, '', 0])
+		packages_list.append([_('No package found'), False, False, False, search_icon, '', 0])
 	else:
 		for name in pkg_name_list:
 			if name in config.holdpkg:
@@ -336,56 +345,56 @@ def set_infos_list(pkg):
 	# fix & in url
 	url = pkg.url.replace('&', '&amp;')
 	link_label.set_markup('<a href=\"{_url}\">{_url}</a>'.format(_url = url))
-	licenses_label.set_markup('Licenses: {}'.format(' '.join(pkg.licenses)))
+	licenses_label.set_markup(_('Licenses') + ': {}'.format(' '.join(pkg.licenses)))
 
 def set_deps_list(pkg, style):
 	deps_list.clear()
 	if pkg.depends:
-		deps_list.append(['Depends On:', '\n'.join(pkg.depends)])
+		deps_list.append([_('Depends On') + ':', '\n'.join(pkg.depends)])
 	if pkg.optdepends:
-		deps_list.append(['Optional Deps:', '\n'.join(pkg.optdepends)])
+		deps_list.append([_('Optional Deps') + ':', '\n'.join(pkg.optdepends)])
 	if style == 'local':
 		if pkg.compute_requiredby():
-			deps_list.append(['Required By:', '\n'.join(pkg.compute_requiredby())])
+			deps_list.append([_('Required By')+':', '\n'.join(pkg.compute_requiredby())])
 	if pkg.provides:
-		details_list.append(['Provides:', ' '.join(pkg.provides)])
+		details_list.append([_('Provides')+':', ' '.join(pkg.provides)])
 	if pkg.replaces:
-		details_list.append(['Replaces:', ' '.join(pkg.replaces)])
+		details_list.append([_('Replaces')+':', ' '.join(pkg.replaces)])
 	if pkg.conflicts:
-		details_list.append(['Conflicts With:', ' '.join(pkg.conflicts)])
+		details_list.append([_('Conflicts With')+':', ' '.join(pkg.conflicts)])
 
 def set_details_list(pkg, style):
 	details_list.clear()
 	if style == 'sync':
-		details_list.append(['Repository:', pkg.db.name])
+		details_list.append([_('Repository')+':', pkg.db.name])
 	if pkg.groups:
-		details_list.append(['Groups:', ' '.join(pkg.groups)])
+		details_list.append([_('Groups')+':', ' '.join(pkg.groups)])
 	if style == 'sync':
-		details_list.append(['Compressed Size:', common.format_size(pkg.size)])
-		details_list.append(['Download Size:', common.format_size(pkg.download_size)])
+		details_list.append([_('Compressed Size')+':', common.format_size(pkg.size)])
+		details_list.append([_('Download Size')+':', common.format_size(pkg.download_size)])
 	if style == 'local':
-		details_list.append(['Installed Size:', common.format_size(pkg.isize)])
-	details_list.append(['Packager:', pkg.packager])
-	details_list.append(['Architecture:', pkg.arch])
-	#details_list.append(['Build Date:', strftime("%a %d %b %Y %X %Z", localtime(pkg.builddate))])
+		details_list.append([_('Installed Size')+':', common.format_size(pkg.isize)])
+	details_list.append([_('Packager')+':', pkg.packager])
+	details_list.append([('Architecture')+':', pkg.arch])
+	#details_list.append([_('Build Date')+':', strftime("%a %d %b %Y %X %Z", localtime(pkg.builddate))])
 	if style == 'local':
-		details_list.append(['Install Date:', strftime("%a %d %b %Y %X %Z", localtime(pkg.installdate))])
+		details_list.append([_('Install Date')+':', strftime("%a %d %b %Y %X %Z", localtime(pkg.installdate))])
 		if pkg.reason == pyalpm.PKG_REASON_EXPLICIT:
-			reason = 'Explicitly installed'
+			reason = _('Explicitly installed')
 		elif pkg.reason == pyalpm.PKG_REASON_DEPEND:
-			reason = 'Installed as a dependency for another package'
+			reason = _('Installed as a dependency for another package')
 		else:
-			reason = 'N/A'
-		details_list.append(['Install Reason:', reason])
+			reason = _('Unknown')
+		details_list.append([_('Install Reason')+':', reason])
 	if style == 'sync':
-		#details_list.append(['Install Script:', 'Yes' if pkg.has_scriptlet else 'No'])
+		#details_list.append([_('Install Script')':', 'Yes' if pkg.has_scriptlet else 'No'])
 		#details_list.append(['MD5 Sum:', pkg.md5sum])
 		#details_list.append(['SHA256 Sum:', pkg.sha256sum])
-		details_list.append(['Signatures:', 'Yes' if pkg.base64_sig else 'No'])
+		details_list.append([_('Signatures')+':', 'Yes' if pkg.base64_sig else 'No'])
 	if style == 'local':
 		if len(pkg.backup) != 0:
-			#details_list.append(['Backup files:', '\n'.join(["%s %s" % (md5, file) for (file, md5) in pkg.backup])])
-			details_list.append(['Backup files:', '\n'.join(["%s" % (file) for (file, md5) in pkg.backup])])
+			#details_list.append(['_(Backup files)+':', '\n'.join(["%s %s" % (md5, file) for (file, md5) in pkg.backup])])
+			details_list.append([_('Backup files')+':', '\n'.join(["%s" % (file) for (file, md5) in pkg.backup])])
 
 def set_files_list(pkg):
 	files_list.clear()
@@ -395,10 +404,10 @@ def set_files_list(pkg):
 
 def set_transaction_sum():
 	transaction_sum.clear()
-	sum_top_label.set_markup('<big><b>Transaction Summary</b></big>')
+	sum_top_label.set_markup(_('<big><b>Transaction Summary</b></big>'))
 	if transaction.to_remove:
 		transaction.to_remove = sorted(transaction.to_remove)
-		transaction_sum.append(['To remove:', transaction.to_remove[0]])
+		transaction_sum.append([_('To remove')+':', transaction.to_remove[0]])
 		i = 1
 		while i < len(transaction.to_remove):
 			transaction_sum.append([' ', transaction.to_remove[i]])
@@ -409,7 +418,7 @@ def set_transaction_sum():
 		dsize = 0
 		for name in transaction.to_add:
 			dsize += transaction.syncpkgs[name].download_size
-		sum_bottom_label.set_markup('<b>Total download size: </b>'+common.format_size(dsize))
+		sum_bottom_label.set_markup(_('<b>Total download size: </b>')+common.format_size(dsize))
 		installed = []
 		for pkg_object in config.pacman_conf.initialize_alpm().get_localdb().pkgcache:
 			installed.append(pkg_object.name)
@@ -418,14 +427,14 @@ def set_transaction_sum():
 		for name in to_remove_from_add:
 			transaction.to_add.remove(name)
 		if transaction.to_add:
-			transaction_sum.append(['To install:', transaction.to_add[0]])
+			transaction_sum.append([_('To install')+':', transaction.to_add[0]])
 			i = 1
 			while i < len(transaction.to_add):
 				transaction_sum.append([' ', transaction.to_add[i]])
 				i += 1
 		if mode == 'manager':
 			if transaction.to_update:
-				transaction_sum.append(['To update:', transaction.to_update[0]])
+				transaction_sum.append([_('To update')+':', transaction.to_update[0]])
 				i = 1
 				while i < len(transaction.to_update):
 					transaction_sum.append([' ', transaction.to_update[i]])
@@ -494,7 +503,7 @@ def do_refresh():
 	"""Sync databases like pacman -Sy"""
 	if transaction.t_lock is False:
 		transaction.t_lock = True
-		progress_label.set_text('Refreshing...')
+		progress_label.set_text(_('Refreshing')+'...')
 		action_icon.set_from_file('/usr/share/pamac/icons/24x24/status/refresh-cache.png')
 		progress_bar.set_text('')
 		progress_bar.set_fraction(0)
@@ -510,7 +519,7 @@ def have_updates():
 	if not updates:
 		update_listore.append(['', ''])
 		update_bottom_label.set_markup('')
-		update_top_label.set_markup('<big><b>No available update </b></big>')
+		update_top_label.set_markup(_('<big><b>Your system is up-to-date</b></big>'))
 		return False
 	else:
 		dsize = 0
@@ -518,8 +527,11 @@ def have_updates():
 			pkgname = pkg.name+" "+pkg.version
 			update_listore.append([pkgname, common.format_size(pkg.size)])
 			dsize += pkg.download_size
-		update_bottom_label.set_markup('<b>Total download size: </b>'+common.format_size(dsize))
-		update_top_label.set_markup('<big><b>{} available updates</b></big>'.format(len(updates)))
+		update_bottom_label.set_markup(_('<b>Total download size: </b>')+common.format_size(dsize))
+		if len(updates) == 1:
+			update_top_label.set_markup(_('<big><b>1 available update</b></big>'))
+		else:
+			update_top_label.set_markup(_('<big><b>{number} available updates</b></big>').format(number = len(updates)))
 		return True
 
 def do_sysupgrade():
@@ -581,7 +593,7 @@ def do_sysupgrade():
 								ConfDialog.show_all()
 
 def finalize():
-		progress_label.set_text('Preparing...')
+		progress_label.set_text(_('Preparing')+'...')
 		action_icon.set_from_file('/usr/share/pamac/icons/24x24/status/setup.png')
 		progress_bar.set_text('')
 		progress_bar.set_fraction(0)
@@ -678,7 +690,7 @@ def check_conflicts(mode, pkg_list):
 								transaction.to_remove.append(provide.name)
 								if warning:
 									warning += '\n'
-								warning += provide.name+' will be replaced by '+pkg.name
+								warning += _('{pkgname1} will be replaced by {pkgname2}').format(pkgname1 = provide.name, pkgname2 = pkg.name)
 			for conflict in pkg.conflicts:
 				provide = pyalpm.find_satisfier(transaction.localpkgs.values(), conflict)
 				if provide:
@@ -695,12 +707,12 @@ def check_conflicts(mode, pkg_list):
 										str_required += item
 									if error:
 										error += '\n'
-									error += '{} conflicts with {} but cannot be removed because it is needed by {}'.format(provide.name, pkg.name, str_required)
+									error += _('{pkgname1} conflicts with {pkgname2} but cannot be removed because it is needed by {pkgname3}').format(pkgname1 = provide.name, pkgname2 = pkg.name, pkgname3 = str_required)
 								elif not provide.name in transaction.to_remove:
 									transaction.to_remove.append(provide.name)
 									if warning:
 										warning += '\n'
-									warning += pkg.name+' conflicts with '+provide.name
+									warning += _('{pkgname1} conflicts with {pkgname2}').format(pkgname1 = pkg.name, pkgname2 = provide.name)
 				provide = pyalpm.find_satisfier(depends[0], conflict)
 				if provide:
 					if not common.format_pkg_name(conflict) == pkg.name:
@@ -710,7 +722,7 @@ def check_conflicts(mode, pkg_list):
 								transaction.to_add.remove(pkg.name)
 								if warning:
 									warning += '\n'
-								warning += pkg.name+' conflicts with '+common.format_pkg_name(conflict)+'\nNone of them will be installed'
+								warning += _('{pkgname1} conflicts with {pkgname2}\nNone of them will be installed').format(pkgname1 = pkg.name, pkgname2 = common.format_pkg_name(conflict)) 
 		i += 1
 	for pkg in transaction.localpkgs.values():
 		for conflict in pkg.conflicts:
@@ -729,12 +741,12 @@ def check_conflicts(mode, pkg_list):
 									str_required += item
 								if error:
 									error += '\n'
-								error += '{} conflicts with {} but cannot be removed because it is needed by {}'.format(provide.name, pkg.name, str_required)
+								error += _('{pkgname1} conflicts with {pkgname2} but cannot be removed because it is needed by {pkgname3}').format(pkgname1 = provide.name, pkgname2 = pkg.name, pkgname3 = str_required)
 							elif not provide.name in transaction.to_remove:
 								transaction.to_remove.append(pkg.name)
 								if warning:
 									warning += '\n'
-								warning += provide.name+' conflicts with '+pkg.name
+								warning += _('{pkgname1} conflicts with {pkgname2}').format(pkgname1= provide.name, pkgname2 = pkg.name)
 	if mode == 'updating':
 		for pkg in transaction.syncpkgs.values():
 			for replace in pkg.replaces:
@@ -748,7 +760,7 @@ def check_conflicts(mode, pkg_list):
 										transaction.to_remove.append(provide.name)
 										if warning:
 											warning += '\n'
-										warning += provide.name+' will be replaced by '+pkg.name
+										warning += _('{pkgname1} will be replaced by {pkgname2}').format(pkgname1 = provide.name, pkgname2 = pkg.name)
 									if not pkg.name in transaction.to_add:
 										transaction.to_add.append(pkg.name)
 	print('check result:', 'to add:', transaction.to_add, 'to remove:', transaction.to_remove)
@@ -769,7 +781,7 @@ def choose_provides(name):
 				if not pkg.name in provides.keys():
 					provides[pkg.name] = pkg
 	if provides:
-		choose_label.set_markup('<b>{} is provided by {} packages.\nPlease choose the one(s) you want to install:</b>'.format(name,str(len(provides.keys()))))
+		choose_label.set_markup(_('<b>{pkgname} is provided by {number} packages.\nPlease choose the one(s) you want to install:</b>').format(pkgname = name, number = str(len(provides.keys()))))
 		choose_list.clear()
 		for name in provides.keys():
 			if transaction.handle.get_localdb().get_pkg(name):
@@ -795,7 +807,7 @@ class Handler:
 
 	def on_Manager_ValidButton_clicked(self, *arg):
 		if not transaction_dict:
-			transaction.ErrorDialog.format_secondary_text("No package is selected")
+			transaction.ErrorDialog.format_secondary_text(_('No package is selected'))
 			response = 	transaction.ErrorDialog.run()
 			if response:
 				transaction.ErrorDialog.hide()
@@ -836,7 +848,7 @@ class Handler:
 								set_transaction_sum()
 								ConfDialog.show_all()
 					else:
-						transaction.WarningDialog.format_secondary_text('Nothing to do')
+						transaction.WarningDialog.format_secondary_text(_('Nothing to do'))
 						response = transaction.WarningDialog.run()
 						if response:
 							transaction.WarningDialog.hide()
@@ -910,15 +922,15 @@ class Handler:
 		global current_filter
 		liste, line = state_selection.get_selected()
 		if line is not None:
-			if state_list[line][0] == 'Installed':
+			if state_list[line][0] == _('Installed'):
 				current_filter = ('installed', None)
-			if state_list[line][0] == 'Uninstalled':
+			if state_list[line][0] == _('Uninstalled'):
 				current_filter = ('uninstalled', None)
-			if state_list[line][0] == 'Orphans':
+			if state_list[line][0] == _('Orphans'):
 				current_filter = ('orphans', None)
-			if state_list[line][0] == 'To install':
+			if state_list[line][0] == _('To install'):
 				current_filter = ('to_install', None)
-			if state_list[line][0] == 'To remove':
+			if state_list[line][0] == _('To remove'):
 				current_filter = ('to_remove', None)
 			set_packages_list()
 
@@ -926,7 +938,7 @@ class Handler:
 		global current_filter
 		liste, line = repos_selection.get_selected()
 		if line is not None:
-			if repos_list[line][0] == 'local':
+			if repos_list[line][0] == _('local'):
 				current_filter = ('local', None)
 			else:
 				current_filter = ('repo', repos_list[line][0])
@@ -1019,7 +1031,7 @@ class Handler:
 
 def main(_mode):
 	if common.pid_file_exists():
-		transaction.ErrorDialog.format_secondary_text('Another instance of Pamac is running')
+		transaction.ErrorDialog.format_secondary_text(_('Pamac is already running'))
 		response = transaction.ErrorDialog.run()
 		if response:
 			transaction.ErrorDialog.hide()
@@ -1035,7 +1047,7 @@ def main(_mode):
 		if mode == 'manager':
 			ManagerWindow.show_all()
 		if mode == 'updater':
-			update_top_label.set_markup('<big><b>Available updates</b></big>')
+			update_top_label.set_markup(_('<big><b>Your system is up-to-date</b></big>'))
 			update_bottom_label.set_markup('')
 			UpdaterWindow.show_all()
 		while Gtk.events_pending():
diff --git a/pamac/transaction.py b/pamac/transaction.py
index 4f396b27f11aa454427ae70ae2f40e6b72ade155..d281ace7b34c0f44ffe02c2cb2b41be61910a22d 100644
--- a/pamac/transaction.py
+++ b/pamac/transaction.py
@@ -1,5 +1,5 @@
 #! /usr/bin/python
-# -*-coding:utf-8-*-
+# -*- coding:utf-8 -*-
 
 from gi.repository import Gtk
 
@@ -63,7 +63,6 @@ Release = proxy.get_dbus_method('Release','org.manjaro.pamac')
 StopDaemon = proxy.get_dbus_method('StopDaemon','org.manjaro.pamac')
 
 def init_transaction(**options):
-	"Transaction initialization"
 	global t_lock
 	error = Init(dbus.Dictionary(options, signature='sb'))
 	if not error:
diff --git a/po/fr.po b/po/fr.po
new file mode 100644
index 0000000000000000000000000000000000000000..5654ad53e62bb72802d87844599576b40806a430
--- /dev/null
+++ b/po/fr.po
@@ -0,0 +1,345 @@
+# Translation of Pamac.
+# Copyright (C) 2007-2012 Free Software Foundation, Inc.
+# This file is distributed under the same license as the Pamac package.
+# Guillaume Benoit <guillaume@manjaro.org>, 2013.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pamac\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2013-03-31 18:55+0200\n"
+"PO-Revision-Date: 2013-03-30 15:18+0100\n"
+"Last-Translator:  <guillaume@manjaro.org>\n"
+"Language-Team: French\n"
+"Language: fr\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+
+#: pamac-daemon.py:30 pamac/main.py:594
+msgid "Preparing"
+msgstr "Préparation"
+
+#: pamac-daemon.py:69
+msgid "Checking dependencies"
+msgstr "Vérification des dépendances"
+
+#: pamac-daemon.py:72
+msgid "Checking file conflicts"
+msgstr "Analyse des conflits entre fichiers"
+
+#: pamac-daemon.py:75
+msgid "Resolving dependencies"
+msgstr "Résolution des dépendances"
+
+#: pamac-daemon.py:78
+msgid "Checking inter conflicts"
+msgstr "Recherche des conflits entre paquets"
+
+#: pamac-daemon.py:81 pamac/main.py:73
+msgid "Installing"
+msgstr "Installation"
+
+#: pamac-daemon.py:88 pamac/main.py:73
+msgid "Removing"
+msgstr "Désinstallation"
+
+#: pamac-daemon.py:95 pamac/main.py:73
+msgid "Upgrading"
+msgstr "Mise à jour"
+
+#: pamac-daemon.py:102
+msgid "Checking integrity"
+msgstr "Vérification de l'intégrité des paquets"
+
+#: pamac-daemon.py:106
+msgid "Loading packages files"
+msgstr "Chargement des fichiers des paquets"
+
+#: pamac-daemon.py:110 pamac/main.py:73
+msgid "Configuring"
+msgstr "Configuration"
+
+#: pamac-daemon.py:162
+msgid "Downloading {size}"
+msgstr "Télécharge {size}"
+
+#: pamac-daemon.py:167 pamac/main.py:504
+msgid "Refreshing"
+msgstr "Actualisation"
+
+#: pamac-daemon.py:270 pamac-daemon.py:378 pamac-daemon.py:386
+#: pamac-daemon.py:408
+msgid "Authentication failed"
+msgstr "Authentification échoué"
+
+#: pamac-daemon.py:374
+msgid "Transaction successfully finished"
+msgstr "Transaction terminé avec succès"
+
+#: pamac-tray.py:22
+msgid "{number} available updates"
+msgstr "{number} mises à jour disponibles"
+
+#: pamac-tray.py:23
+msgid "1 available update"
+msgstr "1 mise à jour disponible"
+
+#: pamac-tray.py:25
+msgid "Your system is up-to-date"
+msgstr "Votre système est à jour"
+
+#: pamac-tray.py:33
+msgid "Install/Check for updates"
+msgstr "Installer/Vérifier les mises à jour"
+
+#: pamac-tray.py:36
+msgid "Run pamac-manager"
+msgstr "Exécuter pamac-manager"
+
+#: pamac-tray.py:39
+msgid "Quit"
+msgstr "Quitter"
+
+#: pamac/main.py:110 pamac/main.py:923
+msgid "Installed"
+msgstr "Installé"
+
+#: pamac/main.py:110 pamac/main.py:925
+msgid "Uninstalled"
+msgstr "Non installé"
+
+#: pamac/main.py:110 pamac/main.py:927
+msgid "Orphans"
+msgstr "Orphelins"
+
+#: pamac/main.py:110 pamac/main.py:428 pamac/main.py:929
+msgid "To install"
+msgstr "A installer"
+
+#: pamac/main.py:110 pamac/main.py:408 pamac/main.py:931
+msgid "To remove"
+msgstr "A désinstaller"
+
+#: pamac/main.py:129 pamac/main.py:939
+msgid "local"
+msgstr "locaux"
+
+#: pamac/main.py:295
+msgid "No package found"
+msgstr "Aucun paquet trouvé"
+
+#: pamac/main.py:346
+msgid "Licenses"
+msgstr "Licenses"
+
+#: pamac/main.py:351
+msgid "Depends On"
+msgstr "Dépend de"
+
+#: pamac/main.py:353
+msgid "Optional Deps"
+msgstr "Dépendances opt."
+
+#: pamac/main.py:356
+msgid "Required By"
+msgstr "Requis par"
+
+#: pamac/main.py:358
+msgid "Provides"
+msgstr "Fourni"
+
+#: pamac/main.py:360
+msgid "Replaces"
+msgstr "Remplace"
+
+#: pamac/main.py:362
+msgid "Conflicts With"
+msgstr "Est conflit avec"
+
+#: pamac/main.py:367
+msgid "Repository"
+msgstr "Dépôt"
+
+#: pamac/main.py:369 gui/manager.glade:539
+msgid "Groups"
+msgstr "Groupes"
+
+#: pamac/main.py:371
+msgid "Compressed Size"
+msgstr "Taille compressée"
+
+#: pamac/main.py:372
+msgid "Download Size"
+msgstr "Taille du Téléchargement"
+
+#: pamac/main.py:374
+msgid "Installed Size"
+msgstr "Taille installé"
+
+#: pamac/main.py:375
+msgid "Packager"
+msgstr "Paqueteur"
+
+#: pamac/main.py:379
+msgid "Install Date"
+msgstr "Installé le"
+
+#: pamac/main.py:381
+msgid "Explicitly installed"
+msgstr "Explicitement installé"
+
+#: pamac/main.py:383
+msgid "Installed as a dependency for another package"
+msgstr "Installé comme dépendance d'un autre paquet"
+
+#: pamac/main.py:385
+msgid "Unknown"
+msgstr "Inconnu"
+
+#: pamac/main.py:386
+msgid "Install Reason"
+msgstr "Motif d'installation"
+
+#: pamac/main.py:391
+msgid "Signatures"
+msgstr "Signatures"
+
+#: pamac/main.py:395
+msgid "Backup files"
+msgstr "Fichiers sauvegardés"
+
+#: pamac/main.py:405
+msgid "<big><b>Transaction Summary</b></big>"
+msgstr "<big><b>Résumé de la transaction</b></big>"
+
+#: pamac/main.py:419 pamac/main.py:528
+msgid "<b>Total download size: </b>"
+msgstr "<b>Taille totale du téléchargement: </b>"
+
+#: pamac/main.py:435
+msgid "To update"
+msgstr "A mettre à jour"
+
+#: pamac/main.py:520 pamac/main.py:1048
+msgid "<big><b>Your system is up-to-date</b></big>"
+msgstr "<big><b>Votre système est à jour</b></big>"
+
+#: pamac/main.py:530
+msgid "<big><b>1 available update</b></big>"
+msgstr "<big><b>1 mise à jour disponible</b></big>"
+
+#: pamac/main.py:532
+msgid "<big><b>{number} available updates</b></big>"
+msgstr "<big><b>{number} mises à jour disponibles</b></big>"
+
+#: pamac/main.py:691 pamac/main.py:761
+msgid "{pkgname1} will be replaced by {pkgname2}"
+msgstr "{pkgname1} sera remplacé par {pkgname2}"
+
+#: pamac/main.py:708 pamac/main.py:742
+msgid ""
+"{pkgname1} conflicts with {pkgname2} but cannot be removed because it is "
+"needed by {pkgname3}"
+msgstr ""
+"{pkgname1} est en conflit avec {pkgname2} mais ne peut pas être désinstaller "
+"car il est requis par {pkgname3}"
+
+#: pamac/main.py:713 pamac/main.py:747
+msgid "{pkgname1} conflicts with {pkgname2}"
+msgstr "{pkgname1} est en conflit avec {pkgname2}"
+
+#: pamac/main.py:723
+msgid ""
+"{pkgname1} conflicts with {pkgname2}\n"
+"None of them will be installed"
+msgstr ""
+"{pkgname1} est en conflit avec {pkgname2}}\n"
+"Aucun d'entre eux ne sera installé"
+
+#: pamac/main.py:782
+msgid ""
+"<b>{pkgname} is provided by {number} packages.\n"
+"Please choose the one(s) you want to install:</b>"
+msgstr ""
+"<b>{pkgname} est fourni par {number} paquets.\n"
+"Choisir choose the one(s) you want to install:</b>"
+
+#: pamac/main.py:808
+msgid "No package is selected"
+msgstr "Aucun paquet n'est sélectionné"
+
+#: pamac/main.py:849
+msgid "Nothing to do"
+msgstr "Rien à faire"
+
+#: pamac/main.py:1032
+msgid "Pamac is already running"
+msgstr "Pamac est déjà en cours d'éxécution"
+
+#: pamac/common.py:13
+#, python-format
+msgid "%.1f KiB"
+msgstr "%.1f Ko"
+
+#: pamac/common.py:16
+#, python-format
+msgid "%.2f MiB"
+msgstr "%.2f Mo"
+
+#: gui/manager.glade:7
+msgid "Choose"
+msgstr "Choisir"
+
+#: gui/manager.glade:112
+msgid "Summary"
+msgstr "Résumé"
+
+#: gui/manager.glade:256
+msgid "Progress"
+msgstr "Progression"
+
+#: gui/manager.glade:402
+msgid "Package Manager"
+msgstr "Gestionnaire de paquets"
+
+#: gui/manager.glade:492
+msgid "Search"
+msgstr "Rechercher"
+
+#: gui/manager.glade:587 gui/manager.glade:680
+msgid "State"
+msgstr "Etat"
+
+#: gui/manager.glade:635
+msgid "Repos"
+msgstr "Dépôts"
+
+#: gui/manager.glade:710
+msgid "Name"
+msgstr "Nom"
+
+#: gui/manager.glade:728
+msgid "Size"
+msgstr "Taille"
+
+#: gui/manager.glade:829
+msgid "Infos"
+msgstr "Infos"
+
+#: gui/manager.glade:889
+msgid "Deps"
+msgstr "Dépendances"
+
+#: gui/manager.glade:954
+msgid "Details"
+msgstr "Détails"
+
+#: gui/manager.glade:1002
+msgid "Files"
+msgstr "Fichiers"
+
+#: gui/updater.glade:6
+msgid "Update Manager"
+msgstr "Gestionnaire de mise à jour"
diff --git a/po/manager.pot b/po/manager.pot
deleted file mode 100644
index b9ca37fe191eb806e1373843adb2df6517d262ab..0000000000000000000000000000000000000000
--- a/po/manager.pot
+++ /dev/null
@@ -1,78 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-03-29 16:23+0100\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"Language: \n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=CHARSET\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: gui/manager.glade:7
-msgid "Choose"
-msgstr ""
-
-#: gui/manager.glade:889
-msgid "Deps"
-msgstr ""
-
-#: gui/manager.glade:954
-msgid "Details"
-msgstr ""
-
-#: gui/manager.glade:1002
-msgid "Files"
-msgstr ""
-
-#: gui/manager.glade:539
-msgid "Groups"
-msgstr ""
-
-#: gui/manager.glade:829
-msgid "Infos"
-msgstr ""
-
-#: gui/manager.glade:680
-msgid "Installed"
-msgstr ""
-
-#: gui/manager.glade:710
-msgid "Name"
-msgstr ""
-
-#: gui/manager.glade:402
-msgid "Package Manager"
-msgstr ""
-
-#: gui/manager.glade:256
-msgid "Progress"
-msgstr ""
-
-#: gui/manager.glade:635
-msgid "Repos"
-msgstr ""
-
-#: gui/manager.glade:492
-msgid "Search"
-msgstr ""
-
-#: gui/manager.glade:728
-msgid "Size"
-msgstr ""
-
-#: gui/manager.glade:587
-msgid "State"
-msgstr ""
-
-#: gui/manager.glade:112
-msgid "Summary"
-msgstr ""
diff --git a/po/updater.pot b/po/updater.pot
deleted file mode 100644
index 70c0ab0e38df41509f2a3a6c6ac7d30b9b55ad96..0000000000000000000000000000000000000000
--- a/po/updater.pot
+++ /dev/null
@@ -1,22 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-03-30 05:46+0100\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"Language: \n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=CHARSET\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: gui/updater.glade:6
-msgid "Update Manager"
-msgstr ""
diff --git a/pot_head b/pot_head
new file mode 100644
index 0000000000000000000000000000000000000000..c829bf25ae60e64010bc2a7338d201cf24e56b41
--- /dev/null
+++ b/pot_head
@@ -0,0 +1,18 @@
+# Translation of Pamac.
+# Copyright (C) 2007-2012 Free Software Foundation, Inc.
+# This file is distributed under the same license as the Pamac package.
+# Guillaume Benoit <guillaume@manjaro.org>, 2013.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: pamac\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2013-03-30 15:09+0100\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"