diff --git a/src/edit.c b/src/edit.c
index 5280a82..96464de 100644
--- a/src/edit.c
+++ b/src/edit.c
@@ -165,7 +165,7 @@
     // Don't allow inserting in the sandbox.
     if (sandbox != 0)
     {
-	emsg(_(e_sandbox));
+	emsg(_(e_not_allowed_in_sandbox));
 	return FALSE;
     }
 #endif
diff --git a/src/errors.h b/src/errors.h
index ce0d682..8655d3f 100644
--- a/src/errors.h
+++ b/src/errors.h
@@ -104,10 +104,43 @@
 	INIT(= N_("E44: Corrupted regexp program"));
 EXTERN char e_readonly_option_is_set_add_bang_to_override[]
 	INIT(= N_("E45: 'readonly' option is set (add ! to override)"));
+#ifdef FEAT_EVAL
+EXTERN char e_cannot_change_readonly_variable_str[]
+	INIT(= N_("E46: Cannot change read-only variable \"%s\""));
+#endif
+#ifdef FEAT_QUICKFIX
+EXTERN char e_error_while_reading_errorfile[]
+	INIT(= N_("E47: Error while reading errorfile"));
+#endif
+#ifdef HAVE_SANDBOX
+EXTERN char e_not_allowed_in_sandbox[]
+	INIT(= N_("E48: Not allowed in sandbox"));
+#endif
+EXTERN char e_invalid_scroll_size[]
+	INIT(= N_("E49: Invalid scroll size"));
+EXTERN char e_too_many_z[]
+	INIT(= N_("E50: Too many \\z("));
+EXTERN char e_too_many_str_open[]
+	INIT(= N_("E51: Too many %s("));
+EXTERN char e_unmatched_z[]
+	INIT(= N_("E52: Unmatched \\z("));
+EXTERN char e_unmatched_str_percent_open[]
+	INIT(= N_("E53: Unmatched %s%%("));
+EXTERN char e_unmatched_str_open[]
+	INIT(= N_("E54: Unmatched %s("));
+EXTERN char e_unmatched_str_close[]
+	INIT(= N_("E55: Unmatched %s)"));
+EXTERN char e_invalid_character_after_str_at[]
+	INIT(= N_("E59: invalid character after %s@"));
+EXTERN char e_too_many_complex_str_curly[]
+	INIT(= N_("E60: Too many complex %s{...}s"));
+
+#ifdef FEAT_EVAL
 EXTERN char e_undefined_variable_str[]
 	INIT(= N_("E121: Undefined variable: %s"));
 EXTERN char e_undefined_variable_char_str[]
 	INIT(= N_("E121: Undefined variable: %c:%s"));
+#endif
 #ifndef FEAT_DIGRAPHS
 EXTERN char e_no_digraphs_version[]
 	INIT(= N_("E196: No digraphs in this version"));
diff --git a/src/evalvars.c b/src/evalvars.c
index 909ee1d..c58f734 100644
--- a/src/evalvars.c
+++ b/src/evalvars.c
@@ -2232,7 +2232,7 @@
     // VV_RO is also checked when compiling, but let's check here as well.
     if (vimvars[idx].vv_flags & VV_RO)
     {
-	semsg(_(e_readonlyvar), vimvars[idx].vv_name);
+	semsg(_(e_cannot_change_readonly_variable_str), vimvars[idx].vv_name);
 	return FAIL;
     }
     if (sandbox && (vimvars[idx].vv_flags & VV_RO_SBX))
@@ -3499,7 +3499,8 @@
 {
     if (flags & DI_FLAGS_RO)
     {
-	semsg(_(e_readonlyvar), use_gettext ? (char_u *)_(name) : name);
+	semsg(_(e_cannot_change_readonly_variable_str),
+				       use_gettext ? (char_u *)_(name) : name);
 	return TRUE;
     }
     if ((flags & DI_FLAGS_RO_SBX) && sandbox)
diff --git a/src/ex_cmds.c b/src/ex_cmds.c
index 513306b..d9ec4a4 100644
--- a/src/ex_cmds.c
+++ b/src/ex_cmds.c
@@ -3596,7 +3596,7 @@
      */
     if (sandbox != 0)
     {
-	emsg(_(e_sandbox));
+	emsg(_(e_not_allowed_in_sandbox));
 	return TRUE;
     }
 #endif
diff --git a/src/ex_docmd.c b/src/ex_docmd.c
index 1efefb1..c1d0295 100644
--- a/src/ex_docmd.c
+++ b/src/ex_docmd.c
@@ -2112,7 +2112,7 @@
 	if (sandbox != 0 && !(ea.argt & EX_SBOXOK))
 	{
 	    // Command not allowed in sandbox.
-	    errormsg = _(e_sandbox);
+	    errormsg = _(e_not_allowed_in_sandbox);
 	    goto doend;
 	}
 #endif
diff --git a/src/globals.h b/src/globals.h
index 4c75187..00936e8 100644
--- a/src/globals.h
+++ b/src/globals.h
@@ -1666,7 +1666,6 @@
 EXTERN char e_letwrong[]	INIT(= N_("E734: Wrong variable type for %s="));
 EXTERN char e_illvar[]		INIT(= N_("E461: Illegal variable name: %s"));
 EXTERN char e_cannot_mod[]	INIT(= N_("E995: Cannot modify existing variable"));
-EXTERN char e_readonlyvar[]	INIT(= N_("E46: Cannot change read-only variable \"%s\""));
 EXTERN char e_readonlysbx[]	INIT(= N_("E794: Cannot set variable in the sandbox: \"%s\""));
 EXTERN char e_stringreq[]	INIT(= N_("E928: String required"));
 EXTERN char e_numberreq[]	INIT(= N_("E889: Number required"));
@@ -1692,12 +1691,6 @@
 EXTERN char e_reduceempty[]	INIT(= N_("E998: Reduce of an empty %s with no initial value"));
 EXTERN char e_no_dict_key[]	INIT(= N_("E857: Dictionary key \"%s\" required"));
 #endif
-#ifdef FEAT_QUICKFIX
-EXTERN char e_readerrf[]	INIT(= N_("E47: Error while reading errorfile"));
-#endif
-#ifdef HAVE_SANDBOX
-EXTERN char e_sandbox[]		INIT(= N_("E48: Not allowed in sandbox"));
-#endif
 EXTERN char e_secure[]		INIT(= N_("E523: Not allowed here"));
 EXTERN char e_textlock[]	INIT(= N_("E578: Not allowed to change text here"));
 EXTERN char e_textwinlock[]	INIT(= N_("E565: Not allowed to change text or change window"));
@@ -1705,7 +1698,6 @@
 	|| defined(UNIX) || defined(VMS)
 EXTERN char e_screenmode[]	INIT(= N_("E359: Screen mode setting not supported"));
 #endif
-EXTERN char e_scroll[]	INIT(= N_("E49: Invalid scroll size"));
 EXTERN char e_shellempty[]	INIT(= N_("E91: 'shell' option is empty"));
 #if defined(FEAT_SIGN_ICONS) && !defined(FEAT_GUI_GTK)
 EXTERN char e_signdata[]	INIT(= N_("E255: Couldn't read in sign data!"));
diff --git a/src/option.c b/src/option.c
index 6232cd9..21d113e 100644
--- a/src/option.c
+++ b/src/option.c
@@ -1485,7 +1485,7 @@
 	    // Disallow changing some options in the sandbox
 	    if (sandbox != 0 && (flags & P_SECURE))
 	    {
-		errmsg = e_sandbox;
+		errmsg = e_not_allowed_in_sandbox;
 		goto skip;
 	    }
 #endif
@@ -3757,7 +3757,7 @@
 	if (pp == &(curwin->w_p_scr))
 	{
 	    if (curwin->w_p_scr != 0)
-		errmsg = e_scroll;
+		errmsg = e_invalid_scroll_size;
 	    win_comp_scroll(curwin);
 	}
 	// If 'scroll' became invalid because of a side effect silently adjust
@@ -3793,7 +3793,7 @@
 	    p_sj = Rows / 2;
 	else
 	{
-	    errmsg = e_scroll;
+	    errmsg = e_invalid_scroll_size;
 	    p_sj = 1;
 	}
     }
@@ -4366,7 +4366,7 @@
 	// Disallow changing some options in the sandbox
 	if (sandbox > 0 && (flags & P_SECURE))
 	{
-	    emsg(_(e_sandbox));
+	    emsg(_(e_not_allowed_in_sandbox));
 	    return NULL;
 	}
 #endif
diff --git a/src/quickfix.c b/src/quickfix.c
index daf27d7..d1671b2 100644
--- a/src/quickfix.c
+++ b/src/quickfix.c
@@ -1769,7 +1769,7 @@
 	retval = qfl->qf_count;
 	goto qf_init_end;
     }
-    emsg(_(e_readerrf));
+    emsg(_(e_error_while_reading_errorfile));
 error2:
     if (!adding)
     {
diff --git a/src/regexp.c b/src/regexp.c
index 5a17d24..e28d9e6 100644
--- a/src/regexp.c
+++ b/src/regexp.c
@@ -74,9 +74,6 @@
 static char_u e_missingbracket[] = N_("E769: Missing ] after %s[");
 static char_u e_reverse_range[] = N_("E944: Reverse range in character class");
 static char_u e_large_class[] = N_("E945: Range too large in character class");
-static char_u e_unmatchedpp[] = N_("E53: Unmatched %s%%(");
-static char_u e_unmatchedp[] = N_("E54: Unmatched %s(");
-static char_u e_unmatchedpar[] = N_("E55: Unmatched %s)");
 #ifdef FEAT_SYN_HL
 static char_u e_z_not_allowed[] = N_("E66: \\z( not allowed here");
 static char_u e_z1_not_allowed[] = N_("E67: \\z1 - \\z9 not allowed here");
diff --git a/src/regexp_bt.c b/src/regexp_bt.c
index 1a677d1..313451c 100644
--- a/src/regexp_bt.c
+++ b/src/regexp_bt.c
@@ -2158,7 +2158,7 @@
 			      }
 		}
 		if (lop == END)
-		    EMSG2_RET_NULL(_("E59: invalid character after %s@"),
+		    EMSG2_RET_NULL(_(e_invalid_character_after_str_at),
 						      reg_magic == MAGIC_ALL);
 		// Look behind must match with behind_pos.
 		if (lop == BEHIND || lop == NOBEHIND)
@@ -2199,7 +2199,7 @@
 	    else
 	    {
 		if (num_complex_braces >= 10)
-		    EMSG2_RET_NULL(_("E60: Too many complex %s{...}s"),
+		    EMSG2_RET_NULL(_(e_too_many_complex_str_curly),
 						      reg_magic == MAGIC_ALL);
 		reginsert(BRACE_COMPLEX + num_complex_braces, ret);
 		regoptail(ret, regnode(BACK));
@@ -2369,7 +2369,7 @@
     {
 	// Make a ZOPEN node.
 	if (regnzpar >= NSUBEXP)
-	    EMSG_RET_NULL(_("E50: Too many \\z("));
+	    EMSG_RET_NULL(_(e_too_many_z));
 	parno = regnzpar;
 	regnzpar++;
 	ret = regnode(ZOPEN + parno);
@@ -2380,7 +2380,7 @@
     {
 	// Make a MOPEN node.
 	if (regnpar >= NSUBEXP)
-	    EMSG2_RET_NULL(_("E51: Too many %s("), reg_magic == MAGIC_ALL);
+	    EMSG2_RET_NULL(_(e_too_many_str_open), reg_magic == MAGIC_ALL);
 	parno = regnpar;
 	++regnpar;
 	ret = regnode(MOPEN + parno);
@@ -2437,18 +2437,18 @@
     {
 #ifdef FEAT_SYN_HL
 	if (paren == REG_ZPAREN)
-	    EMSG_RET_NULL(_("E52: Unmatched \\z("));
+	    EMSG_RET_NULL(_(e_unmatched_z));
 	else
 #endif
 	    if (paren == REG_NPAREN)
-	    EMSG2_RET_NULL(_(e_unmatchedpp), reg_magic == MAGIC_ALL);
+	    EMSG2_RET_NULL(_(e_unmatched_str_percent_open), reg_magic == MAGIC_ALL);
 	else
-	    EMSG2_RET_NULL(_(e_unmatchedp), reg_magic == MAGIC_ALL);
+	    EMSG2_RET_NULL(_(e_unmatched_str_open), reg_magic == MAGIC_ALL);
     }
     else if (paren == REG_NOPAREN && peekchr() != NUL)
     {
 	if (curchr == Magic(')'))
-	    EMSG2_RET_NULL(_(e_unmatchedpar), reg_magic == MAGIC_ALL);
+	    EMSG2_RET_NULL(_(e_unmatched_str_close), reg_magic == MAGIC_ALL);
 	else
 	    EMSG_RET_NULL(_(e_trailing));	// "Can't happen".
 	// NOTREACHED
diff --git a/src/regexp_nfa.c b/src/regexp_nfa.c
index dac3125..9757d7c 100644
--- a/src/regexp_nfa.c
+++ b/src/regexp_nfa.c
@@ -2561,14 +2561,15 @@
     if (paren != REG_NOPAREN && getchr() != Magic(')'))
     {
 	if (paren == REG_NPAREN)
-	    EMSG2_RET_FAIL(_(e_unmatchedpp), reg_magic == MAGIC_ALL);
+	    EMSG2_RET_FAIL(_(e_unmatched_str_percent_open),
+						       reg_magic == MAGIC_ALL);
 	else
-	    EMSG2_RET_FAIL(_(e_unmatchedp), reg_magic == MAGIC_ALL);
+	    EMSG2_RET_FAIL(_(e_unmatched_str_open), reg_magic == MAGIC_ALL);
     }
     else if (paren == REG_NOPAREN && peekchr() != NUL)
     {
 	if (peekchr() == Magic(')'))
-	    EMSG2_RET_FAIL(_(e_unmatchedpar), reg_magic == MAGIC_ALL);
+	    EMSG2_RET_FAIL(_(e_unmatched_str_close), reg_magic == MAGIC_ALL);
 	else
 	    EMSG_RET_FAIL(_("E873: (NFA regexp) proper termination error"));
     }
diff --git a/src/undo.c b/src/undo.c
index c16bcac..331c1e6 100644
--- a/src/undo.c
+++ b/src/undo.c
@@ -324,7 +324,7 @@
     // In the sandbox it's not allowed to change the text.
     if (sandbox != 0)
     {
-	emsg(_(e_sandbox));
+	emsg(_(e_not_allowed_in_sandbox));
 	return FALSE;
     }
 #endif
diff --git a/src/version.c b/src/version.c
index fa86ff6..027de07 100644
--- a/src/version.c
+++ b/src/version.c
@@ -756,6 +756,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    3197,
+/**/
     3196,
 /**/
     3195,
diff --git a/src/vim9compile.c b/src/vim9compile.c
index 2a0ab25..8e8ae3f 100644
--- a/src/vim9compile.c
+++ b/src/vim9compile.c
@@ -2477,7 +2477,7 @@
 	    || (check_writable == ASSIGN_FINAL
 					      && sv->sv_const == ASSIGN_CONST))
     {
-	semsg(_(e_readonlyvar), name);
+	semsg(_(e_cannot_change_readonly_variable_str), name);
 	return FAIL;
     }
     return OK;
diff --git a/src/vim9script.c b/src/vim9script.c
index 85d601c..605d0be 100644
--- a/src/vim9script.c
+++ b/src/vim9script.c
@@ -962,7 +962,7 @@
     {
 	if (sv->sv_const != 0)
 	{
-	    semsg(_(e_readonlyvar), name);
+	    semsg(_(e_cannot_change_readonly_variable_str), name);
 	    return FAIL;
 	}
 	ret = check_typval_type(sv->sv_type, value, where);
