diff --git a/src/blob.c b/src/blob.c
index 37d2be6..b5b4428 100644
--- a/src/blob.c
+++ b/src/blob.c
@@ -350,7 +350,7 @@
 	}
 	else
 	{
-	    semsg(_(e_blobidx), n1);
+	    semsg(_(e_blob_index_out_of_range_nr), n1);
 	    return FAIL;
 	}
     }
@@ -366,7 +366,7 @@
     if (n1 < 0 || n1 > bloblen)
     {
 	if (!quiet)
-	    semsg(_(e_blobidx), n1);
+	    semsg(_(e_blob_index_out_of_range_nr), n1);
 	return FAIL;
     }
     return OK;
@@ -381,7 +381,7 @@
     if (n2 < 0 || n2 >= bloblen || n2 < n1)
     {
 	if (!quiet)
-	    semsg(_(e_blobidx), n2);
+	    semsg(_(e_blob_index_out_of_range_nr), n2);
 	return FAIL;
     }
     return OK;
@@ -465,7 +465,7 @@
 	idx = len + idx;
     if (idx < 0 || idx >= len)
     {
-	semsg(_(e_blobidx), idx);
+	semsg(_(e_blob_index_out_of_range_nr), idx);
 	return;
     }
     if (argvars[2].v_type == VAR_UNKNOWN)
@@ -487,7 +487,7 @@
 	end = len + end;
     if (end >= len || idx > end)
     {
-	semsg(_(e_blobidx), end);
+	semsg(_(e_blob_index_out_of_range_nr), end);
 	return;
     }
     newblob = blob_alloc();
@@ -563,7 +563,7 @@
 	if (newtv.v_type != VAR_NUMBER && newtv.v_type != VAR_BOOL)
 	{
 	    clear_tv(&newtv);
-	    emsg(_(e_invalblob));
+	    emsg(_(e_invalid_operation_for_blob));
 	    break;
 	}
 	if (filtermap != FILTERMAP_FILTER)
@@ -660,7 +660,7 @@
     {
 	if (b == NULL || b->bv_ga.ga_len == 0)
 	{
-	    semsg(_(e_reduceempty), "Blob");
+	    semsg(_(e_reduce_of_an_empty_str_with_no_initial_value), "Blob");
 	    return;
 	}
 	initial.v_type = VAR_NUMBER;
