diff --git a/src/UnicaenAuth/View/Helper/UserProfile.php b/src/UnicaenAuth/View/Helper/UserProfile.php
index 509fb5711c2dddaf1b7e833f9516d7b8b9e0cc48..769fdfc298ab1076ca25975e726995139756e652 100644
--- a/src/UnicaenAuth/View/Helper/UserProfile.php
+++ b/src/UnicaenAuth/View/Helper/UserProfile.php
@@ -1,6 +1,10 @@
 <?php
 namespace UnicaenAuth\View\Helper;
 
+use BjyAuthorize\Provider\Identity\ProviderInterface;
+use UnicaenAuth\Acl\NamedRole;
+use Zend\Permissions\Acl\Role\RoleInterface;
+
 /**
  * Aide de vue permettant d'afficher le profil de l'utilisateur connecté.
  *
@@ -9,7 +13,7 @@ namespace UnicaenAuth\View\Helper;
 class UserProfile extends UserAbstract
 {
     /**
-     * @var \BjyAuthorize\Provider\Identity\ProviderInterface 
+     * @var ProviderInterface 
      */
     protected $identityProvider;
     
@@ -30,28 +34,52 @@ class UserProfile extends UserAbstract
      */
     public function __toString()
     {
+        $title   = _("Profil utilisateur");
+        $unknown = _("Inconnu");
+        $none    = _("Aucun");
+
+        if ($this->getTranslator()) {
+            $title   = $this->getTranslator()->translate($title, $this->getTranslatorTextDomain());
+            $unknown = $this->getTranslator()->translate($unknown, $this->getTranslatorTextDomain());
+            $none    = $this->getTranslator()->translate($none, $this->getTranslatorTextDomain());
+        }
+
         $roles = array();
         foreach ($this->getIdentityProvider()->getIdentityRoles() as $role) {
-            if ($role instanceof \UnicaenAuth\Acl\NamedRole) {
-                $roles[] = $role->getRoleName();
+            $lib = '';
+            if ($role instanceof NamedRole) {
+                $lib = $role->getRoleName();
             }
-            elseif ($role instanceof \BjyAuthorize\Acl\Role) {
-                $roles[] = $role->getRoleId();
+            elseif ($role instanceof RoleInterface) {
+                $lib = $role->getRoleId();
             }
             else {
-                $roles[] = (string)$role;
+                $fallback = null;
+                set_error_handler(function() use (&$fallback, $unknown) { $fallback = $unknown; });
+                $lib = (string) $role;
+                restore_error_handler();
+                $lib = $lib ?: $fallback;
+            }
+            if ($lib) {
+                if ($this->getTranslator()) {
+                    $lib = $this->getTranslator()->translate($lib, $this->getTranslatorTextDomain());
+                }
+                $roles[] = $lib;
             }
         }
-        $html = "<strong>Profil utilisateur :</strong>";
-        if ($roles) {
-            $html .= $this->getView()->htmlList($roles);
+        if (!$roles) {
+            $roles[] = $none;
         }
+
+        $html = "<strong>$title :</strong>" . PHP_EOL;
+        $html .= $this->getView()->htmlList($roles);
+
         return $html;
     }
     
     /**
      * 
-     * @return \BjyAuthorize\Provider\Identity\ProviderInterface
+     * @return ProviderInterface
      */
     public function getIdentityProvider()
     {
@@ -60,10 +88,10 @@ class UserProfile extends UserAbstract
 
     /**
      * 
-     * @param \BjyAuthorize\Provider\Identity\ProviderInterface $identityProvider
+     * @param ProviderInterface $identityProvider
      * @return self
      */
-    public function setIdentityProvider(\BjyAuthorize\Provider\Identity\ProviderInterface $identityProvider)
+    public function setIdentityProvider(ProviderInterface $identityProvider)
     {
         $this->identityProvider = $identityProvider;
         return $this;
diff --git a/tests/UnicaenAuthTest/View/Helper/UserProfileTest.php b/tests/UnicaenAuthTest/View/Helper/UserProfileTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..1eba188f53f15587ce04965119cbbaf71650b210
--- /dev/null
+++ b/tests/UnicaenAuthTest/View/Helper/UserProfileTest.php
@@ -0,0 +1,114 @@
+<?php
+namespace UnicaenAuthTest\View\Helper;
+
+use UnicaenAppTest\View\Helper\TestAsset\ArrayTranslatorLoader;
+use UnicaenAuth\View\Helper\UserProfile;
+use Zend\I18n\Translator\Translator;
+
+/**
+ * Description of UserProfileTest
+ *
+ * @property UserProfile $helper Description
+ * @author Bertrand GAUTHIER <bertrand.gauthier at unicaen.fr>
+ */
+class UserProfileTest extends AbstractTest
+{
+    protected $helperClass = 'UnicaenAuth\View\Helper\UserProfile';
+    protected $identityProvider;
+    
+    /**
+     * Sets up the fixture, for example, open a network connection.
+     * This method is called before a test is executed.
+     */
+    protected function setUp()
+    {
+        parent::setUp();
+        
+        $this->identityProvider = $this->getMockForAbstractClass('BjyAuthorize\Provider\Identity\ProviderInterface', array('getIdentityRoles'));
+        
+        $this->helper->setIdentityProvider($this->identityProvider)
+                     ->setTranslator(new Translator());
+    }
+    
+    public function testEntryPointReturnsSelfInstance()
+    {
+        $this->assertSame($this->helper, $this->helper->__invoke());
+    }
+    
+    public function getIdentityRolesAndExpectedScript()
+    {
+        return array(
+            'none' => array(
+                array(),
+                'user_profile/none.phtml',
+                'user_profile/none-translated.phtml',
+            ),
+            'role' => array(
+                array(new \Zend\Permissions\Acl\Role\GenericRole('Invité')),
+                'user_profile/role.phtml',
+                'user_profile/role-translated.phtml',
+            ),
+            'named-role' => array(
+                array(new \UnicaenAuth\Acl\NamedRole('admin', null, "Administrateur")),
+                'user_profile/named-role.phtml',
+                'user_profile/named-role-translated.phtml',
+            ),
+            'stringable-role' => array(
+                array('Opérateur'), // (string) 'Opérateur' renverra 'Opérateur'
+                'user_profile/stringable-role.phtml',
+                'user_profile/stringable-role-translated.phtml',
+            ),
+            'non-stringable-role' => array(
+                array(new \stdClass()), // (string) new \stdClass() lèvera l'erreur "Object of class stdClass could not be converted to string"
+                'user_profile/non-stringable-role.phtml',
+                'user_profile/non-stringable-role-translated.phtml',
+            ),
+        );
+    }
+    
+    /**
+     * @dataProvider getIdentityRolesAndExpectedScript
+     * @param array $roles
+     * @param string $expectedScript
+     * @param string $expectedScriptTranslated
+     */
+    public function testRenderingReturnsNoneIfIdentityProviderProvidesNoRole($roles, $expectedScript, $expectedScriptTranslated)
+    {
+        $this->identityProvider
+                ->expects($this->any())
+                ->method('getIdentityRoles')
+                ->will($this->returnValue($roles));
+        
+        $markup = (string) $this->helper;
+        $this->assertEquals($this->getExpected($expectedScript), $markup);
+        
+        // traduction
+        $this->helper->setTranslator($this->_getTranslator());
+        $markup = (string) $this->helper;
+        $this->assertEquals($this->getExpected($expectedScriptTranslated), $markup);
+    }
+
+    /**
+     * Returns translator
+     *
+     * @return Translator
+     */
+    protected function _getTranslator()
+    {
+        $loader = new ArrayTranslatorLoader();
+        $loader->translations = array(
+            "Profil utilisateur" => "User profile",
+            "Inconnu"            => "Unknown",
+            "Aucun"              => "None",
+            "Invité"             => "Guest",
+            "Administrateur"     => "Administrator",
+            "Opérateur"          => "Operator"
+        );
+
+        $translator = new Translator();
+        $translator->getPluginManager()->setService('default', $loader);
+        $translator->addTranslationFile('default', null);
+        
+        return $translator;
+    }
+}
\ No newline at end of file
diff --git a/tests/UnicaenAuthTest/View/Helper/_files/expected/user_profile/named-role-translated.phtml b/tests/UnicaenAuthTest/View/Helper/_files/expected/user_profile/named-role-translated.phtml
new file mode 100644
index 0000000000000000000000000000000000000000..3763bd40b1429a0ac6bae05b0b23632adcc3f7f8
--- /dev/null
+++ b/tests/UnicaenAuthTest/View/Helper/_files/expected/user_profile/named-role-translated.phtml
@@ -0,0 +1,4 @@
+<strong>User profile :</strong>
+<ul>
+<li>Administrator</li>
+</ul>
diff --git a/tests/UnicaenAuthTest/View/Helper/_files/expected/user_profile/named-role.phtml b/tests/UnicaenAuthTest/View/Helper/_files/expected/user_profile/named-role.phtml
new file mode 100644
index 0000000000000000000000000000000000000000..8de16ccdc0ac0c32cdf297bd28620eea218b553d
--- /dev/null
+++ b/tests/UnicaenAuthTest/View/Helper/_files/expected/user_profile/named-role.phtml
@@ -0,0 +1,4 @@
+<strong>Profil utilisateur :</strong>
+<ul>
+<li>Administrateur</li>
+</ul>
diff --git a/tests/UnicaenAuthTest/View/Helper/_files/expected/user_profile/non-stringable-role-translated.phtml b/tests/UnicaenAuthTest/View/Helper/_files/expected/user_profile/non-stringable-role-translated.phtml
new file mode 100644
index 0000000000000000000000000000000000000000..9488b6c4f0efc80cfbee861d6bf43ecc2d216f92
--- /dev/null
+++ b/tests/UnicaenAuthTest/View/Helper/_files/expected/user_profile/non-stringable-role-translated.phtml
@@ -0,0 +1,4 @@
+<strong>User profile :</strong>
+<ul>
+<li>Unknown</li>
+</ul>
diff --git a/tests/UnicaenAuthTest/View/Helper/_files/expected/user_profile/non-stringable-role.phtml b/tests/UnicaenAuthTest/View/Helper/_files/expected/user_profile/non-stringable-role.phtml
new file mode 100644
index 0000000000000000000000000000000000000000..0f25c3ba586ab302bf22bc44f126b2940af1d1d9
--- /dev/null
+++ b/tests/UnicaenAuthTest/View/Helper/_files/expected/user_profile/non-stringable-role.phtml
@@ -0,0 +1,4 @@
+<strong>Profil utilisateur :</strong>
+<ul>
+<li>Inconnu</li>
+</ul>
diff --git a/tests/UnicaenAuthTest/View/Helper/_files/expected/user_profile/none-translated.phtml b/tests/UnicaenAuthTest/View/Helper/_files/expected/user_profile/none-translated.phtml
new file mode 100644
index 0000000000000000000000000000000000000000..7898677048fae3546faaeb4338617ee7bdc17a8e
--- /dev/null
+++ b/tests/UnicaenAuthTest/View/Helper/_files/expected/user_profile/none-translated.phtml
@@ -0,0 +1,4 @@
+<strong>User profile :</strong>
+<ul>
+<li>None</li>
+</ul>
diff --git a/tests/UnicaenAuthTest/View/Helper/_files/expected/user_profile/none.phtml b/tests/UnicaenAuthTest/View/Helper/_files/expected/user_profile/none.phtml
new file mode 100644
index 0000000000000000000000000000000000000000..6b1eb6ce20a913ea9065cd7c078f3e3fc059eb22
--- /dev/null
+++ b/tests/UnicaenAuthTest/View/Helper/_files/expected/user_profile/none.phtml
@@ -0,0 +1,4 @@
+<strong>Profil utilisateur :</strong>
+<ul>
+<li>Aucun</li>
+</ul>
diff --git a/tests/UnicaenAuthTest/View/Helper/_files/expected/user_profile/role-translated.phtml b/tests/UnicaenAuthTest/View/Helper/_files/expected/user_profile/role-translated.phtml
new file mode 100644
index 0000000000000000000000000000000000000000..e0f3a1ed3a6de04f6976fe689e15f3c77b6d783e
--- /dev/null
+++ b/tests/UnicaenAuthTest/View/Helper/_files/expected/user_profile/role-translated.phtml
@@ -0,0 +1,4 @@
+<strong>User profile :</strong>
+<ul>
+<li>Guest</li>
+</ul>
diff --git a/tests/UnicaenAuthTest/View/Helper/_files/expected/user_profile/role.phtml b/tests/UnicaenAuthTest/View/Helper/_files/expected/user_profile/role.phtml
new file mode 100644
index 0000000000000000000000000000000000000000..0c7485a75e9b9b4afc299fc58a5b81823fe82810
--- /dev/null
+++ b/tests/UnicaenAuthTest/View/Helper/_files/expected/user_profile/role.phtml
@@ -0,0 +1,4 @@
+<strong>Profil utilisateur :</strong>
+<ul>
+<li>Invité</li>
+</ul>
diff --git a/tests/UnicaenAuthTest/View/Helper/_files/expected/user_profile/stringable-role-translated.phtml b/tests/UnicaenAuthTest/View/Helper/_files/expected/user_profile/stringable-role-translated.phtml
new file mode 100644
index 0000000000000000000000000000000000000000..32c3448ff6ee98a26f567442206866d67f8874c8
--- /dev/null
+++ b/tests/UnicaenAuthTest/View/Helper/_files/expected/user_profile/stringable-role-translated.phtml
@@ -0,0 +1,4 @@
+<strong>User profile :</strong>
+<ul>
+<li>Operator</li>
+</ul>
diff --git a/tests/UnicaenAuthTest/View/Helper/_files/expected/user_profile/stringable-role.phtml b/tests/UnicaenAuthTest/View/Helper/_files/expected/user_profile/stringable-role.phtml
new file mode 100644
index 0000000000000000000000000000000000000000..56387275d76885f5783b7c9321c26174e91f76ff
--- /dev/null
+++ b/tests/UnicaenAuthTest/View/Helper/_files/expected/user_profile/stringable-role.phtml
@@ -0,0 +1,4 @@
+<strong>Profil utilisateur :</strong>
+<ul>
+<li>Opérateur</li>
+</ul>