diff --git a/kernel/classes/ezcache.php b/kernel/classes/ezcache.php
index 47fea80b11dfba245085fdaad9f0eb297a4e2f70..8d864317831d6b26b21cc3fe53d0649a9e0bae90 100644
--- a/kernel/classes/ezcache.php
+++ b/kernel/classes/ezcache.php
@@ -169,7 +169,14 @@ class eZCache
                                        'enabled' => true,
                                        'path' => false,
                                        'function' => array( 'eZCache', 'clearActiveExtensions' ) ),
-                            );
+
+                                array( 'name' => ezpI18n::tr( 'kernel/cache', 'TS Translation cache' ),
+                                       'id' => 'translation',
+                                       'tag' => array( 'i18n' ),
+                                       'enabled' => true,
+                                       'expiry-key' => 'ts-translation-cache',
+                                       'path' => 'translation' ),
+            );
 
             // Append cache items defined (in ini) by extensions, see site.ini[Cache] for details
             foreach ( $ini->variable( 'Cache', 'CacheItems' ) as $cacheItemKey )
@@ -643,6 +650,20 @@ class eZCache
         $fileHandler = eZClusterFileHandler::instance();
         $fileHandler->fileDeleteByWildcard( $cachePath . '/' . eZTemplateDesignResource::DESIGN_BASE_CACHE_NAME . '*' );
     }
+
+    /**
+     * Clears the .ts translation cache by setting the expiry key
+     * @param array $cacheItem
+     * @return void
+     */
+    public static function clearTSTranslationCache( $cacheItem )
+    {
+        eZExpiryHandler::registerShutdownFunction();
+
+        $handler = eZExpiryHandler::instance();
+        $handler->setTimestamp( $cacheItem['expiry-key'], time() );
+        $handler->store();
+    }
 }
 
 /**
diff --git a/lib/ezi18n/classes/eztranslationcache.php b/lib/ezi18n/classes/eztranslationcache.php
index f319993595c405ed44dae47f72ab39c2440914ea..187393a11c0d174268cb6d921e35f8b588481f24 100644
--- a/lib/ezi18n/classes/eztranslationcache.php
+++ b/lib/ezi18n/classes/eztranslationcache.php
@@ -140,6 +140,13 @@ class eZTranslationCache
     */
     static function canRestoreCache( $key, $timestamp )
     {
+        static $tsTranslationExpiryTimestamp = false;
+
+        if ( eZTSTranslator::$expiryTimestamp === false )
+            eZTSTranslator::$expiryTimestamp = eZExpiryHandler::instance()->getTimestamp( eZTSTranslator::$cacheKey );
+
+        $timestamp = max( $timestamp, eZTSTranslator::$expiryTimestamp );
+
         $translationCache = eZTranslationCache::cacheTable();
         if ( isset( $translationCache[$key] ) )
         {
diff --git a/lib/ezi18n/classes/eztstranslator.php b/lib/ezi18n/classes/eztstranslator.php
index 0808abb795553fff97df50b900468dcb27f54d43..1634c0b23c7c2c7e7e573d6c31aecf8686e0cb0b 100644
--- a/lib/ezi18n/classes/eztstranslator.php
+++ b/lib/ezi18n/classes/eztstranslator.php
@@ -172,6 +172,7 @@ class eZTSTranslator extends eZTranslatorHandler
                 $this->RootCache['timestamp'] = $tsTimeStamp;
             }
             $key = 'cachecontexts';
+
             if ( $this->HasRestoredCache or
                  eZTranslationCache::canRestoreCache( $key, $tsTimeStamp ) )
             {
@@ -326,6 +327,8 @@ class eZTSTranslator extends eZTranslatorHandler
         // Save translation cache
         if ( $this->UseCache == true && $this->BuildCache == true )
         {
+            $time = time();
+
             eZDebug::accumulatorStart( 'tstranslator_store_cache', 'tstranslator', 'TS store cache' );
             if ( eZTranslationCache::contextCache( 'cachecontexts' ) == null )
             {
@@ -342,8 +345,12 @@ class eZTSTranslator extends eZTranslatorHandler
                     eZTranslationCache::setContextCache( $contextName, $context );
                 eZTranslationCache::storeCache( $contextName );
             }
+
             $this->BuildCache = false;
             eZDebug::accumulatorStop( 'tstranslator_store_cache' );
+
+            eZExpiryHandler::instance()->setTimestamp( self::$cacheKey, $time );
+            eZTSTranslator::$expiryTimestamp = $time;
         }
 
         return $status;
@@ -668,6 +675,8 @@ class eZTSTranslator extends eZTranslatorHandler
     public $UseCache;
     public $BuildCache;
     public $CachedMessages;
+    public static $cacheKey = 'ts-translation-cache';
+    public static $expiryTimestamp = false;
 }
 
 ?>
