diff --git a/src/json.c b/src/json.c
index d3e05da..c9bbac6 100644
--- a/src/json.c
+++ b/src/json.c
@@ -20,8 +20,6 @@
 
 static int json_encode_item(garray_T *gap, typval_T *val, int copyID, int options);
 
-static char e_json_error[] = N_("E491: json decode error at '%s'");
-
 /*
  * Encode "val" into a JSON format string.
  * The result is added to "gap"
@@ -740,7 +738,7 @@
 			retval = json_decode_string(reader, cur_item, *p);
 		    else
 		    {
-			semsg(_(e_json_error), p);
+			semsg(_(e_json_decode_error_at_str), p);
 			retval = FAIL;
 		    }
 		    break;
@@ -748,7 +746,7 @@
 		case ',': // comma: empty item
 		    if ((options & JSON_JS) == 0)
 		    {
-			semsg(_(e_json_error), p);
+			semsg(_(e_json_decode_error_at_str), p);
 			retval = FAIL;
 			break;
 		    }
@@ -778,7 +776,7 @@
 			    }
 			    if (!VIM_ISDIGIT(*sp))
 			    {
-				semsg(_(e_json_error), p);
+				semsg(_(e_json_decode_error_at_str), p);
 				retval = FAIL;
 				break;
 			    }
@@ -810,7 +808,7 @@
 				    &nr, NULL, 0, TRUE);
 			    if (len == 0)
 			    {
-				semsg(_(e_json_error), p);
+				semsg(_(e_json_decode_error_at_str), p);
 				retval = FAIL;
 				goto theend;
 			    }
@@ -971,7 +969,7 @@
 			retval = MAYBE;
 		    else
 		    {
-			semsg(_(e_json_error), p);
+			semsg(_(e_json_decode_error_at_str), p);
 			retval = FAIL;
 		    }
 		    goto theend;
@@ -989,7 +987,7 @@
 			retval = MAYBE;
 		    else
 		    {
-			semsg(_(e_json_error), p);
+			semsg(_(e_json_decode_error_at_str), p);
 			retval = FAIL;
 		    }
 		    goto theend;
@@ -1044,7 +1042,7 @@
 			retval = MAYBE;
 		    else
 		    {
-			semsg(_(e_json_error), p);
+			semsg(_(e_json_decode_error_at_str), p);
 			retval = FAIL;
 		    }
 		    goto theend;
@@ -1063,7 +1061,7 @@
 	res->v_type = VAR_SPECIAL;
 	res->vval.v_number = VVAL_NONE;
     }
-    semsg(_(e_json_error), p);
+    semsg(_(e_json_decode_error_at_str), p);
 
 theend:
     for (i = 0; i < stack.ga_len; i++)
@@ -1090,7 +1088,7 @@
     if (ret != OK)
     {
 	if (ret == MAYBE)
-	    semsg(_(e_json_error), reader->js_buf);
+	    semsg(_(e_json_decode_error_at_str), reader->js_buf);
 	return FAIL;
     }
     json_skip_white(reader);
