diff --git a/src/blob.c b/src/blob.c
index 2833c1a..0458571 100644
--- a/src/blob.c
+++ b/src/blob.c
@@ -209,7 +209,7 @@
     if (fwrite(blob->bv_ga.ga_data, 1, blob->bv_ga.ga_len, fd)
 						  < (size_t)blob->bv_ga.ga_len)
     {
-	emsg(_(e_write));
+	emsg(_(e_error_while_writing));
 	return FAIL;
     }
     return OK;
diff --git a/src/buffer.c b/src/buffer.c
index f86ecdd..65d1ea0 100644
--- a/src/buffer.c
+++ b/src/buffer.c
@@ -193,7 +193,7 @@
 	// This is OK, since there are no changes to lose.
 	if (curbuf == NULL)
 	{
-	    emsg(_("E82: Cannot allocate any buffer, exiting..."));
+	    emsg(_(e_cannot_allocate_any_buffer_exiting));
 
 	    // Don't try to do any saving, with "curbuf" NULL almost nothing
 	    // will work.
@@ -201,7 +201,7 @@
 	    getout(2);
 	}
 
-	emsg(_("E83: Cannot allocate buffer, using other one..."));
+	emsg(_(e_cannot_allocate_buffer_using_other_one));
 	enter_buffer(curbuf);
 #ifdef FEAT_SYN_HL
 	if (old_tw != curbuf->b_p_tw)
@@ -1182,7 +1182,7 @@
 
     if (action == DOBUF_UNLOAD)
     {
-	emsg(_("E90: Cannot unload last buffer"));
+	emsg(_(e_cannot_unload_last_buffer));
 	return FAIL;
     }
 
@@ -1255,7 +1255,7 @@
 	}
 	if (!bufIsChanged(buf))
 	{
-	    emsg(_("E84: No modified buffer found"));
+	    emsg(_(e_no_modified_buffer_found));
 	    return FAIL;
 	}
     }
@@ -1294,7 +1294,7 @@
 	    if (bp == buf)
 	    {
 		// back where we started, didn't find anything.
-		emsg(_("E85: There is no listed buffer"));
+		emsg(_(e_there_is_no_listed_buffer));
 		return FAIL;
 	    }
 	}
@@ -1306,12 +1306,12 @@
 	{
 	    // don't warn when deleting
 	    if (!unload)
-		semsg(_(e_nobufnr), count);
+		semsg(_(e_buffer_nr_does_not_exist), count);
 	}
 	else if (dir == FORWARD)
-	    emsg(_("E87: Cannot go beyond last buffer"));
+	    emsg(_(e_cannot_go_beyond_last_buffer));
 	else
-	    emsg(_("E88: Cannot go before first buffer"));
+	    emsg(_(e_cannot_go_before_first_buffer));
 	return FAIL;
     }
 #ifdef FEAT_PROP_POPUP
@@ -1364,7 +1364,7 @@
 	    else
 #endif
 	    {
-		semsg(_("E89: No write since last change for buffer %d (add ! to override)"),
+		semsg(_(e_no_write_since_last_change_for_buffer_nr_add_bang_to_override),
 								 buf->b_fnum);
 		return FAIL;
 	    }
diff --git a/src/channel.c b/src/channel.c
index 7514d63..6343124 100644
--- a/src/channel.c
+++ b/src/channel.c
@@ -1210,7 +1210,8 @@
 	{
 	    buf = buflist_findnr(opt->jo_io_buf[PART_OUT]);
 	    if (buf == NULL)
-		semsg(_(e_nobufnr), (long)opt->jo_io_buf[PART_OUT]);
+		semsg(_(e_buffer_nr_does_not_exist),
+					       (long)opt->jo_io_buf[PART_OUT]);
 	}
 	else
 	{
@@ -1257,7 +1258,8 @@
 	{
 	    buf = buflist_findnr(opt->jo_io_buf[PART_ERR]);
 	    if (buf == NULL)
-		semsg(_(e_nobufnr), (long)opt->jo_io_buf[PART_ERR]);
+		semsg(_(e_buffer_nr_does_not_exist),
+					       (long)opt->jo_io_buf[PART_ERR]);
 	}
 	else
 	{
diff --git a/src/errors.h b/src/errors.h
index 49df357..a494de3 100644
--- a/src/errors.h
+++ b/src/errors.h
@@ -168,6 +168,34 @@
 	INIT(= N_("E76: Too many ["));
 EXTERN char e_too_many_file_names[]
 	INIT(= N_("E77: Too many file names"));
+EXTERN char e_unknown_mark[]
+	INIT(= N_("E78: Unknown mark"));
+EXTERN char e_cannot_expand_wildcards[]
+	INIT(= N_("E79: Cannot expand wildcards"));
+EXTERN char e_error_while_writing[]
+	INIT(= N_("E80: Error while writing"));
+#ifdef FEAT_EVAL
+EXTERN char e_using_sid_not_in_script_context[]
+	INIT(= N_("E81: Using <SID> not in a script context"));
+#endif
+EXTERN char e_cannot_allocate_any_buffer_exiting[]
+	INIT(= N_("E82: Cannot allocate any buffer, exiting..."));
+EXTERN char e_cannot_allocate_buffer_using_other_one[]
+	INIT(= N_("E83: Cannot allocate buffer, using other one..."));
+EXTERN char e_no_modified_buffer_found[]
+	INIT(= N_("E84: No modified buffer found"));
+EXTERN char e_there_is_no_listed_buffer[]
+	INIT(= N_("E85: There is no listed buffer"));
+EXTERN char e_buffer_nr_does_not_exist[]
+	INIT(= N_("E86: Buffer %ld does not exist"));
+EXTERN char e_cannot_go_beyond_last_buffer[]
+	INIT(= N_("E87: Cannot go beyond last buffer"));
+EXTERN char e_cannot_go_before_first_buffer[]
+	INIT(= N_("E88: Cannot go before first buffer"));
+EXTERN char e_no_write_since_last_change_for_buffer_nr_add_bang_to_override[]
+	INIT(= N_("E89: No write since last change for buffer %d (add ! to override)"));
+EXTERN char e_cannot_unload_last_buffer[]
+	INIT(= N_("E90: Cannot unload last buffer"));
 
 #ifdef FEAT_EVAL
 EXTERN char e_undefined_variable_str[]
diff --git a/src/ex_docmd.c b/src/ex_docmd.c
index 1fc538b..4d739f9 100644
--- a/src/ex_docmd.c
+++ b/src/ex_docmd.c
@@ -9167,7 +9167,7 @@
 	case SPEC_SID:
 		if (current_sctx.sc_sid <= 0)
 		{
-		    *errormsg = _(e_usingsid);
+		    *errormsg = _(e_using_sid_not_in_script_context);
 		    return NULL;
 		}
 		sprintf((char *)strbuf, "<SNR>%d_", current_sctx.sc_sid);
diff --git a/src/globals.h b/src/globals.h
index 143aaa0..5f8167a 100644
--- a/src/globals.h
+++ b/src/globals.h
@@ -1717,14 +1717,10 @@
 #endif
 EXTERN char e_trailing[]	INIT(= N_("E488: Trailing characters"));
 EXTERN char e_trailing_arg[]	INIT(= N_("E488: Trailing characters: %s"));
-EXTERN char e_umark[]		INIT(= N_("E78: Unknown mark"));
-EXTERN char e_wildexpand[]	INIT(= N_("E79: Cannot expand wildcards"));
 EXTERN char e_winheight[]	INIT(= N_("E591: 'winheight' cannot be smaller than 'winminheight'"));
 EXTERN char e_winwidth[]	INIT(= N_("E592: 'winwidth' cannot be smaller than 'winminwidth'"));
-EXTERN char e_write[]		INIT(= N_("E80: Error while writing"));
 EXTERN char e_zerocount[]	INIT(= N_("E939: Positive count required"));
 #ifdef FEAT_EVAL
-EXTERN char e_usingsid[]	INIT(= N_("E81: Using <SID> not in a script context"));
 EXTERN char e_missing_paren[]	INIT(= N_("E107: Missing parentheses: %s"));
 EXTERN char e_missing_close[]	INIT(= N_("E110: Missing ')'"));
 EXTERN char e_missing_dict_colon[] INIT(= N_("E720: Missing colon in Dictionary: %s"));
@@ -1741,7 +1737,6 @@
 #endif
 EXTERN char e_maxmempat[]	INIT(= N_("E363: pattern uses more memory than 'maxmempattern'"));
 EXTERN char e_emptybuf[]	INIT(= N_("E749: empty buffer"));
-EXTERN char e_nobufnr[]	INIT(= N_("E86: Buffer %ld does not exist"));
 
 EXTERN char e_invalpat[]	INIT(= N_("E682: Invalid search pattern or delimiter"));
 EXTERN char e_bufloaded[]	INIT(= N_("E139: File is loaded in another buffer"));
diff --git a/src/job.c b/src/job.c
index a2e184b..ebe902f 100644
--- a/src/job.c
+++ b/src/job.c
@@ -225,7 +225,8 @@
 		}
 		if (buflist_findnr(opt->jo_io_buf[part]) == NULL)
 		{
-		    semsg(_(e_nobufnr), (long)opt->jo_io_buf[part]);
+		    semsg(_(e_buffer_nr_does_not_exist),
+						   (long)opt->jo_io_buf[part]);
 		    return FAIL;
 		}
 	    }
@@ -475,7 +476,7 @@
 		opt->jo_bufnr_buf = buflist_findnr(nr);
 		if (opt->jo_bufnr_buf == NULL)
 		{
-		    semsg(_(e_nobufnr), (long)nr);
+		    semsg(_(e_buffer_nr_does_not_exist), (long)nr);
 		    return FAIL;
 		}
 		if (opt->jo_bufnr_buf->b_nwindows == 0
@@ -1332,7 +1333,8 @@
 	{
 	    buf = buflist_findnr(opt.jo_io_buf[PART_IN]);
 	    if (buf == NULL)
-		semsg(_(e_nobufnr), (long)opt.jo_io_buf[PART_IN]);
+		semsg(_(e_buffer_nr_does_not_exist),
+						 (long)opt.jo_io_buf[PART_IN]);
 	}
 	else if (!(opt.jo_set & JO_IN_NAME))
 	{
diff --git a/src/list.c b/src/list.c
index 16e5983..d673447 100644
--- a/src/list.c
+++ b/src/list.c
@@ -1603,7 +1603,7 @@
 	    }
 	if (ret == FAIL)
 	{
-	    emsg(_(e_write));
+	    emsg(_(e_error_while_writing));
 	    break;
 	}
     }
diff --git a/src/mark.c b/src/mark.c
index c708e07..099214e 100644
--- a/src/mark.c
+++ b/src/mark.c
@@ -578,7 +578,7 @@
 {
     if (pos == NULL)
     {
-	emsg(_(e_umark));
+	emsg(_(e_unknown_mark));
 	return FAIL;
     }
     if (pos->lnum <= 0)
diff --git a/src/misc1.c b/src/misc1.c
index e780867..ad26ab3 100644
--- a/src/misc1.c
+++ b/src/misc1.c
@@ -2403,7 +2403,7 @@
 	    buf = buflist_findnr(argvars[1].vval.v_number);
 	    if (buf == NULL)
 	    {
-		semsg(_(e_nobufnr), argvars[1].vval.v_number);
+		semsg(_(e_buffer_nr_does_not_exist), argvars[1].vval.v_number);
 		fclose(fd);
 		goto errret;
 	    }
diff --git a/src/os_unix.c b/src/os_unix.c
index ef5533c..f93bc95 100644
--- a/src/os_unix.c
+++ b/src/os_unix.c
@@ -6797,7 +6797,7 @@
 	    if (!(flags & EW_SILENT))
 #endif
 	    {
-		msg(_(e_wildexpand));
+		msg(_(e_cannot_expand_wildcards));
 		msg_start();		// don't overwrite this message
 	    }
 	}
@@ -6817,7 +6817,7 @@
 	// Something went wrong, perhaps a file name with a special char.
 	if (!(flags & EW_SILENT))
 	{
-	    msg(_(e_wildexpand));
+	    msg(_(e_cannot_expand_wildcards));
 	    msg_start();		// don't overwrite this message
 	}
 	vim_free(tempname);
diff --git a/src/popupwin.c b/src/popupwin.c
index 4b8b741..7641827 100644
--- a/src/popupwin.c
+++ b/src/popupwin.c
@@ -1877,7 +1877,7 @@
 	    buf = buflist_findnr(argvars[0].vval.v_number);
 	    if (buf == NULL)
 	    {
-		semsg(_(e_nobufnr), argvars[0].vval.v_number);
+		semsg(_(e_buffer_nr_does_not_exist), argvars[0].vval.v_number);
 		return NULL;
 	    }
 #ifdef FEAT_TERMINAL
diff --git a/src/register.c b/src/register.c
index d225d77..6a4bc2c 100644
--- a/src/register.c
+++ b/src/register.c
@@ -2836,7 +2836,7 @@
 
 	    buf = buflist_findnr(num);
 	    if (buf == NULL)
-		semsg(_(e_nobufnr), (long)num);
+		semsg(_(e_buffer_nr_does_not_exist), (long)num);
 	}
 	else
 	    buf = buflist_findnr(buflist_findpat(str, str + STRLEN(str),
diff --git a/src/session.c b/src/session.c
index d2b360d..e64697f 100644
--- a/src/session.c
+++ b/src/session.c
@@ -1331,7 +1331,7 @@
 	failed |= fclose(fd);
 
 	if (failed)
-	    emsg(_(e_write));
+	    emsg(_(e_error_while_writing));
 #if defined(FEAT_SESSION)
 	else if (eap->cmdidx == CMD_mksession)
 	{
diff --git a/src/spellfile.c b/src/spellfile.c
index 0d7b194..6d6c248 100644
--- a/src/spellfile.c
+++ b/src/spellfile.c
@@ -5259,7 +5259,7 @@
     if (fwv != (size_t)1)
 	retval = FAIL;
     if (retval == FAIL)
-	emsg(_(e_write));
+	emsg(_(e_error_while_writing));
 
     return retval;
 }
@@ -5404,7 +5404,7 @@
 	    if (fd != NULL)
 		if (putc(np->wn_byte, fd) == EOF) // <byte> or <xbyte>
 		{
-		    emsg(_(e_write));
+		    emsg(_(e_error_while_writing));
 		    return 0;
 		}
 	}
@@ -5815,7 +5815,7 @@
      */
     if (fwrite(VIMSUGMAGIC, VIMSUGMAGICL, (size_t)1, fd) != 1) // <fileID>
     {
-	emsg(_(e_write));
+	emsg(_(e_error_while_writing));
 	goto theend;
     }
     putc(VIMSUGVERSION, fd);				// <versionnr>
@@ -5857,7 +5857,7 @@
 	len = (int)STRLEN(line) + 1;
 	if (fwrite(line, (size_t)len, (size_t)1, fd) == 0)
 	{
-	    emsg(_(e_write));
+	    emsg(_(e_error_while_writing));
 	    goto theend;
 	}
 	spin->si_memtot += len;
@@ -5865,7 +5865,7 @@
 
     // Write another byte to check for errors.
     if (putc(0, fd) == EOF)
-	emsg(_(e_write));
+	emsg(_(e_error_while_writing));
 
     vim_snprintf((char *)IObuff, IOSIZE,
 		 _("Estimated runtime memory use: %d bytes"), spin->si_memtot);
diff --git a/src/term.c b/src/term.c
index a8819a3..f74b18a 100644
--- a/src/term.c
+++ b/src/term.c
@@ -6021,7 +6021,7 @@
 	    if (STRNICMP(src, "<SID>", 5) == 0)
 	    {
 		if (current_sctx.sc_sid <= 0)
-		    emsg(_(e_usingsid));
+		    emsg(_(e_using_sid_not_in_script_context));
 		else
 		{
 		    src += 5;
diff --git a/src/userfunc.c b/src/userfunc.c
index 18af66c..7fc764e 100644
--- a/src/userfunc.c
+++ b/src/userfunc.c
@@ -3763,7 +3763,7 @@
 	    // It's script-local, "s:" or "<SID>"
 	    if (current_sctx.sc_sid <= 0)
 	    {
-		emsg(_(e_usingsid));
+		emsg(_(e_using_sid_not_in_script_context));
 		goto theend;
 	    }
 	    sprintf((char *)sid_buf, "%ld_", (long)current_sctx.sc_sid);
diff --git a/src/version.c b/src/version.c
index 69a230d..d7d1b21 100644
--- a/src/version.c
+++ b/src/version.c
@@ -754,6 +754,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    3750,
+/**/
     3749,
 /**/
     3748,
