diff --git a/kernel/class/edit.php b/kernel/class/edit.php
index 097dc4ff4e719cb9019e41e6a1d0897398d4bc71..43367db84838e1e0c11e894756d204e621a95d47 100644
--- a/kernel/class/edit.php
+++ b/kernel/class/edit.php
@@ -425,7 +425,7 @@ if ( $contentClassHasInput )
 
         if ( $http->hasPostVariable( 'ContentAttribute_priority' ) )
             $placementArray = $http->postVariable( 'ContentAttribute_priority' );
-            
+
         if ( $http->hasPostVariable( 'ContentAttribute_category_select' ) )
             $categoryArray = $http->postVariable( 'ContentAttribute_category_select' );
 
@@ -436,7 +436,7 @@ if ( $contentClassHasInput )
             $attribute->setAttribute( 'is_searchable', in_array( $attributeID, $searchableCheckedArray ) );
             $attribute->setAttribute( 'is_information_collector', in_array( $attributeID, $informationCollectorCheckedArray ) );
             // Set can_translate to 0 if user has clicked Disable translation in GUI
-            $attribute->setAttribute( 'can_translate', !in_array( $attributeID, $canTranslateCheckedArray ) );
+            $attribute->setAttribute( 'can_translate', !in_array( $attributeID, $canTranslateCheckedArray ) && $attribute->dataType()->isTranslatable() );
             // check if the category is set for this attribute key, may not be the case when using old admin and new attributes
             // if this is not set at all, it gets a default value from the DB
             // if it is set, we want to leave it like that of course
diff --git a/kernel/classes/ezcontentclassattribute.php b/kernel/classes/ezcontentclassattribute.php
index 8e4b8fbfa69203278d1628a3b899d413d63c90b3..dfe3b5ba232b53eab90e12506c7d2546334957c0 100644
--- a/kernel/classes/ezcontentclassattribute.php
+++ b/kernel/classes/ezcontentclassattribute.php
@@ -62,6 +62,12 @@ class eZContentClassAttribute extends eZPersistentObject
             $this->DataTextI18nList->initFromSerializedList( $row['serialized_data_text'] );
         else
             $this->DataTextI18nList->initDefault();
+
+        // Make sure datatype gets final say if attribute should be translatable
+        if ( $this->attribute('can_translate') && !$this->dataType()->isTranslatable() )
+        {
+            $this->setAttribute('can_translate', 0);
+        }
     }
 
     static function definition()
@@ -321,7 +327,7 @@ class eZContentClassAttribute extends eZPersistentObject
 
     /**
      * Store the content class in the specified version status.
-     * 
+     *
      * @note Transaction unsafe. If you call several transaction unsafe methods you must enclose
      *       the calls within a db transaction; thus within db->begin and db->commit.
      *
@@ -696,7 +702,7 @@ class eZContentClassAttribute extends eZPersistentObject
 
     /**
      * Returns name from serialized string, can be used for serialized description and data_text as well.
-     * 
+     *
      * @param string $serializedNameList
      * @param string|false $languageLocale Uses AlwaysAvailable language if false
      * @return string
@@ -708,7 +714,7 @@ class eZContentClassAttribute extends eZPersistentObject
 
     /**
      * Returns name of attribute based on serialized_name_list
-     * 
+     *
      * @param string|false $languageLocale Uses AlwaysAvailable language if false
      * @return string
      */
@@ -719,7 +725,7 @@ class eZContentClassAttribute extends eZPersistentObject
 
     /**
      * Sets name of attribute, store() will take care of writing back to serialized_name_list
-     * 
+     *
      * @param string $name
      * @param string|false $languageLocale Uses AlwaysAvailable language if false
      * @return string Return old value
@@ -731,7 +737,7 @@ class eZContentClassAttribute extends eZPersistentObject
 
     /**
      * Returns name list for all locales for attribute
-     * 
+     *
      * @return array
      */
     function nameList()
@@ -741,7 +747,7 @@ class eZContentClassAttribute extends eZPersistentObject
 
     /**
      * Returns description of attribute based on serialized_description_list
-     * 
+     *
      * @param string|false $languageLocale Uses AlwaysAvailable language if false
      * @return string
      */
@@ -752,7 +758,7 @@ class eZContentClassAttribute extends eZPersistentObject
 
     /**
      * Sets description of attribute, store() will take care of writing back to serialized_description_list
-     * 
+     *
      * @param string $description
      * @param string|false $languageLocale Uses AlwaysAvailable language if false
      * @return string Return old value
@@ -764,7 +770,7 @@ class eZContentClassAttribute extends eZPersistentObject
 
     /**
      * Returns description list for all locales for attribute
-     * 
+     *
      * @return array
      */
     function descriptionList()
@@ -774,7 +780,7 @@ class eZContentClassAttribute extends eZPersistentObject
 
     /**
      * Returns data_text_i18n of attribute based on serialized_data_text
-     * 
+     *
      * @param string|false $languageLocale Uses AlwaysAvailable language if false
      * @return string
      */
@@ -785,7 +791,7 @@ class eZContentClassAttribute extends eZPersistentObject
 
     /**
      * Sets data_text_i18n of attribute, store() will take care of writing back to serialized_data_text
-     * 
+     *
      * @param string $string
      * @param string|false $languageLocale Uses AlwaysAvailable language if false
      * @return string Return old value
@@ -797,7 +803,7 @@ class eZContentClassAttribute extends eZPersistentObject
 
     /**
      * Returns data_text_i18n list for all locales for attribute
-     * 
+     *
      * @return array
      */
     function dataTextI18nList()
@@ -807,7 +813,7 @@ class eZContentClassAttribute extends eZPersistentObject
 
     /**
      * Returns locale code as set with {@link self::setEditLocale()}
-     * 
+     *
      * @return string|false
      */
     function editLocale()
@@ -817,7 +823,7 @@ class eZContentClassAttribute extends eZPersistentObject
 
     /**
      * Sets locale code of attribute for use by datatypes in class/edit storing process.
-     * 
+     *
      * @param string|false $languageLocale Uses AlwaysAvailable language if false
      */
     function setEditLocale( $languageLocale = false )
@@ -827,7 +833,7 @@ class eZContentClassAttribute extends eZPersistentObject
 
     /**
      * Specify AlwaysAvailableLanguage (for name, description or data_text_i18n)
-     * 
+     *
      * @param string|false $languageLocale
      */
     function setAlwaysAvailableLanguage( $languageLocale )
@@ -848,7 +854,7 @@ class eZContentClassAttribute extends eZPersistentObject
 
     /**
      * Removes an translation (as in the serilized strings for name, description or data_text_i18n)
-     * 
+     *
      * @param string $languageLocale
      */
     function removeTranslation( $languageLocale )
diff --git a/kernel/classes/ezdatatype.php b/kernel/classes/ezdatatype.php
index 4c0f52c84cd98a989521e79397bcd96c23d66631..c3664a00cf2ff185eea002b1ce669afe535590fa 100644
--- a/kernel/classes/ezdatatype.php
+++ b/kernel/classes/ezdatatype.php
@@ -222,6 +222,16 @@ class eZDataType
         return $this->Attributes["information"]["string"];
     }
 
+    /**
+     * Indicates if datatype supports being translated
+     *
+     * @return bool
+     */
+    function isTranslatable()
+    {
+        return $this->Attributes['properties']['translation_allowed'];
+    }
+
     /*!
      \return the attributes for this datatype.
     */
diff --git a/kernel/sql/common/cleandata.sql b/kernel/sql/common/cleandata.sql
index ba9eadd0d9904950541415d4f01a5f8f312999e1..9c55673959b96851e70fbd0de53a406a6f4ceb9c 100644
--- a/kernel/sql/common/cleandata.sql
+++ b/kernel/sql/common/cleandata.sql
@@ -963,7 +963,7 @@ INSERT INTO ezcontentclass_attribute (
   serialized_name_list,
   version
 ) VALUES (
-  1,
+  0,
   '',
   4,
   0,
diff --git a/share/db_data.dba b/share/db_data.dba
index f79f8989d73a22b966c431cd2a9f804a2c63c0dd..ee66a507e68ac625ee6e875131b56b99283d8ef5 100644
--- a/share/db_data.dba
+++ b/share/db_data.dba
@@ -665,7 +665,7 @@ $data = array (
       ),
       6 => 
       array (
-        0 => '1',
+        0 => '0',
         1 => '',
         2 => '4',
         3 => '0',
diff --git a/update/database/mysql/4.4/unstable/dbupdate-4.4.0beta1-to-4.4.0beta2.sql b/update/database/mysql/4.4/unstable/dbupdate-4.4.0beta1-to-4.4.0beta2.sql
index 17cda5dc6eb58d0aabb79f9dbd9f544ff80c9ead..09fbc8e2baedba4b2ea0b47253a3b7bf495bf6db 100644
--- a/update/database/mysql/4.4/unstable/dbupdate-4.4.0beta1-to-4.4.0beta2.sql
+++ b/update/database/mysql/4.4/unstable/dbupdate-4.4.0beta1-to-4.4.0beta2.sql
@@ -4,3 +4,4 @@ UPDATE ezsite_data SET value='1' WHERE name='ezpublish-release';
 ALTER TABLE ezpreferences MODIFY COLUMN value longtext;
 ALTER TABLE ezpolicy ADD original_id INT(11) NOT NULL DEFAULT '0';
 ALTER TABLE ezpolicy ADD INDEX ezoriginal_policy_id ( original_id );
+UPDATE ezcontentclass_attribute SET can_translate=0 WHERE data_type_string='ezuser';
diff --git a/update/database/postgresql/4.4/unstable/dbupdate-4.4.0beta1-to-4.4.0beta2.sql b/update/database/postgresql/4.4/unstable/dbupdate-4.4.0beta1-to-4.4.0beta2.sql
index 51b7379c0b167fe0fa3d0ef126e8774ce9b2e29e..40e863a335d18e402498d57d760a881b70cc9d41 100644
--- a/update/database/postgresql/4.4/unstable/dbupdate-4.4.0beta1-to-4.4.0beta2.sql
+++ b/update/database/postgresql/4.4/unstable/dbupdate-4.4.0beta1-to-4.4.0beta2.sql
@@ -2,4 +2,5 @@ UPDATE ezsite_data SET value='4.4.0beta2' WHERE name='ezpublish-version';
 UPDATE ezsite_data SET value='1' WHERE name='ezpublish-release';
 ALTER TABLE ezpreferences ALTER COLUMN value TYPE text;
 ALTER TABLE ezpolicy ADD COLUMN original_id INT NOT NULL DEFAULT 0;
-CREATE INDEX ezpolicy_original_id ON ezpolicy USING btree ( original_id );
\ No newline at end of file
+CREATE INDEX ezpolicy_original_id ON ezpolicy USING btree ( original_id );
+UPDATE ezcontentclass_attribute SET can_translate=0 WHERE data_type_string='ezuser';
