diff --git a/i18nmenu_node.module b/i18nmenu_node.module
index 0935268..428dda6 100644
--- a/i18nmenu_node.module
+++ b/i18nmenu_node.module
@@ -50,6 +50,9 @@ function i18nmenu_node_block($op = 'list', $delta = 0) {
   switch ($op) {
     case 'list':
       $blocks = array();
+      $schema = drupal_get_schema('blocks');
+      $max_length = $schema['fields']['delta']['length'];
+
       // Retrieve blocks from all the modules defined in the block information.
       foreach (i18nmenu_node_block_info() as $module => $data) {
         $module_blocks = module_invoke($module, 'block');
@@ -61,13 +64,23 @@ function i18nmenu_node_block($op = 'list', $delta = 0) {
           // Create an [i18n] version for each block and store the parent module
           // as part of the delta.
           foreach ($module_blocks as $delta => $block) {
-            $mtn_delta = $module . $separator . $delta;
-            $blocks[$mtn_delta]['info'] = t('[i18n] !block', array('!block' => $block['info']));
-            // Inherit block settings except for the 'info' key.
-            $blocks[$mtn_delta] += $block;
+            // Truncate the [i18n] block delta to the maximum allowed length and
+            // check that there is no block with such a delta already defined.
+            $mtn_delta = substr($module . $separator . $delta, 0, $max_length);
+            if (!isset($blocks[$mtn_delta])) {
+              $blocks[$mtn_delta]['info'] = t('[i18n] !block', array('!block' => $block['info']));
+              // Inherit block settings except for the 'info' key.
+              $blocks[$mtn_delta] += $block;
+            }
+            else {
+              $limit = $max_length - strlen($module . $separator);
+              $info = str_replace('[i18n] ', '', $blocks[$mtn_delta]['info']);
+              drupal_set_message(t('The [i18n] version of <em>@current_block</em> cannot be provided: the block identifier is already assigned to <em>@block</em>. Try to change the original block identifier before character !limit.', array('@current_block' => $block['info'], '@block' => $info, '!limit' => $limit)), 'warning', FALSE);
+            }
           }
         }
       }
+
       return $blocks;
 
     case 'view':
