updated for version 7.1-312
diff --git a/src/po/check.vim b/src/po/check.vim
index 50ed9a4..abe999a 100644
--- a/src/po/check.vim
+++ b/src/po/check.vim
@@ -1,7 +1,8 @@
 " Vim script for checking .po files.
 "
-" Go through the file and verify that all %...s items in "msgid" are identical
-" to the ones in "msgstr".
+" Go through the file and verify that:
+" - All %...s items in "msgid" are identical to the ones in "msgstr".
+" - An error or warning code in "msgid" matches the one in "msgstr".
 
 if 1	" Only execute this if the eval feature is available.
 
@@ -56,6 +57,20 @@
   endif
 endwhile
 
+" Check that error code in msgid matches the one in msgstr.
+"
+" Examples of mismatches found with msgid "E123: ..."
+" - msgstr "E321: ..."    error code mismatch
+" - msgstr "W123: ..."    warning instead of error
+" - msgstr "E123 ..."     missing colon
+" - msgstr "..."          missing error code
+"
+1
+if search('msgid "\("\n"\)\?\([EW][0-9]\+:\).*\nmsgstr "\("\n"\)\?[^"]\@=\2\@!') > 0
+  echo 'Mismatching error/warning code in line ' . line('.')
+  let error = 1
+endif
+
 if error == 0
   echo "OK"
 endif
diff --git a/src/version.c b/src/version.c
index 0458140..5b5705a 100644
--- a/src/version.c
+++ b/src/version.c
@@ -667,6 +667,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    312,
+/**/
     311,
 /**/
     310,