Update runtime files
diff --git a/nsis/lang/serbian.nsi b/nsis/lang/serbian.nsi
new file mode 100644
index 0000000..60170da
--- /dev/null
+++ b/nsis/lang/serbian.nsi
@@ -0,0 +1,280 @@
+# vi:set ts=8 sts=4 sw=4 et fdm=marker:
+#
+# serbian.nsi: Serbian language strings for gvim NSIS installer.
+#
+# Locale ID    : 3098
+# fileencoding : UTF-8
+# Author       : Ivan Pešić
+
+!insertmacro MUI_LANGUAGE "Српски"
+
+
+# Overwrite the default translation.
+# These strings should be always English.  Otherwise dosinst.c fails.
+LangString ^SetupCaption     ${LANG_SERBIAN} \
+        "$(^Name) Setup"
+LangString ^UninstallCaption ${LANG_SERBIAN} \
+        "$(^Name) Uninstall"
+
+##############################################################################
+# MUI Configuration Strings                                               {{{1
+##############################################################################
+
+#LangString str_dest_folder          ${LANG_SERBIAN} \
+#    "Destination Folder (Must end with $\"vim$\")"
+
+LangString str_show_readme          ${LANG_SERBIAN} \
+    "Прикажи ПРОЧИТАЈМЕ када се заврши инсталација"
+
+# Install types:
+LangString str_type_typical         ${LANG_SERBIAN} \
+    "Типична"
+
+LangString str_type_minimal         ${LANG_SERBIAN} \
+    "Минимална"
+
+LangString str_type_full            ${LANG_SERBIAN} \
+    "Пуна"
+
+
+##############################################################################
+# Section Titles & Description                                            {{{1
+##############################################################################
+
+LangString str_section_old_ver      ${LANG_SERBIAN} \
+    "Уклањање постојећ(е/их) верзиј(е/а)"
+LangString str_desc_old_ver         ${LANG_SERBIAN} \
+    "Уклања постојећ(у/е) Vim верзииј(у/е) из вашег система."
+
+LangString str_section_exe          ${LANG_SERBIAN} \
+    "Vim ГКИ и фајлови потребни за извршавање"
+LangString str_desc_exe             ${LANG_SERBIAN} \
+    "Vim ГКИ извршни фајлови и фајлови потребни током извршавања. Ова компонента је неопходна."
+
+LangString str_section_console      ${LANG_SERBIAN} \
+    "Vim конзолни програм"
+LangString str_desc_console         ${LANG_SERBIAN} \
+    "Конзолна верзија програма Vim (vim.exe)."
+
+LangString str_section_batch        ${LANG_SERBIAN} \
+    "Креирај .bat фајлове"
+LangString str_desc_batch           ${LANG_SERBIAN} \
+    "Креира у Windows директоријуму .bat фајлове за Vim варијанте \
+     у циљу коришћења из командне линије."
+
+LangString str_group_icons          ${LANG_SERBIAN} \
+    "Креирај иконе за Vim"
+LangString str_desc_icons           ${LANG_SERBIAN} \
+    "Креира иконе за Vim на различитим местима, како би се олакшао приступ."
+
+LangString str_section_desktop      ${LANG_SERBIAN} \
+    "На радној површини"
+LangString str_desc_desktop         ${LANG_SERBIAN} \
+    "Креира иконе за gVim извршне фајлове на радној површини."
+
+LangString str_section_start_menu   ${LANG_SERBIAN} \
+    "У фасцикли Програми унутар Старт менија"
+LangString str_desc_start_menu      ${LANG_SERBIAN} \
+    "Додаје Vim у фолдер Програми Старт менија."
+
+#LangString str_section_quick_launch ${LANG_SERBIAN} \
+#    "In the Quick Launch Bar"
+#LangString str_desc_quick_launch    ${LANG_SERBIAN} \
+#    "Add Vim shortcut in the quick launch bar."
+
+LangString str_section_edit_with    ${LANG_SERBIAN} \
+    "Додај Vim контекстни мени"
+LangString str_desc_edit_with       ${LANG_SERBIAN} \
+    "Додаје Vim у $\"Отвори помоћу...$\" листу контекстног менија."
+
+#LangString str_section_edit_with32  ${LANG_SERBIAN} \
+#    "32-bit Version"
+#LangString str_desc_edit_with32     ${LANG_SERBIAN} \
+#    "Add Vim to the $\"Open With...$\" context menu list \
+#     for 32-bit applications."
+
+#LangString str_section_edit_with64  ${LANG_SERBIAN} \
+#    "64-bit Version"
+#LangString str_desc_edit_with64     ${LANG_SERBIAN} \
+#    "Add Vim to the $\"Open With...$\" context menu list \
+#     for 64-bit applications."
+
+LangString str_section_vim_rc       ${LANG_SERBIAN} \
+    "Креирај Подразумевану конфигурацију"
+LangString str_desc_vim_rc          ${LANG_SERBIAN} \
+    "Креира подразумевани конфиг фајл (_vimrc) ако неки већ не постоји."
+
+LangString str_group_plugin         ${LANG_SERBIAN} \
+    "Креира директоријуме додатака"
+LangString str_desc_plugin          ${LANG_SERBIAN} \
+    "Креира директоријуме додатака. Ови директоријуми омогућавају проширење програма Vim \
+     убацивањем фајла у директоријум."
+
+LangString str_section_plugin_home  ${LANG_SERBIAN} \
+    "Приватне"
+LangString str_desc_plugin_home     ${LANG_SERBIAN} \
+    "Креира директоријуме додатака у HOME директоријуму."
+
+LangString str_section_plugin_vim   ${LANG_SERBIAN} \
+    "Дељене"
+LangString str_desc_plugin_vim      ${LANG_SERBIAN} \
+    "Креира директоријуме додатака у Vim инсталационом директоријуму, користе их сви \
+     на систему."
+
+LangString str_section_vis_vim      ${LANG_SERBIAN} \
+    "VisVim проширење"
+LangString str_desc_vis_vim         ${LANG_SERBIAN} \
+    "VisVim проширење за Microsoft Visual Studio интеграцију."
+
+LangString str_section_nls          ${LANG_SERBIAN} \
+    "Подршка за домаћи језик"
+LangString str_desc_nls             ${LANG_SERBIAN} \
+    "Инсталира фајлове за домаћу језичку подршку."
+
+LangString str_unsection_register   ${LANG_SERBIAN} \
+    "Поништи регистрацију Vim"
+LangString str_desc_unregister      ${LANG_SERBIAN} \
+    "Поништава регистрацију програма Vim на систему."
+
+LangString str_unsection_exe        ${LANG_SERBIAN} \
+    "Уклони Vim извршне фајлове/фајлове потребне у време извршавања"
+LangString str_desc_rm_exe          ${LANG_SERBIAN} \
+    "Уклања све Vim извршне фајлове и оне потребне у време извршавања."
+
+LangString str_ungroup_plugin       ${LANG_SERBIAN} \
+    "Укони директоријуме додатака"
+LangString str_desc_rm_plugin       ${LANG_SERBIAN} \
+    "Уклања директоријуме додатака ако су празни."
+
+LangString str_unsection_plugin_home ${LANG_SERBIAN} \
+    "Приватне"
+LangString str_desc_rm_plugin_home  ${LANG_SERBIAN} \
+    "Уклања директоријуме додатака из HOME директоријума."
+
+LangString str_unsection_plugin_vim ${LANG_SERBIAN} \
+    "Дељене"
+LangString str_desc_rm_plugin_vim   ${LANG_SERBIAN} \
+    "Уклања директоријуме додатака из Vim инсталациониг директоријума."
+
+LangString str_unsection_rootdir    ${LANG_SERBIAN} \
+    "Уклони Vim корени директоријум"
+LangString str_desc_rm_rootdir      ${LANG_SERBIAN} \
+    "Уклања Vim корени директоријум. Он садржи ваше Vim конфигурационе фајлове!"
+
+
+##############################################################################
+# Messages                                                                {{{1
+##############################################################################
+
+#LangString str_msg_too_many_ver  ${LANG_SERBIAN} \
+#    "Found $vim_old_ver_count Vim versions on your system.$\r$\n\
+#     This installer can only handle ${VIM_MAX_OLD_VER} versions \
+#     at most.$\r$\n\
+#     Please remove some versions and start again."
+
+#LangString str_msg_invalid_root  ${LANG_SERBIAN} \
+#    "Invalid install path: $vim_install_root!$\r$\n\
+#     It should end with $\"vim$\"."
+
+#LangString str_msg_bin_mismatch  ${LANG_SERBIAN} \
+#    "Binary path mismatch!$\r$\n$\r$\n\
+#     Expect the binary path to be $\"$vim_bin_path$\",$\r$\n\
+#     but system indicates the binary path is $\"$INSTDIR$\"."
+
+#LangString str_msg_vim_running   ${LANG_SERBIAN} \
+#    "Vim is still running on your system.$\r$\n\
+#     Please close all instances of Vim before you continue."
+
+#LangString str_msg_register_ole  ${LANG_SERBIAN} \
+#    "Attempting to register Vim with OLE. \
+#     There is no message indicates whether this works or not."
+
+#LangString str_msg_unreg_ole     ${LANG_SERBIAN} \
+#    "Attempting to unregister Vim with OLE. \
+#     There is no message indicates whether this works or not."
+
+#LangString str_msg_rm_start      ${LANG_SERBIAN} \
+#    "Uninstalling the following version:"
+
+#LangString str_msg_rm_fail       ${LANG_SERBIAN} \
+#    "Fail to uninstall the following version:"
+
+#LangString str_msg_no_rm_key     ${LANG_SERBIAN} \
+#    "Cannot find uninstaller registry key."
+
+#LangString str_msg_no_rm_reg     ${LANG_SERBIAN} \
+#    "Cannot find uninstaller from registry."
+
+#LangString str_msg_no_rm_exe     ${LANG_SERBIAN} \
+#    "Cannot access uninstaller."
+
+#LangString str_msg_rm_copy_fail  ${LANG_SERBIAN} \
+#    "Fail to copy uninstaller to temporary directory."
+
+#LangString str_msg_rm_run_fail   ${LANG_SERBIAN} \
+#    "Fail to run uninstaller."
+
+#LangString str_msg_abort_install ${LANG_SERBIAN} \
+#    "Installer will abort."
+
+LangString str_msg_install_fail  ${LANG_SERBIAN} \
+    "Инсталација није успела. Више среће идући пут."
+
+LangString str_msg_rm_exe_fail   ${LANG_SERBIAN} \
+    "Неки фајлови у $0 нису обрисани!$\r$\n\
+     Морате то ручно да обавите."
+
+#LangString str_msg_rm_root_fail  ${LANG_SERBIAN} \
+#    "WARNING: Cannot remove $\"$vim_install_root$\", it is not empty!"
+
+LangString str_msg_uninstalling  ${LANG_SERBIAN} \
+    "Уклањање старе верзије..."
+
+LangString str_msg_registering   ${LANG_SERBIAN} \
+    "Регистровање..."
+
+LangString str_msg_unregistering ${LANG_SERBIAN} \
+    "Поништавање регистрације..."
+
+
+##############################################################################
+# Dialog Box                                                              {{{1
+##############################################################################
+
+LangString str_vimrc_page_title    ${LANG_SERBIAN} \
+    "Изаберите _vimrc подешавања"
+LangString str_vimrc_page_subtitle ${LANG_SERBIAN} \
+    "Изаберите подешавања за побољшања, тастатуру и миша."
+
+LangString str_msg_compat_title    ${LANG_SERBIAN} \
+    " Vi / Vim понашање "
+LangString str_msg_compat_desc     ${LANG_SERBIAN} \
+    "&Компатибилност и побољшања"
+LangString str_msg_compat_vi       ${LANG_SERBIAN} \
+    "Vi компатибилно"
+LangString str_msg_compat_vim      ${LANG_SERBIAN} \
+    "Vim оригинално"
+LangString str_msg_compat_defaults ${LANG_SERBIAN} \
+    "Vim са неким побољшањима (учитава defaults.vim)"
+LangString str_msg_compat_all      ${LANG_SERBIAN} \
+    "Vim са свим побољшањима (учитава vimrc_example.vim) (Подразумевано)"
+
+LangString str_msg_keymap_title   ${LANG_SERBIAN} \
+    " Мапирања "
+LangString str_msg_keymap_desc    ${LANG_SERBIAN} \
+    "&Ремапира неколико тастера за Windows (Ctrl-V, Ctrl-C, Ctrl-A, Ctrl-S, Ctrl-F, итд.)"
+LangString str_msg_keymap_default ${LANG_SERBIAN} \
+    "Немој да ремапираш тастере (Подразумевано)"
+LangString str_msg_keymap_windows ${LANG_SERBIAN} \
+    "Ремапира неколико тастера"
+
+LangString str_msg_mouse_title   ${LANG_SERBIAN} \
+    " Миш "
+LangString str_msg_mouse_desc    ${LANG_SERBIAN} \
+    "&Понашање левог и десног тастера"
+LangString str_msg_mouse_default ${LANG_SERBIAN} \
+    "Десни: искачући мени, Леви: визуелни режим (Подразумевано)"
+LangString str_msg_mouse_windows ${LANG_SERBIAN} \
+    "Десни: искачући мени, Леви: режим избора (Windows)"
+LangString str_msg_mouse_unix    ${LANG_SERBIAN} \
+    "Десни: проширује избор, Леви: визуелни режим (Unix)"
diff --git a/runtime/autoload/haskellcomplete.vim b/runtime/autoload/haskellcomplete.vim
index 520ab93..48fbac7 100644
--- a/runtime/autoload/haskellcomplete.vim
+++ b/runtime/autoload/haskellcomplete.vim
@@ -2,7 +2,7 @@
 " Language:        Haskell
 " Maintainer:      Daniel Campoverde <alx@sillybytes.net>
 " URL:             https://github.com/alx741/haskellcomplete.vim
-" Last Change:     2018 Aug 26
+" Last Change:     2019 May 14
 
 " Usage:           setlocal omnifunc=haskellcomplete#Complete
 
@@ -63,6 +63,7 @@
                     call add(l:matches, extension)
                 endif
             endfor
+            let b:completingLangExtension = 0
             return l:matches
         endif
 
@@ -78,6 +79,7 @@
                     call add(l:matches, flag)
                 endif
             endfor
+            let b:completingOptionsGHC = 0
             return l:matches
         endif
 
@@ -93,6 +95,7 @@
                     call add(l:matches, module)
                 endif
             endfor
+            let b:completingModule = 0
             return l:matches
         endif
 
diff --git a/runtime/delmenu.vim b/runtime/delmenu.vim
index 5cefe26..1372182 100644
--- a/runtime/delmenu.vim
+++ b/runtime/delmenu.vim
@@ -2,7 +2,7 @@
 " Warning: This also deletes all menus defined by the user!
 "
 " Maintainer:	Bram Moolenaar <Bram@vim.org>
-" Last Change:	2001 May 27
+" Last Change:	2019 Sep 11
 
 aunmenu *
 tlunmenu *
@@ -21,6 +21,11 @@
 silent! unlet menutrans_tags_dialog
 silent! unlet menutrans_textwidth_dialog
 silent! unlet menutrans_fileformat_dialog
+silent! unlet menutrans_fileformat_choices
 silent! unlet menutrans_no_file
+silent! unlet menutrans_set_lang_to
+silent! unlet menutrans_spell_change_ARG_to
+silent! unlet menutrans_spell_add_ARG_to_word_list
+silent! unlet menutrans_spell_ignore_ARG
 
 " vim: set sw=2 :
diff --git a/runtime/doc/channel.txt b/runtime/doc/channel.txt
index 9b36c07..8767d87 100644
--- a/runtime/doc/channel.txt
+++ b/runtime/doc/channel.txt
@@ -1,4 +1,4 @@
-*channel.txt*      For Vim version 8.1.  Last change: 2019 Aug 22
+*channel.txt*      For Vim version 8.1.  Last change: 2019 Sep 11
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -508,6 +508,9 @@
 		expression.  When there is an error or timeout it returns an
 		empty string.
 
+		Note that while waiting for the response, Vim handles other
+		messages.  You need to make sure this doesn't cause trouble.
+
 		Can also be used as a |method|: >
 			GetChannel()->ch_evalexpr(expr)
 
diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt
index f19e0c0..8cb2af1 100644
--- a/runtime/doc/eval.txt
+++ b/runtime/doc/eval.txt
@@ -1,4 +1,4 @@
-*eval.txt*	For Vim version 8.1.  Last change: 2019 Sep 06
+*eval.txt*	For Vim version 8.1.  Last change: 2019 Sep 10
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
diff --git a/runtime/doc/insert.txt b/runtime/doc/insert.txt
index 82691e8..47c40a2 100644
--- a/runtime/doc/insert.txt
+++ b/runtime/doc/insert.txt
@@ -1,4 +1,4 @@
-*insert.txt*    For Vim version 8.1.  Last change: 2019 Aug 21
+*insert.txt*    For Vim version 8.1.  Last change: 2019 Sep 08
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -1124,7 +1124,7 @@
 of values:
 	height		maximum height of the popup
 	width		maximum width of the popup
-	highlight	highlight group of the popup (default is Pmenu)
+	highlight	highlight group of the popup (default is PmenuSel)
 	align		"item" (default) or "menu"
 	border		"on" (default) or "off"
 Example: >
diff --git a/runtime/doc/options.txt b/runtime/doc/options.txt
index c7247ff..0c8589f 100644
--- a/runtime/doc/options.txt
+++ b/runtime/doc/options.txt
@@ -1,4 +1,4 @@
-*options.txt*	For Vim version 8.1.  Last change: 2019 Aug 21
+*options.txt*	For Vim version 8.1.  Last change: 2019 Sep 09
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
diff --git a/runtime/doc/popup.txt b/runtime/doc/popup.txt
index cff3b9e..8f1eb5c 100644
--- a/runtime/doc/popup.txt
+++ b/runtime/doc/popup.txt
@@ -1,4 +1,4 @@
-*popup.txt*  For Vim version 8.1.  Last change: 2019 Sep 04
+*popup.txt*  For Vim version 8.1.  Last change: 2019 Sep 08
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -204,7 +204,7 @@
 			\ mousemoved: 'WORD',
 			\ })
 <		Use {options} to change the properties.
-		See |popup_beval_example| for an example use.
+		See |popup_beval_example| for an example.
 
 		Can also be used as a |method|: >
 			GetText()->popup_beval({})
diff --git a/runtime/doc/tags b/runtime/doc/tags
index e343579..ab0215e 100644
--- a/runtime/doc/tags
+++ b/runtime/doc/tags
@@ -183,9 +183,11 @@
 'csverb'	options.txt	/*'csverb'*
 'cuc'	options.txt	/*'cuc'*
 'cul'	options.txt	/*'cul'*
+'culopt'	options.txt	/*'culopt'*
 'cursorbind'	options.txt	/*'cursorbind'*
 'cursorcolumn'	options.txt	/*'cursorcolumn'*
 'cursorline'	options.txt	/*'cursorline'*
+'cursorlineopt'	options.txt	/*'cursorlineopt'*
 'cwh'	options.txt	/*'cwh'*
 'debug'	options.txt	/*'debug'*
 'deco'	options.txt	/*'deco'*
@@ -9968,6 +9970,7 @@
 win_id2tabwin()	eval.txt	/*win_id2tabwin()*
 win_id2win()	eval.txt	/*win_id2win()*
 win_screenpos()	eval.txt	/*win_screenpos()*
+win_splitmove()	eval.txt	/*win_splitmove()*
 winbufnr()	eval.txt	/*winbufnr()*
 wincol()	eval.txt	/*wincol()*
 window	windows.txt	/*window*
diff --git a/runtime/doc/terminal.txt b/runtime/doc/terminal.txt
index 2484b73..b6fba8b 100644
--- a/runtime/doc/terminal.txt
+++ b/runtime/doc/terminal.txt
@@ -1,4 +1,4 @@
-*terminal.txt*	For Vim version 8.1.  Last change: 2019 Jul 04
+*terminal.txt*	For Vim version 8.1.  Last change: 2019 Sep 08
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
diff --git a/runtime/doc/testing.txt b/runtime/doc/testing.txt
index 82fe64e..10334f3 100644
--- a/runtime/doc/testing.txt
+++ b/runtime/doc/testing.txt
@@ -1,4 +1,4 @@
-*testing.txt*	For Vim version 8.1.  Last change: 2019 Aug 21
+*testing.txt*	For Vim version 8.1.  Last change: 2019 Sep 08
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
diff --git a/runtime/doc/todo.txt b/runtime/doc/todo.txt
index bb3b927..754f09c 100644
--- a/runtime/doc/todo.txt
+++ b/runtime/doc/todo.txt
@@ -1,4 +1,4 @@
-*todo.txt*      For Vim version 8.1.  Last change: 2019 Sep 07
+*todo.txt*      For Vim version 8.1.  Last change: 2019 Sep 10
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -38,6 +38,8 @@
 							*known-bugs*
 -------------------- Known bugs and current work -----------------------
 
+Split off part of option.c: #4918
+
 Popup windows:
 - Implement flip option
 - Why does 'nrformats' leak from the popup window buffer???
@@ -132,14 +134,12 @@
 
 undo result wrong: Masato Nishihata, #4798
 
+Undo puts cursor in wrong line after "cG<Esc>" undo.
+
 Sound: support on Mac?  Or does libcanberra work there?
 
-Patch to add win_splitmove() function. (Andy Massimino, #4561)
-
 Patch for #4733: #4734.  Test needs improvements.
 
-Add CmdwinLeavePost (#4762).  Also add WinLeavePost then?
-
 Patch to fix session file when using multiple tabs. (Jason Franklin, 2019 May
 20)
 Also put :argadd commands at the start for all buffers, so that their order
@@ -157,15 +157,6 @@
 Adding "10" to 'spellsuggest' causes spell suggestions to become very slow.
 (#4087)
 
-Patch to support 'cursorlineopt' - only highlight the line number of the
-cursor line: #4693
-
-Let plugins know how much space is available in the last line before
-triggering the hit-enter prompt.  Internally called "sc_col".
-(Daniel Hahler, #4732)
-
-Patch for Template string: #4491  Not ready yet.  New pull: #4634
-
 ":bnext" in a help buffer is supposed to go to the next help buffer, but it
 goes to any buffer, and then :bnext skips help buffers, since they are
 unlisted. (#4478)
@@ -191,9 +182,18 @@
 Modeless selection doesn't work in gvim. (#4783)
 Caused by patch 8.1.1534.
 
+Patch to add random number generator. (Hong Xu, 2010 Nov 8, update Nov 10)
+Alternative from Christian Brabandt. (2010 Sep 19)
+New one from Yasuhiro Matsumoto, #1277.
+
 Visual highlight not removed when 'dipslay' is "lastline" and line doesn't
 fit. (Kevin Lawler, #4457)
 
+Patch to add interrupt(). (Yasuhiro Matsumoto, #2834)
+
+Patch to add per-tabpage and per-window previous directory: "lcd -" and "tcd
+-". (Yegappan Lakshmanan, #4362)
+
 Does not build with MinGW out of the box:
 - _stat64 is not defined, need to use "struct stat" in vim.h
 - WINVER conflict, should use 0x0600 by default?
@@ -203,6 +203,11 @@
 
 Check_external_diff() is used too often. (Daniel Hahler, #4800)
 
+Incorrect formatting with autoindent. (Sebastian Gniazdowski, #4909)
+
+Patch to sort buffers on b_last_used time.  (Andy Massimino, #4722)
+Needs a test.
+
 Errors found with random data:
     heap-buffer-overflow in alist_add (#2472)
 
@@ -311,6 +316,9 @@
 Check: __attribute__((format(printf, on semsg() and siemsg().  Where was this
 added?
 
+Patch to add a flatten() function.  #3676.  Check that the doc explains the
+maxdepth argument (applies to the input "recursiveness").
+
 Add test for urxvt mouse codes.  Also test that mouse coordinates can be
 negative. (see #4326)
 
@@ -639,6 +647,9 @@
 
 ":bufdo e" disabled syntax HL in windows other than the current. (BPJ)
 
+Patch for Template string: #4491.  New pull: #4634
+It's an awful lot of code for something that is just a bit nicer syntax.
+
 Check argument of systemlist(). (Pavlov)
 
 No maintainer for Vietnamese translations.
@@ -989,10 +1000,6 @@
 Patch to fix that empty first tab is not in session.
 (Hirohito Higashi, 2016 Nov 25, #1282)
 
-Patch to add random number generator. (Hong Xu, 2010 Nov 8, update Nov 10)
-Alternative from Christian Brabandt. (2010 Sep 19)
-New one from Yasuhiro Matsumoto, #1277.
-
 Patch to fix escaping of job arguments. (Yasuhiro Matsumoto, 2016 Oct 5)
 Update Oct 14: https://gist.github.com/mattn/d47e7d3bfe5ade4be86062b565a4bfca
 Update Aug 2017: #1954
diff --git a/runtime/gvim.desktop b/runtime/gvim.desktop
index 91a5e7a..7805cd5 100644
--- a/runtime/gvim.desktop
+++ b/runtime/gvim.desktop
@@ -20,6 +20,7 @@
 GenericName[da]=Teksteditor
 GenericName[fr]=Éditeur de texte
 GenericName[pl]=Edytor tekstu
+GenericName[sr]=Едитор текста
 GenericName[is]=Ritvinnsluforrit
 Comment[af]=Redigeer tekslêers
 Comment[am]=የጽሑፍ ፋይሎች ያስተካክሉ
diff --git a/runtime/lang/menu_chinese_gb.936.vim b/runtime/lang/menu_chinese_gb.936.vim
index b3276b5..d96ab37 100644
--- a/runtime/lang/menu_chinese_gb.936.vim
+++ b/runtime/lang/menu_chinese_gb.936.vim
@@ -1,270 +1,452 @@
 " Menu Translations:    Simplified Chinese
 " Maintainer:           Shun Bai <baishunde@gmail.com>
 " Previous Maintainer:  Yuheng Xie <elephant@linux.net.cn>
-" Last Change:          2014 Oct 15
-
-" vim: ts=8 sw=8 noet
+" Last Change:          2019-09-10
 
 " Quit when menu translations have already been done.
 if exists("did_menu_trans")
   finish
 endif
 let did_menu_trans = 1
-let s:keepcpo= &cpo
+let s:keepcpo = &cpo
 set cpo&vim
 
 scriptencoding cp936
 
 " Help menu
-menutrans &Help			°ïÖú(&H)
-menutrans &Overview<Tab><F1>	×ÝÀÀ(&O)<Tab><F1>
-menutrans &User\ Manual		Óû§ÊÖ²á(&U)
-menutrans &How-to\ links	How-to\ Ö¸Òý(&H)
-menutrans &Find\.\.\.		²éÕÒ(&F)\.\.\.
-menutrans &Credits		ÖÂл(&C)
-menutrans Co&pying		°æÈ¨(&P)
-menutrans &Sponsor/Register	ÔÞÖú/×¢²á(&S)
-menutrans O&rphans		¹Â¶ù(&R)
-menutrans &Version		°æ±¾(&V)
-menutrans &About		¹ØÓÚ(&A)
+menutrans &Help		°ïÖú(&H)
+" Help menuitems and dialog {{{1
+menutrans &Overview<Tab><F1>	¸ÅÊö(&O)<Tab><F1>
+menutrans &User\ Manual			Óû§ÊÖ²á(&U)
+menutrans &How-to\ Links		ÈçºÎʹÓÃ(&H)
+menutrans &Find\.\.\.			²éÕÒ(&F)\.\.\.
+menutrans &Credits				ÖÂл(&C)
+menutrans Co&pying				°æÈ¨(&P)
+menutrans &Sponsor/Register		ÔÞÖú/×¢²á(&S)
+menutrans O&rphans				Õü¾È¹Â¶ù(&R)
+menutrans &Version				°æ±¾(&V)
+menutrans &About				¹ØÓÚ(&A)
+
+" fun! s:Helpfind()
+if !exists("g:menutrans_help_dialog")
+  let g:menutrans_help_dialog = "ÊäÈëÃüÁî»òµ¥´ÊÒÔ»ñµÃ°ïÖú:\n\nǰ׺ i_ ±íʾÊäÈëģʽϵÄÃüÁî(Èç: i_CTRL-X)\nǰ׺ c_ ±íʾÃüÁîÐÐϵı༭ÃüÁî(Èç: c_<Del>)\nǰ׺ ' ±íʾѡÏîÃû(Èç: 'shiftwidth')"
+endif
+" }}}
 
 " File menu
-menutrans &File				Îļþ(&F)
-menutrans &Open\.\.\.<Tab>:e		´ò¿ª(&O)\.\.\.<Tab>:e
-menutrans Sp&lit-Open\.\.\.<Tab>:sp	·Ö¸î²¢´ò¿ª(&L)\.\.\.<Tab>:sp
-menutrans Open\ Tab\.\.\.<Tab>:tabnew	´ò¿ª±êÇ©\.\.\.<Tab>:tabnew
-menutrans &New<Tab>:enew		н¨(&N)<Tab>:enew
-menutrans &Close<Tab>:close		¹Ø±Õ(&C)<Tab>:close
-menutrans &Save<Tab>:w			±£´æ(&S)<Tab>:w
-menutrans Save\ &As\.\.\.<Tab>:sav	Áí´æÎª(&A)\.\.\.<Tab>:sav
-menutrans Split\ &Diff\ with\.\.\.	·Ö¸î±È½Ï(Diff)(&D)\.\.\.
-menutrans Split\ Patched\ &By\.\.\.	·Ö¸î´ò²¹¶¡(Patch)(&B)\.\.\.
-menutrans &Print			´òÓ¡(&P)
-menutrans Sa&ve-Exit<Tab>:wqa		±£´æ²¢Í˳ö(&V)<Tab>:wqa
-menutrans E&xit<Tab>:qa			Í˳ö(&X)<Tab>:qa
+menutrans &File		Îļþ(&F)
+" File menuitems {{{1
+menutrans &Open\.\.\.<Tab>:e			´ò¿ª(&O)\.\.\.<Tab>:e
+menutrans Sp&lit-Open\.\.\.<Tab>:sp		ÔÚ²ð·Ö´°¿Ú´ò¿ª(&L)\.\.\.<Tab>:sp
+menutrans Open\ Tab\.\.\.<Tab>:tabnew	ÔÚ±êǩҳ´ò¿ª\.\.\.<Tab>:tabnew
+menutrans &New<Tab>:enew				н¨(&N)<Tab>:enew
+menutrans &Close<Tab>:close				¹Ø±Õ(&C)<Tab>:close
+menutrans &Save<Tab>:w					±£´æ(&S)<Tab>:w
+menutrans Save\ &As\.\.\.<Tab>:sav		Áí´æÎª(&A)\.\.\.<Tab>:sav
+menutrans Split\ &Diff\ With\.\.\.		²ð·Ö´°¿ÚÒԶԱȲîÒì(Diff)(&D)\.\.\.
+menutrans Split\ Patched\ &By\.\.\.		²ð·Ö´°¿ÚÒÔ½øÐÐÐÞ²¹(Patch)(&B)\.\.\.
+menutrans &Print						´òÓ¡(&P)
+menutrans Sa&ve-Exit<Tab>:wqa			±£´æ²¢Í˳ö(&V)<Tab>:wqa
+menutrans E&xit<Tab>:qa					Í˳ö(&X)<Tab>:qa
+" }}}
 
 " Edit menu
-menutrans &Edit				±à¼­(&E)
-menutrans &Undo<Tab>u			³·Ïú(&U)<Tab>u
-menutrans &Redo<Tab>^R			ÖØ×ö(&R)<Tab>^R
-menutrans Rep&eat<Tab>\.		ÖØ¸´ÉϴβÙ×÷(&E)<Tab>\.
-menutrans Cu&t<Tab>"+x			¼ôÇÐ(&T)<Tab>"+x
-menutrans &Copy<Tab>"+y			¸´ÖÆ(&C)<Tab>"+y
-menutrans &Paste<Tab>"+gP		Õ³Ìù(&P)<Tab>"+gP
-menutrans Put\ &Before<Tab>[p		Õ³Ìùµ½¹â±êǰ(&B)<Tab>[p
-menutrans Put\ &After<Tab>]p		Õ³Ìùµ½¹â±êºó(&A)<Tab>]p
-menutrans &Delete<Tab>x			ɾ³ý(&D)<Tab>x
-menutrans &Select\ All<Tab>ggVG		ȫѡ(&S)<Tab>ggVG
-menutrans &Find\.\.\.			²éÕÒ(&F)\.\.\.
-menutrans Find\ and\ Rep&lace\.\.\.	²éÕÒºÍÌæ»»(&L)\.\.\.
-menutrans &Find<Tab>/			²éÕÒ(&F)<Tab>/
-menutrans Find\ and\ Rep&lace<Tab>:%s	²éÕÒºÍÌæ»»(&L)<Tab>:%s
-menutrans Settings\ &Window		É趨´°¿Ú(&W)
-menutrans Startup\ &Settings		Æô¶¯É趨(&S)
-menutrans &Global\ Settings		È«¾ÖÉ趨(&G)
+menutrans &Edit		±à¼­(&E)
+" Edit menuitems {{{1
+menutrans &Undo<Tab>u						³·Ïú(&U)<Tab>u
+menutrans &Redo<Tab>^R						»Ö¸´(&R)<Tab>^R
+menutrans Rep&eat<Tab>\.					ÖØ¸´(&E)<Tab>\.
+menutrans Cu&t<Tab>"+x						¼ôÇÐ(&T)<Tab>"+x
+menutrans &Copy<Tab>"+y						¸´ÖÆ(&C)<Tab>"+y
+menutrans &Paste<Tab>"+gP					Õ³Ìù(&P)<Tab>"+gP
+menutrans Put\ &Before<Tab>[p				Õ³Ìùµ½¹â±êǰ(&B)<Tab>[p
+menutrans Put\ &After<Tab>]p				Õ³Ìùµ½¹â±êºó(&A)<Tab>]p
+menutrans &Delete<Tab>x						ɾ³ý(&D)<Tab>x
+menutrans &Select\ All<Tab>ggVG				ȫѡ(&S)<Tab>ggVG
+menutrans &Find\.\.\.						²éÕÒ(&F)\.\.\.
+menutrans Find\ and\ Rep&lace\.\.\.			²éÕÒºÍÌæ»»(&L)\.\.\.
+menutrans &Find<Tab>/						²éÕÒ(&F)<Tab>/
+menutrans Find\ and\ Rep&lace<Tab>:%s		²éÕÒºÍÌæ»»(&L)<Tab>:%s
+menutrans Settings\ &Window					ÉèÖô°¿Ú(&W)
+menutrans Startup\ &Settings				Æô¶¯ÉèÖÃ(&S)
 
 " Edit/Global Settings
-menutrans Toggle\ Pattern\ &Highlight<Tab>:set\ hls!	¿ª/¹ØÄ£Ê½¸ßÁÁ(&H)<Tab>:set\ hls!
-menutrans Toggle\ &Ignore-case<Tab>:set\ ic!		¿ª/¹ØºöÂÔ´óСд(&I)<Tab>:set\ ic!
-menutrans Toggle\ &Showmatch<Tab>:set\ sm!		¿ª/¹ØÏÔʾÅä¶Ô(&S)<Tab>:set\ sm!
-menutrans &Context\ lines			ÉÏÏÂÎÄÐÐÊý(&C)
-
-menutrans &Virtual\ Edit			ÐéÄâ±à¼­(&V)
+menutrans &Global\ Settings					È«¾ÖÉèÖÃ(&G)
+" Edit.Global Settings menuitems and dialogs {{{2
+menutrans Toggle\ Pattern\ &Highlight<Tab>:set\ hls!		¿ª/¹Ø¸ßÁÁ²éÕÒÄÚÈÝ(&H)<Tab>:set\ hls!
+menutrans Toggle\ &Ignoring\ Case<Tab>:set\ ic!				¿ª/¹ØºöÂÔ´óСд(&I)<Tab>:set\ ic!
+menutrans Toggle\ &Showing\ Matched\ Pairs<Tab>:set\ sm!	¿ª/¹ØÏÔʾÀ¨ºÅÆ¥Åä(&S)<Tab>:set\ sm!
+menutrans &Context\ Lines									ÉÏÏÂÎÄÐÐÊý(&C)
+menutrans &Virtual\ Edit									ÐéÄâ±à¼­(&V)
+" Edit.Global Settings.Virtual Edit menuitems {{{3
 menutrans Never					´Ó²»
-menutrans Block\ Selection			¿éÑ¡Ôñ
-menutrans Insert\ mode				²åÈëģʽ
-menutrans Block\ and\ Insert			¿éÑ¡ÔñºÍ²åÈëģʽ
-menutrans Always				×ÜÊÇ
-
-menutrans Toggle\ Insert\ &Mode<Tab>:set\ im!	¿ª/¹Ø²åÈëģʽ(&M)<Tab>:set\ im!
-menutrans Toggle\ Vi\ C&ompatible<Tab>:set\ cp!	¿ª/¹Ø\ Vi\ ¼æÈÝ<Tab>:set\ cp!
-menutrans Search\ &Path\.\.\.			²éÕÒ·¾¶(&P)\.\.\.
-menutrans Ta&g\ Files\.\.\.			Tag\ Îļþ(&T)\.\.\.
+menutrans Block\ Selection		Ö»ÔÚÑ¡¶¨¾ØÐοéʱ
+menutrans Insert\ Mode			Ö»ÔÚ²åÈëģʽʱ
+menutrans Block\ and\ Insert	ÔÚÑ¡¶¨¾ØÐοéºÍ²åÈëģʽʱ
+menutrans Always				ʼÖÕ
+" }}}
+menutrans Toggle\ Insert\ &Mode<Tab>:set\ im!				¿ª/¹Ø²åÈëģʽ(&M)<Tab>:set\ im!
+menutrans Toggle\ Vi\ C&ompatibility<Tab>:set\ cp!			¿ª/¹Ø\ Vi\ ¼æÈÝÐÔ(&O)<Tab>:set\ cp!
+menutrans Search\ &Path\.\.\.								ËÑË÷·¾¶(&P)\.\.\.
+menutrans Ta&g\ Files\.\.\.									±ê¼ÇÎļþ(Tags)(&G)\.\.\.
 
 " GUI options
-menutrans Toggle\ &Toolbar			¿ª/¹Ø¹¤¾ßÀ¸(&T)
-menutrans Toggle\ &Bottom\ Scrollbar		¿ª/¹Øµ×²¿¹ö¶¯Ìõ(&B)
-menutrans Toggle\ &Left\ Scrollbar		¿ª/¹Ø×ó¶Ë¹ö¶¯Ìõ(&L)
-menutrans Toggle\ &Right\ Scrollbar		¿ª/¹ØÓҶ˹ö¶¯Ìõ(&R)
+menutrans Toggle\ &Toolbar									¿ª/¹Ø¹¤¾ßÀ¸(&T)
+menutrans Toggle\ &Bottom\ Scrollbar						¿ª/¹Øµ×²¿¹ö¶¯Ìõ(&B)
+menutrans Toggle\ &Left\ Scrollbar							¿ª/¹Ø×ó²à¹ö¶¯Ìõ(&L)
+menutrans Toggle\ &Right\ Scrollbar							¿ª/¹ØÓÒ²à¹ö¶¯Ìõ(&R)
+
+" fun! s:SearchP()
+if !exists("g:menutrans_path_dialog")
+  let g:menutrans_path_dialog = "ÊäÈëËÑË÷·¾¶¡£\nÓöººÅ·Ö¸ôĿ¼Ãû¡£"
+endif
+
+" fun! s:TagFiles()
+if !exists("g:menutrans_tags_dialog")
+  let g:menutrans_tags_dialog = "ÊäÈë±ê¼ÇÎļþ(Tags)Ãû³Æ¡£\nÓöººÅ·Ö¸ôÎļþÃû¡£"
+endif
+" }}}
 
 " Edit/File Settings
-menutrans F&ile\ Settings			ÎļþÉ趨(&I)
-
+menutrans F&ile\ Settings					ÎļþÉèÖÃ(&I)
+" Edit.File Settings menuitems and dialogs {{{2
 " Boolean options
-menutrans Toggle\ Line\ &Numbering<Tab>:set\ nu!		¿ª/¹ØÏÔʾÐкÅ(&N)<Tab>:set\ nu!
-menutrans Toggle\ relati&ve\ Line\ Numbering<Tab>:set\ rnu!	¿ª/¹ØÏà¶ÔÐкÅ(&V)<Tab>:set\ rnu!
-menutrans Toggle\ &List\ Mode<Tab>:set\ list!			¿ª/¹Ø\ list\ ģʽ(&L)<Tab>:set\ list!
-menutrans Toggle\ Line\ &Wrap<Tab>:set\ wrap!			¿ª/¹ØÕÛÐÐ(&W)<Tab>:set\ wrap!
-menutrans Toggle\ W&rap\ at\ word<Tab>:set\ lbr!		¿ª/¹ØÕû´ÊÕÛÐÐ(&R)<Tab>:set\ lbr!
-menutrans Toggle\ &expand-tab<Tab>:set\ et!			¿ª/¹ØÀ©Õ¹\ tab(&E)<Tab>:set\ et!
-menutrans Toggle\ &auto-indent<Tab>:set\ ai!			¿ª/¹Ø×Ô¶¯Ëõ½ø(&A)<Tab>:set\ ai!
-menutrans Toggle\ &C-indenting<Tab>:set\ cin!			¿ª/¹Ø\ C\ Ëõ½ø(&C)<Tab>:set\ cin!
+menutrans Toggle\ Line\ &Numbering<Tab>:set\ nu!			¿ª/¹ØÐкÅ(&N)<Tab>:set\ nu!
+menutrans Toggle\ Relati&ve\ Line\ Numbering<Tab>:set\ rnu!	¿ª/¹ØÏà¶ÔÐкÅ(&V)<Tab>:set\ rnu!
+menutrans Toggle\ &List\ Mode<Tab>:set\ list!				¿ª/¹ØÁбíģʽ(&L)<Tab>:set\ list!
+menutrans Toggle\ Line\ &Wrapping<Tab>:set\ wrap!			¿ª/¹Ø»»ÐÐ(&W)<Tab>:set\ wrap!
+menutrans Toggle\ W&rapping\ at\ Word<Tab>:set\ lbr!		¿ª/¹Ø´Êβ»»ÐÐ(&R)<Tab>:set\ lbr!
+menutrans Toggle\ Tab\ &Expanding<Tab>:set\ et!				¿ª/¹ØÖƱí·ûÀ©Õ¹(&E)<Tab>:set\ et!
+menutrans Toggle\ &Auto\ Indenting<Tab>:set\ ai!			¿ª/¹Ø×Ô¶¯Ëõ½ø(&A)<Tab>:set\ ai!
+menutrans Toggle\ &C-Style\ Indenting<Tab>:set\ cin!		¿ª/¹Ø\ C\ ÓïÑÔʽËõ½ø(&C)<Tab>:set\ cin!
 
 " other options
-menutrans &Shiftwidth			Ëõ½ø¿í¶È(&S)
-menutrans Soft\ &Tabstop		Soft\ Tab\ ¿í¶È(&T)
-menutrans Te&xt\ Width\.\.\.		Îı¾¿í¶È(&X)\.\.\.
-menutrans &File\ Format\.\.\.		Îļþ¸ñʽ(&F)\.\.\.
-menutrans C&olor\ Scheme		ÅäÉ«·½°¸(&O)
-menutrans Select\ Fo&nt\.\.\.		Ñ¡Ôñ×ÖÌå(&N)\.\.\.
-menutrans &Keymap			¼üÅÌÓ³Éä(&K)
+menutrans &Shiftwidth										Ëõ½ø¿í¶È(&S)
+menutrans Soft\ &Tabstop									ÈíÖÆ±íλ¿í¶È(Soft Tabstop)(&T)
+menutrans Te&xt\ Width\.\.\.								Îı¾¿í¶È(&X)\.\.\.
+menutrans &File\ Format\.\.\.								Îļþ¸ñʽ(&F)\.\.\.
+
+" fun! s:TextWidth()
+if !exists("g:menutrans_textwidth_dialog")
+  let g:menutrans_textwidth_dialog = "ÊäÈëÎı¾¿í¶È(ÿÐÐ×î´ó×Ö·ûÊý£¬0 ±íʾ½ûÓÃ):"
+endif
+
+" fun! s:FileFormat()
+if !exists("g:menutrans_fileformat_dialog")
+  let g:menutrans_fileformat_dialog = "Ñ¡ÔñÎļþµÄ±£´æ¸ñʽ:"
+endif
+if !exists("g:menutrans_fileformat_choices")
+  let g:menutrans_fileformat_choices = "&Unix\n&Dos\n&Mac\nÈ¡Ïû(&C)"
+endif
+" }}}
+menutrans Show\ C&olor\ Schemes\ in\ Menu	Ôڲ˵¥ÖÐÏÔʾÅäÉ«·½°¸(&O)
+menutrans C&olor\ Scheme					ÅäÉ«·½°¸(&O)
+menutrans Show\ &Keymaps\ in\ Menu			Ôڲ˵¥ÖÐÏÔʾ¼üÅÌÓ³Éä(&K)
+menutrans &Keymap							¼üÅÌÓ³Éä(&K)
+menutrans Select\ Fo&nt\.\.\.				Ñ¡Ôñ×ÖÌå(&N)\.\.\.
+" }}}
 
 " Programming menu
-menutrans &Tools			¹¤¾ß(&T)
-menutrans &Jump\ to\ this\ tag<Tab>g^]	Ìø×ªµ½Õâ¸ö\ tag(&J)<Tab>g^]
-menutrans Jump\ &back<Tab>^T		Ìø×ª·µ»Ø(&B)<Tab>^T
-menutrans Build\ &Tags\ File		½¨Á¢\ Tags\ Îļþ(&T)
+menutrans &Tools	¹¤¾ß(&T)
+" Tools menuitems {{{1
+menutrans &Jump\ to\ This\ Tag<Tab>g^]			Ìø×ªµ½Õâ¸ö±ê¼Ç(Tag)(&J)<Tab>g^]
+menutrans Jump\ &Back<Tab>^T					Ìø×ª»Ø(&B)<Tab>^T
+menutrans Build\ &Tags\ File					Éú³É±ê¼ÇÎļþ(Tags)(&T)
 
 " Tools.Spelling Menu
-menutrans &Spelling				ƴд¼ì²é(&S)
-menutrans &Spell\ Check\ On			´ò¿ªÆ´Ð´¼ì²é(&S)
-menutrans Spell\ Check\ &Off			¹Ø±Õƴд¼ì²é(&O)
-menutrans To\ &Next\ error<Tab>]s		ÉÏÒ»¸ö´íÎó(&N)<Tab>]s
-menutrans To\ &Previous\ error<Tab>[s		ÏÂÒ»¸ö´íÎó(&P)<Tab>[s
-menutrans Suggest\ &Corrections<Tab>z=		ÐÞÕý½¨Òé(&C)<Tab>z=
-menutrans &Repeat\ correction<Tab>:spellrepall	ÖØ¸´ÐÞÕý(&R)<Tab>:spellrepall
-menutrans Set\ language\ to\ "en"		É趨ÓïÑÔΪ\ "en"
-menutrans Set\ language\ to\ "en_au"		É趨ÓïÑÔΪ\ "en_au"
-menutrans Set\ language\ to\ "en_ca"		É趨ÓïÑÔΪ\ "en_ca"
-menutrans Set\ language\ to\ "en_gb"		É趨ÓïÑÔΪ\ "en_gb"
-menutrans Set\ language\ to\ "en_nz"		É趨ÓïÑÔΪ\ "en_nz"
-menutrans Set\ language\ to\ "en_us"		É趨ÓïÑÔΪ\ "en_us"
-menutrans &Find\ More\ Languages		²éÕÒ¸ü¶àÓïÑÔ(&F)
+menutrans &Spelling								ƴд¼ì²é(&S)
+" Tools.Spelling menuitems and dialog {{{2
+menutrans &Spell\ Check\ On						´ò¿ªÆ´Ð´¼ì²é(&S)
+menutrans Spell\ Check\ &Off					¹Ø±Õƴд¼ì²é(&O)
+menutrans To\ &Next\ Error<Tab>]s				ÉÏÒ»¸ö´íÎó(&N)<Tab>]s
+menutrans To\ &Previous\ Error<Tab>[s			ÏÂÒ»¸ö´íÎó(&P)<Tab>[s
+menutrans Suggest\ &Corrections<Tab>z=			¸üÕý½¨Òé(&C)<Tab>z=
+menutrans &Repeat\ Correction<Tab>:spellrepall	¸üÕýÈ«²¿Í¬Àà´íÎó(&R)<Tab>:spellrepall
+menutrans Set\ Language\ to\ "en"				ÉèÖÃÓïÑÔΪ\ "en"
+menutrans Set\ Language\ to\ "en_au"			ÉèÖÃÓïÑÔΪ\ "en_au"
+menutrans Set\ Language\ to\ "en_ca"			ÉèÖÃÓïÑÔΪ\ "en_ca"
+menutrans Set\ Language\ to\ "en_gb"			ÉèÖÃÓïÑÔΪ\ "en_gb"
+menutrans Set\ Language\ to\ "en_nz"			ÉèÖÃÓïÑÔΪ\ "en_nz"
+menutrans Set\ Language\ to\ "en_us"			ÉèÖÃÓïÑÔΪ\ "en_us"
+menutrans &Find\ More\ Languages				²éÕÒ¸ü¶àÓïÑÔ(&F)
+
+" func! s:SpellLang()
+if !exists("g:menutrans_set_lang_to")
+  let g:menutrans_set_lang_to = "ÉèÖÃÓïÑÔΪ"
+endif
+" }}}
 
 " Tools.Fold Menu
+menutrans &Folding								ÕÛµþ(&F)
+" Tools.Fold menuitems {{{2
 " open close folds
-menutrans &Folding				ÕÛµþ(&F)
-menutrans &Enable/Disable\ folds<Tab>zi		ÆôÓÃ/½ûÓÃÕÛµþ(&E)<Tab>zi
-menutrans &View\ Cursor\ Line<Tab>zv		²é¿´´ËÐÐ(&V)<Tab>zv
-menutrans Vie&w\ Cursor\ Line\ only<Tab>zMzx	½ö²é¿´´ËÐÐ(&W)<Tab>zMzx
-menutrans C&lose\ more\ folds<Tab>zm		¹Ø±Õ¸ü¶àÕÛµþ(&L)<Tab>zm
-menutrans &Close\ all\ folds<Tab>zM		¹Ø±ÕËùÓÐÕÛµþ(&C)<Tab>zM
-menutrans O&pen\ more\ folds<Tab>zr		´ò¿ª¸ü¶àÕÛµþ(&P)<Tab>zr
-menutrans &Open\ all\ folds<Tab>zR		´ò¿ªËùÓÐÕÛµþ(&O)<Tab>zR
+menutrans &Enable/Disable\ Folds<Tab>zi			ÆôÓÃ/½ûÓÃÕÛµþ(&E)<Tab>zi
+menutrans &View\ Cursor\ Line<Tab>zv			Õ¹¿ª¹â±êËùÔÚÐÐ(&V)<Tab>zv
+menutrans Vie&w\ Cursor\ Line\ Only<Tab>zMzx	Ö»Õ¹¿ª¹â±êËùÔÚÐÐ(&W)<Tab>zMzx
+menutrans C&lose\ More\ Folds<Tab>zm			ÕÛµþÒ»¼¶(&L)<Tab>zm
+menutrans &Close\ All\ Folds<Tab>zM				ÕÛµþÈ«²¿(&C)<Tab>zM
+menutrans O&pen\ More\ Folds<Tab>zr				Õ¹¿ªÒ»¼¶(&P)<Tab>zr
+menutrans &Open\ All\ Folds<Tab>zR				Õ¹¿ªÈ«²¿(&O)<Tab>zR
 " fold method
-menutrans Fold\ Met&hod			ÕÛµþ·½·¨(&H)
-menutrans M&anual			ÊÖ¹¤(&A)
-menutrans I&ndent			Ëõ½ø(&N)
-menutrans E&xpression			±í´ïʽ(&X)
-menutrans S&yntax			Óï·¨(&Y)
-menutrans &Diff				±È½Ï(Diff)(&D)
-menutrans Ma&rker			񈬀(&R)
+menutrans Fold\ Met&hod							ÕÛµþ·½Ê½(&H)
+" Tools.Fold.Fold Method menuitems {{{3
+menutrans M&anual		ÊÖ¶¯(&A)
+menutrans I&ndent		Ëõ½ø(&N)
+menutrans E&xpression	±í´ïʽ(&X)
+menutrans S&yntax		Óï·¨(&Y)
+menutrans &Diff			²îÒì(Diff)(&D)
+menutrans Ma&rker		¼ÇºÅ(Marker)(&R)
+" }}}
 " create and delete folds
-menutrans Create\ &Fold<Tab>zf		´´½¨ÕÛµþ(&F)<Tab>zf
-menutrans &Delete\ Fold<Tab>zd		ɾ³ýÕÛµþ(&D)<Tab>zd
-menutrans Delete\ &All\ Folds<Tab>zD	ɾ³ýËùÓÐÕÛµþ(&A)<Tab>zD
+menutrans Create\ &Fold<Tab>zf					´´½¨ÕÛµþ(&F)<Tab>zf
+menutrans &Delete\ Fold<Tab>zd					ɾ³ýÕÛµþ(&D)<Tab>zd
+menutrans Delete\ &All\ Folds<Tab>zD			ɾ³ýÈ«²¿ÕÛµþ(&A)<Tab>zD
 " moving around in folds
-menutrans Fold\ column\ &width		ÕÛµþÀ¸¿í¶È(&W)
+menutrans Fold\ Col&umn\ Width					ÕÛµþ²Ù×÷À¸¿í¶È(&W)
+" }}}
 
 " Tools.Diff Menu
-menutrans &Diff				±È½Ï(Diff)(&D)
-menutrans &Update			¸üÐÂ(&U)
-menutrans &Get\ Block			µÃµ½¿é(&G)
-menutrans &Put\ Block			·ÅÖÿé(&P)
+menutrans &Diff									²îÒì(Diff)(&D)
+" Tools.Diff menuitems {{{2
+menutrans &Update		Ë¢ÐÂ(&U)
+menutrans &Get\ Block	²ÉÓöԲàÎı¾¿é(&G)
+menutrans &Put\ Block	²ÉÓñ¾²àÎı¾¿é(&P)
+" }}}
 
-menutrans &Make<Tab>:make		Make(&M)<Tab>:make
-menutrans &List\ Errors<Tab>:cl		Áгö´íÎó(&L)<Tab>:cl
-menutrans L&ist\ Messages<Tab>:cl!	ÁгöÏûÏ¢(&I)<Tab>:cl!
-menutrans &Next\ Error<Tab>:cn		ÏÂÒ»¸ö´íÎó(&N)<Tab>:cn
-menutrans &Previous\ Error<Tab>:cp	ÉÏÒ»¸ö´íÎó(&P)<Tab>:cp
-menutrans &Older\ List<Tab>:cold	¸ü¾ÉµÄ´íÎóÁбí(&O)<Tab>:cold
-menutrans N&ewer\ List<Tab>:cnew	¸üеĴíÎóÁбí(&E)<Tab>:cnew
-menutrans Error\ &Window		´íÎó´°¿Ú(&W)
-menutrans &Update<Tab>:cwin		¸üÐÂ(&U)<Tab>:cwin
+menutrans &Make<Tab>:make						Éú³É(Make)(&M)<Tab>:make
+menutrans &List\ Errors<Tab>:cl					Áгö´íÎó(&L)<Tab>:cl
+menutrans L&ist\ Messages<Tab>:cl!				ÁгöÏûÏ¢(&I)<Tab>:cl!
+menutrans &Next\ Error<Tab>:cn					ÏÂÒ»¸ö´íÎó(&N)<Tab>:cn
+menutrans &Previous\ Error<Tab>:cp				ÉÏÒ»¸ö´íÎó(&P)<Tab>:cp
+menutrans &Older\ List<Tab>:cold				½Ï¾ÉµÄ´íÎóÁбí(&O)<Tab>:cold
+menutrans N&ewer\ List<Tab>:cnew				½ÏеĴíÎóÁбí(&E)<Tab>:cnew
+menutrans Error\ &Window						´íÎó´°¿Ú(&W)
+" Tools.Error Window menuitems {{{2
+menutrans &Update<Tab>:cwin		Ë¢ÐÂ(&U)<Tab>:cwin
 menutrans &Open<Tab>:copen		´ò¿ª(&O)<Tab>:copen
-menutrans &Close<Tab>:cclose		¹Ø±Õ(&C)<Tab>:cclose
-menutrans &Convert\ to\ HEX<Tab>:%!xxd	ת»»³ÉÊ®Áù½øÖÆ<Tab>:%!xxd
-menutrans Conve&rt\ back<Tab>:%!xxd\ -r	ת»»·µ»Ø<Tab>:%!xxd\ -r
-menutrans Se&T\ Compiler		É趨±àÒëÆ÷(&T)
+menutrans &Close<Tab>:cclose	¹Ø±Õ(&C)<Tab>:cclose
+" }}}
+menutrans Show\ Compiler\ Se&ttings\ in\ Menu	Ôڲ˵¥ÖÐÏÔʾ±àÒëÆ÷ÉèÖÃ(&T)
+menutrans Se&t\ Compiler						ÉèÖñàÒëÆ÷(&T)
+menutrans &Convert\ to\ HEX<Tab>:%!xxd			ת»»³ÉÊ®Áù½øÖÆ(&C)<Tab>:%!xxd
+menutrans Conve&rt\ Back<Tab>:%!xxd\ -r			ת»»»Ø(&R)<Tab>:%!xxd\ -r
+" }}}
 
-" Names for buffer menu.
-menutrans &Buffers		»º³åÇø(&B)
-menutrans &Refresh\ menu	¸üв˵¥(&R)
-menutrans &Delete		ɾ³ý(&D)
-menutrans &Alternate		½»Ìæ(&A)
-menutrans &Next			ÏÂÒ»¸ö(&N)
-menutrans &Previous		ÉÏÒ»¸ö(&P)
+" Buffer menu
+menutrans &Buffers	»º³åÇø(&B)
+" Buffer menuitems and dialog {{{1
+menutrans &Refresh\ Menu	ˢб¾²Ëµ¥(&R)
+menutrans &Delete			ɾ³ý(&D)
+menutrans &Alternate		Çл»(&A)
+menutrans &Next				ÏÂÒ»¸ö(&N)
+menutrans &Previous			ÉÏÒ»¸ö(&P)
+
+" func! s:BMMunge(fname, bnum) 
+if !exists("g:menutrans_no_file")
+  let g:menutrans_no_file = "[ÎÞÎļþ]"
+endif
+" }}}
 
 " Window menu
-menutrans &Window			´°¿Ú(&W)
-menutrans &New<Tab>^Wn			н¨(&N)<Tab>^Wn
-menutrans S&plit<Tab>^Ws		·Ö¸î(&P)<Tab>^Ws
-menutrans Sp&lit\ To\ #<Tab>^W^^	·Ö¸îµ½\ #(&L)<Tab>^W^^
-menutrans Split\ &Vertically<Tab>^Wv	´¹Ö±·Ö¸î(&V)<Tab>^Wv
-menutrans Split\ File\ E&xplorer	·Ö¸îÎļþä¯ÀÀÆ÷(&X)
-menutrans &Close<Tab>^Wc		¹Ø±Õ(&C)<Tab>^Wc
-menutrans Close\ &Other(s)<Tab>^Wo	¹Ø±ÕÆäËü´°¿Ú(&O)<Tab>^Wo
-menutrans Move\ &To			ÒÆ¶¯µ½(&T)
-menutrans &Top<Tab>^WK			¶¥¶Ë(&T)<Tab>^WK
-menutrans &Bottom<Tab>^WJ		µ×¶Ë(&B)<Tab>^WJ
-menutrans &Left\ side<Tab>^WH		×ó±ß(&L)<Tab>^WH
-menutrans &Right\ side<Tab>^WL		ÓÒ±ß(&R)<Tab>^WL
-" menutrans Ne&xt<Tab>^Ww		ÏÂÒ»¸ö(&X)<Tab>^Ww
-" menutrans P&revious<Tab>^WW		ÉÏÒ»¸ö(&R)<Tab>^WW
-menutrans Rotate\ &Up<Tab>^WR		ÏòÉÏÂÖ»»(&U)<Tab>^WR
-menutrans Rotate\ &Down<Tab>^Wr		ÏòÏÂÂÖ»»(&D)<Tab>^Wr
-menutrans &Equal\ Size<Tab>^W=		µÈ´ó(&E)<Tab>^W=
-menutrans &Max\ Height<Tab>^W_		×î´ó¸ß¶È(&M)<Tab>^W
-menutrans M&in\ Height<Tab>^W1_		×îС¸ß¶È(&I)<Tab>^W1_
-menutrans Max\ &Width<Tab>^W\|		×î´ó¿í¶È(&W)<Tab>^W\|
-menutrans Min\ Widt&h<Tab>^W1\|		×îС¿í¶È(&H)<Tab>^W1\|
-"
-" The popup menu
-menutrans &Undo			³·Ïú(&U)
-menutrans Cu&t			¼ôÇÐ(&T)
-menutrans &Copy			¸´ÖÆ(&C)
-menutrans &Paste		Õ³Ìù(&P)
-menutrans &Delete		ɾ³ý(&D)
-menutrans Select\ Blockwise	Ñ¡Ôñ¿é
-menutrans Select\ &Word		Ñ¡Ôñµ¥´Ê(&W)
-menutrans Select\ &Sentence	Ñ¡Ôñ¾ä×Ó(&S)
-menutrans Select\ Pa&ragraph	Ñ¡Ôñ¶ÎÂä(&R)
-menutrans Select\ &Line		Ñ¡ÔñÐÐ(&L)
-menutrans Select\ &Block	Ñ¡Ôñ¿é(&B)
-menutrans Select\ &All		ȫѡ(&A)
-"
-" The GUI toolbar
+menutrans &Window	´°¿Ú(&W)
+" Window menuitems {{{1
+menutrans &New<Tab>^Wn					н¨(&N)<Tab>^Wn
+menutrans S&plit<Tab>^Ws				²ð·Ö(&P)<Tab>^Ws
+menutrans Sp&lit\ To\ #<Tab>^W^^		²ð·Ö²¢ÏÔʾ»º³åÇø\ #(&L)<Tab>^W^^
+menutrans Split\ &Vertically<Tab>^Wv	´¹Ö±²ð·Ö(&V)<Tab>^Wv
+menutrans Split\ File\ E&xplorer		²ð·Ö²¢´ò¿ªÎļþä¯ÀÀÆ÷(&X)
+menutrans &Close<Tab>^Wc				¹Ø±Õ(&C)<Tab>^Wc
+menutrans Close\ &Other(s)<Tab>^Wo		³ý´ËÖ®ÍâÈ«²¿¹Ø±Õ(&O)<Tab>^Wo
+menutrans Move\ &To						ÒÆ¶¯µ½(&T)
+menutrans &Top<Tab>^WK					¶¥¶Ë(&T)<Tab>^WK
+menutrans &Bottom<Tab>^WJ				µ×¶Ë(&B)<Tab>^WJ
+menutrans &Left\ Side<Tab>^WH			×ó±ß(&L)<Tab>^WH
+menutrans &Right\ Side<Tab>^WL			ÓÒ±ß(&R)<Tab>^WL
+menutrans Rotate\ &Up<Tab>^WR			ÏòÉÏÂÖ»»(&U)<Tab>^WR
+menutrans Rotate\ &Down<Tab>^Wr			ÏòÏÂÂÖ»»(&D)<Tab>^Wr
+menutrans &Equal\ Size<Tab>^W=			ƽ¾ù·Ö²¼(&E)<Tab>^W=
+menutrans &Max\ Height<Tab>^W_			×î´ó¸ß¶È(&M)<Tab>^W
+menutrans M&in\ Height<Tab>^W1_			×îС¸ß¶È(&I)<Tab>^W1_
+menutrans Max\ &Width<Tab>^W\|			×î´ó¿í¶È(&W)<Tab>^W\|
+menutrans Min\ Widt&h<Tab>^W1\|			×îС¿í¶È(&H)<Tab>^W1\|
+" }}}
+
+" The popup menu {{{1
+menutrans &Undo					³·Ïú(&U)
+menutrans Cu&t					¼ôÇÐ(&T)
+menutrans &Copy					¸´ÖÆ(&C)
+menutrans &Paste				Õ³Ìù(&P)
+menutrans &Delete				ɾ³ý(&D)
+menutrans Select\ Blockwise		¸ÄΪѡ¶¨¾ØÐοé
+menutrans Select\ &Word			Ñ¡¶¨µ¥´Ê(&W)
+menutrans Select\ &Sentence		Ñ¡¶¨¾ä(&S)
+menutrans Select\ Pa&ragraph	Ñ¡¶¨¶ÎÂä(&R)
+menutrans Select\ &Line			Ñ¡¶¨ÐÐ(&L)
+menutrans Select\ &Block		Ñ¡¶¨¾ØÐοé(&B)
+menutrans Select\ &All			ȫѡ(&A)
+
+" func! <SID>SpellPopup()
+if !exists("g:menutrans_spell_change_ARG_to")
+  let g:menutrans_spell_change_ARG_to = '½«\ "%s"\ ¸ü¸ÄΪ'
+endif
+if !exists("g:menutrans_spell_add_ARG_to_word_list")
+  let g:menutrans_spell_add_ARG_to_word_list = '½«\ "%s"\ Ìí¼Óµ½´Êµä'
+endif
+if !exists("g:menutrans_spell_ignore_ARG")
+  let g:menutrans_spell_ignore_ARG = 'ºöÂÔ\ "%s"'
+endif
+" }}}
+
+" The GUI toolbar {{{1
 if has("toolbar")
   if exists("*Do_toolbar_tmenu")
     delfun Do_toolbar_tmenu
   endif
   fun Do_toolbar_tmenu()
-    tmenu ToolBar.Open		´ò¿ªÎļþ
-    tmenu ToolBar.Save		±£´æµ±Ç°Îļþ
-    tmenu ToolBar.SaveAll	±£´æÈ«²¿Îļþ
-    tmenu ToolBar.Print		´òÓ¡
-    tmenu ToolBar.Undo		³·Ïú
-    tmenu ToolBar.Redo		ÖØ×ö
-    tmenu ToolBar.Cut		¼ôÇе½¼ôÌù°å
-    tmenu ToolBar.Copy		¸´ÖƵ½¼ôÌù°å
-    tmenu ToolBar.Paste		´Ó¼ôÌù°åÕ³Ìù
-    tmenu ToolBar.Find		²éÕÒ...
-    tmenu ToolBar.FindNext	²éÕÒÏÂÒ»¸ö
-    tmenu ToolBar.FindPrev	²éÕÒÉÏÒ»¸ö
-    tmenu ToolBar.Replace	²éÕÒºÍÌæ»»...
-    tmenu ToolBar.LoadSesn	¼ÓÔØ»á»°
-    tmenu ToolBar.SaveSesn	±£´æµ±Ç°»á»°
-    tmenu ToolBar.RunScript	ÔËÐÐ Vim ½Å±¾
-    tmenu ToolBar.Make		Ö´ÐÐ Make (:make)
-    tmenu ToolBar.RunCtags	ÔÚµ±Ç°Ä¿Â¼½¨Á¢ tags (!ctags -R .)
-    tmenu ToolBar.TagJump	Ìø×ªµ½¹â±êλÖÃµÄ tag
-    tmenu ToolBar.Help		Vim °ïÖú
-    tmenu ToolBar.FindHelp	²éÕÒ Vim °ïÖú
+    let did_toolbar_tmenu = 1
+    tmenu ToolBar.Open			´ò¿ªÎļþ
+    tmenu ToolBar.Save			±£´æµ±Ç°Îļþ
+    tmenu ToolBar.SaveAll		È«²¿±£´æ
+    tmenu ToolBar.Print			´òÓ¡
+    tmenu ToolBar.Undo			³·Ïú
+    tmenu ToolBar.Redo			»Ö¸´
+    tmenu ToolBar.Cut			¼ôÇе½¼ôÌù°å
+    tmenu ToolBar.Copy			¸´ÖƵ½¼ôÌù°å
+    tmenu ToolBar.Paste			´Ó¼ôÌù°åÕ³Ìù
+    if !has("gui_athena")
+      tmenu ToolBar.Replace		²éÕÒºÍÌæ»»...
+      tmenu ToolBar.FindNext	²éÕÒÏÂÒ»¸ö
+      tmenu ToolBar.FindPrev	²éÕÒÉÏÒ»¸ö
+    endif
+    tmenu ToolBar.LoadSesn		¼ÓÔØ»á»°
+    tmenu ToolBar.SaveSesn		±£´æµ±Ç°»á»°
+    tmenu ToolBar.RunScript		ÔËÐÐ Vim ½Å±¾
+    tmenu ToolBar.Make			Éú³Éµ±Ç°ÏîÄ¿ (:make)
+    tmenu ToolBar.RunCtags		ÔÚµ±Ç°Ä¿Â¼Éú³É±ê¼Ç(Tags) (!ctags -R .)
+    tmenu ToolBar.TagJump		Ìø×ªµ½¹â±êËùÔÚ±ê¼Ç(Tag)
+    tmenu ToolBar.Help			Vim °ïÖú
+    tmenu ToolBar.FindHelp		ÔÚ Vim °ïÖúÖвéÕÒ
   endfun
 endif
+" }}}
 
 " Syntax menu
-menutrans &Syntax			Óï·¨(&S)
-menutrans &Show\ filetypes\ in\ menu	Ôڲ˵¥ÖÐÏÔʾÎļþÀàÐÍ(&S)
-menutrans &Off				¹Ø±Õ(&O)
-menutrans &Manual			ÊÖ¹¤(&M)
-menutrans A&utomatic			×Ô¶¯(&U)
-menutrans on/off\ for\ &This\ file	½ö¶ÔÕâ¸öÎļþ¿ª/¹Ø(&T)
-menutrans Co&lor\ test			É«²Ê²âÊÔ(&L)
-menutrans &Highlight\ test		¸ßÁÁ²âÊÔ(&H)
-menutrans &Convert\ to\ HTML		ת»»³É\ HTML(&C)
-menutrans Set\ '&syntax'\ only		½öÉ趨\ 'syntax'(&S)
-menutrans Set\ '&filetype'\ too		Ò²É趨\ 'filetype'(&F)
+menutrans &Syntax	Óï·¨(&S)
+" Syntax menuitems {{{1
+menutrans &Show\ File\ Types\ in\ Menu	Ôڲ˵¥ÖÐÏÔʾÎļþÀàÐÍ(&S)
+menutrans &Off							¹Ø±Õ(&O)
+menutrans &Manual						ÊÖ¶¯(&M)
+menutrans A&utomatic					×Ô¶¯(&U)
+menutrans On/Off\ for\ &This\ File		Ö»¶ÔÕâ¸öÎļþ¿ª/¹Ø(&T)
+menutrans Co&lor\ Test					É«²Ê²âÊÔ(&L)
+menutrans &Highlight\ Test				¸ßÁÁ²âÊÔ(&H)
+menutrans &Convert\ to\ HTML			ת»»³É\ HTML(&C)
+" From synmenu.vim
+menutrans Set\ '&syntax'\ Only			Ö»ÉèÖÃ\ 'syntax'(&S)
+menutrans Set\ '&filetype'\ Too			Ò²ÉèÖÃ\ 'filetype'(&F)
+" }}}
+
+" Netrw menu {{{1
+" Plugin loading may be after menu translation
+" So giveup testing if Netrw Plugin is loaded
+" if exists("g:loaded_netrwPlugin")
+  menutrans Help<tab><F1>					°ïÖú<tab><F1>
+  menutrans Bookmarks						ÊéÇ©
+  menutrans History							ÀúÊ·¼Ç¼
+  menutrans Go\ Up\ Directory<tab>-			ÏòÉÏÒ»¼¶<tab>-
+  menutrans Apply\ Special\ Viewer<tab>x	ÓÃĬÈϳÌÐò´ò¿ª<tab>x
+  menutrans Bookmarks\ and\ History			ÊéÇ©ºÍÀúÊ·¼Ç¼
+  " Netrw.Bookmarks and History menuitems {{{2
+  menutrans Bookmark\ Current\ Directory<tab>mb		Ìí¼ÓÊéÇ©<tab>mb
+  menutrans Bookmark\ Delete						ÒÆ³ýÊéÇ©
+  menutrans Goto\ Prev\ Dir\ (History)<tab>u		ºóÍË(ÀúÊ·¼Ç¼)<tab>u
+  menutrans Goto\ Next\ Dir\ (History)<tab>U		ǰ½ø(ÀúÊ·¼Ç¼)<tab>U
+  menutrans List<tab>qb								ÍêÕûÁбí<tab>qb
+  " }}}
+  menutrans Browsing\ Control				¿ØÖÆ
+  " Netrw.Browsing Control menuitems {{{2
+  menutrans Horizontal\ Split<tab>o					ÔÚ²ð·Ö´°¿Ú´ò¿ª<tab>o
+  menutrans Vertical\ Split<tab>v					ÔÚ´¹Ö±²ð·Ö´°¿Ú´ò¿ª<tab>v
+  menutrans New\ Tab<tab>t							ÔÚ±êǩҳ´ò¿ª<tab>t	
+  menutrans Preview<tab>p							Ô¤ÀÀ<tab>p
+  menutrans Edit\ File\ Hiding\ List<tab><ctrl-h>	±à¼­Òþ²ØÌõ¼þ(Hiding\ List)<tab><ctrl-h>
+  menutrans Edit\ Sorting\ Sequence<tab>S			±à¼­ÅÅÐòÌõ¼þ(Sorting\ Sequence)<tab>S
+  menutrans Quick\ Hide/Unhide\ Dot\ Files<tab>gh	¿ìËÙÒþ²Ø/ÏÔʾÒÔ\.¿ªÍ·µÄÎļþ<tab>gh
+  menutrans Refresh\ Listing<tab><ctrl-l>			Ë¢ÐÂ<tab><ctrl-l>
+  menutrans Settings/Options<tab>:NetrwSettings		ÉèÖÃ/Ñ¡Ïî<tab>:NetrwSettings
+  " }}}
+  menutrans Delete\ File/Directory<tab>D	ɾ³ýÎļþ/Ŀ¼<tab>D
+  menutrans Edit\ File/Dir					±à¼­Îļþ/Ŀ¼
+  " Netrw.Edit File menuitems {{{2
+  menutrans Create\ New\ File<tab>%				н¨Îļþ<tab>%
+  menutrans In\ Current\ Window<tab><cr>		ÔÚµ±Ç°´°¿Ú<tab><cr>
+  menutrans Preview\ File/Directory<tab>p		Ô¤ÀÀÎļþ/Ŀ¼<tab>p
+  menutrans In\ Previous\ Window<tab>P			ÔÚÉÏÒ»¸ö´°¿Ú<tab>P
+  menutrans In\ New\ Window<tab>o				ÔÚд°¿Ú<tab>o
+  menutrans In\ New\ Tab<tab>t					ÔÚбêǩҳ<tab>t
+  menutrans In\ New\ Vertical\ Window<tab>v		ÔÚд¹Ö±´°¿Ú<tab>v
+  " }}}
+  menutrans Explore							ä¯ÀÀ
+  " Netrw.Explore menuitems {{{2
+  menutrans Directory\ Name															Ö¸¶¨Ä¿Â¼Ãû
+  menutrans Filenames\ Matching\ Pattern\ (curdir\ only)<tab>:Explore\ */			Æ¥ÅäÖ¸¶¨ÎļþÃûģʽ(µ±Ç°Ä¿Â¼)<tab>:Explore\ */
+  menutrans Filenames\ Matching\ Pattern\ (+subdirs)<tab>:Explore\ **/				Æ¥ÅäÖ¸¶¨ÎļþÃûģʽ(º¬×ÓĿ¼)<tab>:Explore\ **/
+  menutrans Files\ Containing\ String\ Pattern\ (curdir\ only)<tab>:Explore\ *//	ÄÚÈݰüº¬Ö¸¶¨×Ö·û´®Ä£Ê½(µ±Ç°Ä¿Â¼)<tab>:Explore\ *//
+  menutrans Files\ Containing\ String\ Pattern\ (+subdirs)<tab>:Explore\ **//		ÄÚÈݰüº¬Ö¸¶¨×Ö·û´®Ä£Ê½(º¬×ÓĿ¼)<tab>:Explore\ **//
+  menutrans Next\ Match<tab>:Nexplore												ÏÂÒ»¸öÆ¥ÅäÏî<tab>:Nexplore
+  menutrans Prev\ Match<tab>:Pexplore												ÉÏÒ»¸öÆ¥ÅäÏî<tab>:Pexplore
+  " }}}
+  menutrans Make\ Subdirectory<tab>d		н¨×ÓĿ¼<tab>d
+  menutrans Marked\ Files					Ñ¡¶¨µÄ(Marked)Îļþ
+  " Netrw.Marked Files menuitems {{{2
+  menutrans Mark\ File<tab>mf						Ñ¡¶¨(Mark)/È¡Ïû<tab>mf
+  menutrans Mark\ Files\ by\ Regexp<tab>mr			ÓÃÕýÔò±í´ïʽ(Regexp)Ñ¡¶¨<tab>mr
+  menutrans Hide-Show-List\ Control<tab>a			Òþ²Ø/ÏÔʾ<tab>a
+  menutrans Copy\ To\ Target<tab>mc					¸´ÖƵ½Ä¿±ê<tab>mc
+  menutrans Delete<tab>D							ɾ³ý<tab>D
+  menutrans Diff<tab>md								²îÒì(Diff)<tab>md
+  menutrans Edit<tab>me								±à¼­<tab>me
+  menutrans Exe\ Cmd<tab>mx							×÷Ϊ²ÎÊýÔËÐÐÃüÁî<tab>mx
+  menutrans Move\ To\ Target<tab>mm					ÒÆ¶¯µ½Ä¿±ê<tab>mm
+  menutrans Obtain<tab>O							»ñÈ¡<tab>O
+  menutrans Print<tab>mp							´òÓ¡<tab>mp
+  menutrans Replace<tab>R							Ìæ»»<tab>R
+  menutrans Set\ Target<tab>mt						ÉèÖÃÄ¿±ê<tab>mt
+  menutrans Tag<tab>mT								Éú³É±ê¼ÇÎļþ(Tags)<tab>mT
+  menutrans Zip/Unzip/Compress/Uncompress<tab>mz	ѹËõ/½âѹËõ<tab>mz
+  " }}}
+  menutrans Obtain\ File<tab>O				»ñÈ¡Îļþ<tab>O
+  menutrans Style							ÏÔʾ·ç¸ñ
+  " Netrw.Style menuitems {{{2
+  menutrans Listing							ÁбíÐÎʽ
+  " Netrw.Style.Listing menuitems {{{3
+  menutrans thin<tab>i	½ô´Õ<thin)<tab>i
+  menutrans long<tab>i	Ïêϸ(long)<tab>i
+  menutrans wide<tab>i	¶àÁÐ(wide)<tab>i
+  menutrans tree<tab>i	Ê÷×´(tree)<tab>i
+  " }}}
+  menutrans Normal-Hide-Show				ÏÔʾ/Òþ²Ø
+  " Netrw.Style.Normal-Hide_show menuitems {{{3
+  menutrans Show\ All<tab>a		ÏÔʾȫ²¿
+  menutrans Normal<tab>a		²»ÏÔʾÒþ²ØÎļþ
+  menutrans Hidden\ Only<tab>a	Ö»ÏÔʾÒþ²ØÎļþ
+  " }}}
+  menutrans Reverse\ Sorting\ Order<tab>r	ÉýÐò/½µÐò<tab>r
+  menutrans Sorting\ Method					ÅÅÐò·½Ê½
+  " Netrw.Style.Sorting Method menuitems {{{3
+  menutrans Name<tab>s		ÎļþÃû<tab>s
+  menutrans Time<tab>s  	ÐÞ¸Äʱ¼ä<tab>s
+  menutrans Size<tab>s  	´óС<tab>s
+  menutrans Exten<tab>s		À©Õ¹Ãû<tab>s
+  " }}}
+  " }}}
+  menutrans Rename\ File/Directory<tab>R	ÖØÃüÃûÎļþ/Ŀ¼<tab>R
+  menutrans Set\ Current\ Directory<tab>c	ÉèÖÃ\ Vim\ ¹¤×÷Ŀ¼<tab>c
+  menutrans Targets							Ä¿±ê
+" endif
+" }}}
 
 let &cpo = s:keepcpo
 unlet s:keepcpo
+
+" vim: set nu ts=4 sw=4 noet fdm=marker fdc=4 :
diff --git a/runtime/lang/menu_zh_cn.gb2312.vim b/runtime/lang/menu_zh_cn.gb2312.vim
index 0df5188..f0d7cca 100644
--- a/runtime/lang/menu_zh_cn.gb2312.vim
+++ b/runtime/lang/menu_zh_cn.gb2312.vim
@@ -1,273 +1,13 @@
 " Menu Translations:    Simplified Chinese
 " Maintainer:           Shun Bai <baishunde@gmail.com>
 " Previous Maintainer:  Yuheng Xie <elephant@linux.net.cn>
-" Last Change:          2014 Oct 15
-
-" vim: ts=8 sw=8 noet
-
-" Quit when menu translations have already been done.
-if exists("did_menu_trans")
-  finish
-endif
-let did_menu_trans = 1
-let s:keepcpo= &cpo
-set cpo&vim
+" Last Change:          2019-09-09
 
 " This causes trouble for a broken iconv (symptom: last character is always
 " ??).  Without this it works fine anyway, because gbk/cp936 is a superset of
 " gb2312. (suggested by Edward L. Fox)
 " scriptencoding gb2312
 
-" Help menu
-menutrans &Help			°ïÖú(&H)
-menutrans &Overview<Tab><F1>	×ÝÀÀ(&O)<Tab><F1>
-menutrans &User\ Manual		Óû§ÊÖ²á(&U)
-menutrans &How-to\ links	How-to\ Ö¸Òý(&H)
-menutrans &Find\.\.\.		²éÕÒ(&F)\.\.\.
-menutrans &Credits		ÖÂл(&C)
-menutrans Co&pying		°æÈ¨(&P)
-menutrans &Sponsor/Register	ÔÞÖú/×¢²á(&S)
-menutrans O&rphans		¹Â¶ù(&R)
-menutrans &Version		°æ±¾(&V)
-menutrans &About		¹ØÓÚ(&A)
-
-" File menu
-menutrans &File				Îļþ(&F)
-menutrans &Open\.\.\.<Tab>:e		´ò¿ª(&O)\.\.\.<Tab>:e
-menutrans Sp&lit-Open\.\.\.<Tab>:sp	·Ö¸î²¢´ò¿ª(&L)\.\.\.<Tab>:sp
-menutrans Open\ Tab\.\.\.<Tab>:tabnew	´ò¿ª±êÇ©\.\.\.<Tab>:tabnew
-menutrans &New<Tab>:enew		н¨(&N)<Tab>:enew
-menutrans &Close<Tab>:close		¹Ø±Õ(&C)<Tab>:close
-menutrans &Save<Tab>:w			±£´æ(&S)<Tab>:w
-menutrans Save\ &As\.\.\.<Tab>:sav	Áí´æÎª(&A)\.\.\.<Tab>:sav
-menutrans Split\ &Diff\ with\.\.\.	·Ö¸î±È½Ï(Diff)(&D)\.\.\.
-menutrans Split\ Patched\ &By\.\.\.	·Ö¸î´ò²¹¶¡(Patch)(&B)\.\.\.
-menutrans &Print			´òÓ¡(&P)
-menutrans Sa&ve-Exit<Tab>:wqa		±£´æ²¢Í˳ö(&V)<Tab>:wqa
-menutrans E&xit<Tab>:qa			Í˳ö(&X)<Tab>:qa
-
-" Edit menu
-menutrans &Edit				±à¼­(&E)
-menutrans &Undo<Tab>u			³·Ïú(&U)<Tab>u
-menutrans &Redo<Tab>^R			ÖØ×ö(&R)<Tab>^R
-menutrans Rep&eat<Tab>\.		ÖØ¸´ÉϴβÙ×÷(&E)<Tab>\.
-menutrans Cu&t<Tab>"+x			¼ôÇÐ(&T)<Tab>"+x
-menutrans &Copy<Tab>"+y			¸´ÖÆ(&C)<Tab>"+y
-menutrans &Paste<Tab>"+gP		Õ³Ìù(&P)<Tab>"+gP
-menutrans Put\ &Before<Tab>[p		Õ³Ìùµ½¹â±êǰ(&B)<Tab>[p
-menutrans Put\ &After<Tab>]p		Õ³Ìùµ½¹â±êºó(&A)<Tab>]p
-menutrans &Delete<Tab>x			ɾ³ý(&D)<Tab>x
-menutrans &Select\ All<Tab>ggVG		ȫѡ(&S)<Tab>ggVG
-menutrans &Find\.\.\.			²éÕÒ(&F)\.\.\.
-menutrans Find\ and\ Rep&lace\.\.\.	²éÕÒºÍÌæ»»(&L)\.\.\.
-menutrans &Find<Tab>/			²éÕÒ(&F)<Tab>/
-menutrans Find\ and\ Rep&lace<Tab>:%s	²éÕÒºÍÌæ»»(&L)<Tab>:%s
-menutrans Settings\ &Window		É趨´°¿Ú(&W)
-menutrans Startup\ &Settings		Æô¶¯É趨(&S)
-menutrans &Global\ Settings		È«¾ÖÉ趨(&G)
-
-" Edit/Global Settings
-menutrans Toggle\ Pattern\ &Highlight<Tab>:set\ hls!	¿ª/¹ØÄ£Ê½¸ßÁÁ(&H)<Tab>:set\ hls!
-menutrans Toggle\ &Ignore-case<Tab>:set\ ic!		¿ª/¹ØºöÂÔ´óСд(&I)<Tab>:set\ ic!
-menutrans Toggle\ &Showmatch<Tab>:set\ sm!		¿ª/¹ØÏÔʾÅä¶Ô(&S)<Tab>:set\ sm!
-menutrans &Context\ lines			ÉÏÏÂÎÄÐÐÊý(&C)
-
-menutrans &Virtual\ Edit			ÐéÄâ±à¼­(&V)
-menutrans Never					´Ó²»
-menutrans Block\ Selection			¿éÑ¡Ôñ
-menutrans Insert\ mode				²åÈëģʽ
-menutrans Block\ and\ Insert			¿éÑ¡ÔñºÍ²åÈëģʽ
-menutrans Always				×ÜÊÇ
-
-menutrans Toggle\ Insert\ &Mode<Tab>:set\ im!	¿ª/¹Ø²åÈëģʽ(&M)<Tab>:set\ im!
-menutrans Toggle\ Vi\ C&ompatible<Tab>:set\ cp!	¿ª/¹Ø\ Vi\ ¼æÈÝ<Tab>:set\ cp!
-menutrans Search\ &Path\.\.\.			²éÕÒ·¾¶(&P)\.\.\.
-menutrans Ta&g\ Files\.\.\.			Tag\ Îļþ(&T)\.\.\.
-
-" GUI options
-menutrans Toggle\ &Toolbar			¿ª/¹Ø¹¤¾ßÀ¸(&T)
-menutrans Toggle\ &Bottom\ Scrollbar		¿ª/¹Øµ×²¿¹ö¶¯Ìõ(&B)
-menutrans Toggle\ &Left\ Scrollbar		¿ª/¹Ø×ó¶Ë¹ö¶¯Ìõ(&L)
-menutrans Toggle\ &Right\ Scrollbar		¿ª/¹ØÓҶ˹ö¶¯Ìõ(&R)
-
-" Edit/File Settings
-menutrans F&ile\ Settings			ÎļþÉ趨(&I)
-
-" Boolean options
-menutrans Toggle\ Line\ &Numbering<Tab>:set\ nu!	¿ª/¹ØÏÔʾÐкÅ(&N)<Tab>:set\ nu!
-menutrans Toggle\ relati&ve\ Line\ Numbering<Tab>:set\ rnu! ¿ª/¹ØÏà¶ÔÐкÅ(&V)<Tab>:set\ rnu!
-menutrans Toggle\ &List\ Mode<Tab>:set\ list!		¿ª/¹Ø\ list\ ģʽ(&L)<Tab>:set\ list!
-menutrans Toggle\ Line\ &Wrap<Tab>:set\ wrap!		¿ª/¹ØÕÛÐÐ(&W)<Tab>:set\ wrap!
-menutrans Toggle\ W&rap\ at\ word<Tab>:set\ lbr!	¿ª/¹ØÕû´ÊÕÛÐÐ(&R)<Tab>:set\ lbr!
-menutrans Toggle\ &expand-tab<Tab>:set\ et!		¿ª/¹ØÀ©Õ¹\ tab(&E)<Tab>:set\ et!
-menutrans Toggle\ &auto-indent<Tab>:set\ ai!		¿ª/¹Ø×Ô¶¯Ëõ½ø(&A)<Tab>:set\ ai!
-menutrans Toggle\ &C-indenting<Tab>:set\ cin!		¿ª/¹Ø\ C\ Ëõ½ø(&C)<Tab>:set\ cin!
-
-" other options
-menutrans &Shiftwidth			Ëõ½ø¿í¶È(&S)
-menutrans Soft\ &Tabstop		Soft\ Tab\ ¿í¶È(&T)
-menutrans Te&xt\ Width\.\.\.		Îı¾¿í¶È(&X)\.\.\.
-menutrans &File\ Format\.\.\.		Îļþ¸ñʽ(&F)\.\.\.
-menutrans C&olor\ Scheme		ÅäÉ«·½°¸(&O)
-menutrans Select\ Fo&nt\.\.\.		Ñ¡Ôñ×ÖÌå(&N)\.\.\.
-menutrans &Keymap			¼üÅÌÓ³Éä(&K)
-
-" Programming menu
-menutrans &Tools			¹¤¾ß(&T)
-menutrans &Jump\ to\ this\ tag<Tab>g^]	Ìø×ªµ½Õâ¸ö\ tag(&J)<Tab>g^]
-menutrans Jump\ &back<Tab>^T		Ìø×ª·µ»Ø(&B)<Tab>^T
-menutrans Build\ &Tags\ File		½¨Á¢\ Tags\ Îļþ(&T)
-
-" Tools.Spelling Menu
-menutrans &Spelling				ƴд¼ì²é(&S)
-menutrans &Spell\ Check\ On			´ò¿ªÆ´Ð´¼ì²é(&S)
-menutrans Spell\ Check\ &Off			¹Ø±Õƴд¼ì²é(&O)
-menutrans To\ &Next\ error<Tab>]s		ÉÏÒ»¸ö´íÎó(&N)<Tab>]s
-menutrans To\ &Previous\ error<Tab>[s		ÏÂÒ»¸ö´íÎó(&P)<Tab>[s
-menutrans Suggest\ &Corrections<Tab>z=		ÐÞÕý½¨Òé(&C)<Tab>z=
-menutrans &Repeat\ correction<Tab>:spellrepall	ÖØ¸´ÐÞÕý(&R)<Tab>:spellrepall
-menutrans Set\ language\ to\ "en"		É趨ÓïÑÔΪ\ "en"
-menutrans Set\ language\ to\ "en_au"		É趨ÓïÑÔΪ\ "en_au"
-menutrans Set\ language\ to\ "en_ca"		É趨ÓïÑÔΪ\ "en_ca"
-menutrans Set\ language\ to\ "en_gb"		É趨ÓïÑÔΪ\ "en_gb"
-menutrans Set\ language\ to\ "en_nz"		É趨ÓïÑÔΪ\ "en_nz"
-menutrans Set\ language\ to\ "en_us"		É趨ÓïÑÔΪ\ "en_us"
-menutrans &Find\ More\ Languages		²éÕÒ¸ü¶àÓïÑÔ(&F)
-
-" Tools.Fold Menu
-" open close folds
-menutrans &Folding				ÕÛµþ(&F)
-menutrans &Enable/Disable\ folds<Tab>zi		ÆôÓÃ/½ûÓÃÕÛµþ(&E)<Tab>zi
-menutrans &View\ Cursor\ Line<Tab>zv		²é¿´´ËÐÐ(&V)<Tab>zv
-menutrans Vie&w\ Cursor\ Line\ only<Tab>zMzx	½ö²é¿´´ËÐÐ(&W)<Tab>zMzx
-menutrans C&lose\ more\ folds<Tab>zm		¹Ø±Õ¸ü¶àÕÛµþ(&L)<Tab>zm
-menutrans &Close\ all\ folds<Tab>zM		¹Ø±ÕËùÓÐÕÛµþ(&C)<Tab>zM
-menutrans O&pen\ more\ folds<Tab>zr		´ò¿ª¸ü¶àÕÛµþ(&P)<Tab>zr
-menutrans &Open\ all\ folds<Tab>zR		´ò¿ªËùÓÐÕÛµþ(&O)<Tab>zR
-" fold method
-menutrans Fold\ Met&hod			ÕÛµþ·½·¨(&H)
-menutrans M&anual			ÊÖ¹¤(&A)
-menutrans I&ndent			Ëõ½ø(&N)
-menutrans E&xpression			±í´ïʽ(&X)
-menutrans S&yntax			Óï·¨(&Y)
-menutrans &Diff				±È½Ï(Diff)(&D)
-menutrans Ma&rker			񈬀(&R)
-" create and delete folds
-menutrans Create\ &Fold<Tab>zf		´´½¨ÕÛµþ(&F)<Tab>zf
-menutrans &Delete\ Fold<Tab>zd		ɾ³ýÕÛµþ(&D)<Tab>zd
-menutrans Delete\ &All\ Folds<Tab>zD	ɾ³ýËùÓÐÕÛµþ(&A)<Tab>zD
-" moving around in folds
-menutrans Fold\ column\ &width		ÕÛµþÀ¸¿í¶È(&W)
-
-" Tools.Diff Menu
-menutrans &Diff				±È½Ï(Diff)(&D)
-menutrans &Update			¸üÐÂ(&U)
-menutrans &Get\ Block			µÃµ½¿é(&G)
-menutrans &Put\ Block			·ÅÖÿé(&P)
-
-menutrans &Make<Tab>:make		Make(&M)<Tab>:make
-menutrans &List\ Errors<Tab>:cl		Áгö´íÎó(&L)<Tab>:cl
-menutrans L&ist\ Messages<Tab>:cl!	ÁгöÏûÏ¢(&I)<Tab>:cl!
-menutrans &Next\ Error<Tab>:cn		ÏÂÒ»¸ö´íÎó(&N)<Tab>:cn
-menutrans &Previous\ Error<Tab>:cp	ÉÏÒ»¸ö´íÎó(&P)<Tab>:cp
-menutrans &Older\ List<Tab>:cold	¸ü¾ÉµÄ´íÎóÁбí(&O)<Tab>:cold
-menutrans N&ewer\ List<Tab>:cnew	¸üеĴíÎóÁбí(&E)<Tab>:cnew
-menutrans Error\ &Window		´íÎó´°¿Ú(&W)
-menutrans &Update<Tab>:cwin		¸üÐÂ(&U)<Tab>:cwin
-menutrans &Open<Tab>:copen		´ò¿ª(&O)<Tab>:copen
-menutrans &Close<Tab>:cclose		¹Ø±Õ(&C)<Tab>:cclose
-menutrans &Convert\ to\ HEX<Tab>:%!xxd	ת»»³ÉÊ®Áù½øÖÆ<Tab>:%!xxd
-menutrans Conve&rt\ back<Tab>:%!xxd\ -r	ת»»·µ»Ø<Tab>:%!xxd\ -r
-menutrans Se&T\ Compiler		É趨±àÒëÆ÷(&T)
-
-" Names for buffer menu.
-menutrans &Buffers		»º³åÇø(&B)
-menutrans &Refresh\ menu	¸üв˵¥(&R)
-menutrans &Delete		ɾ³ý(&D)
-menutrans &Alternate		½»Ìæ(&A)
-menutrans &Next			ÏÂÒ»¸ö(&N)
-menutrans &Previous		ÉÏÒ»¸ö(&P)
-
-" Window menu
-menutrans &Window			´°¿Ú(&W)
-menutrans &New<Tab>^Wn			н¨(&N)<Tab>^Wn
-menutrans S&plit<Tab>^Ws		·Ö¸î(&P)<Tab>^Ws
-menutrans Sp&lit\ To\ #<Tab>^W^^	·Ö¸îµ½\ #(&L)<Tab>^W^^
-menutrans Split\ &Vertically<Tab>^Wv	´¹Ö±·Ö¸î(&V)<Tab>^Wv
-menutrans Split\ File\ E&xplorer	·Ö¸îÎļþä¯ÀÀÆ÷(&X)
-menutrans &Close<Tab>^Wc		¹Ø±Õ(&C)<Tab>^Wc
-menutrans Close\ &Other(s)<Tab>^Wo	¹Ø±ÕÆäËü´°¿Ú(&O)<Tab>^Wo
-menutrans Move\ &To			ÒÆ¶¯µ½(&T)
-menutrans &Top<Tab>^WK			¶¥¶Ë(&T)<Tab>^WK
-menutrans &Bottom<Tab>^WJ		µ×¶Ë(&B)<Tab>^WJ
-menutrans &Left\ side<Tab>^WH		×ó±ß(&L)<Tab>^WH
-menutrans &Right\ side<Tab>^WL		ÓÒ±ß(&R)<Tab>^WL
-" menutrans Ne&xt<Tab>^Ww		ÏÂÒ»¸ö(&X)<Tab>^Ww
-" menutrans P&revious<Tab>^WW		ÉÏÒ»¸ö(&R)<Tab>^WW
-menutrans Rotate\ &Up<Tab>^WR		ÏòÉÏÂÖ»»(&U)<Tab>^WR
-menutrans Rotate\ &Down<Tab>^Wr		ÏòÏÂÂÖ»»(&D)<Tab>^Wr
-menutrans &Equal\ Size<Tab>^W=		µÈ´ó(&E)<Tab>^W=
-menutrans &Max\ Height<Tab>^W_		×î´ó¸ß¶È(&M)<Tab>^W
-menutrans M&in\ Height<Tab>^W1_		×îС¸ß¶È(&I)<Tab>^W1_
-menutrans Max\ &Width<Tab>^W\|		×î´ó¿í¶È(&W)<Tab>^W\|
-menutrans Min\ Widt&h<Tab>^W1\|		×îС¿í¶È(&H)<Tab>^W1\|
-"
-" The popup menu
-menutrans &Undo			³·Ïú(&U)
-menutrans Cu&t			¼ôÇÐ(&T)
-menutrans &Copy			¸´ÖÆ(&C)
-menutrans &Paste		Õ³Ìù(&P)
-menutrans &Delete		ɾ³ý(&D)
-menutrans Select\ Blockwise	Ñ¡Ôñ¿é
-menutrans Select\ &Word		Ñ¡Ôñµ¥´Ê(&W)
-menutrans Select\ &Sentence	Ñ¡Ôñ¾ä×Ó(&S)
-menutrans Select\ Pa&ragraph	Ñ¡Ôñ¶ÎÂä(&R)
-menutrans Select\ &Line		Ñ¡ÔñÐÐ(&L)
-menutrans Select\ &Block	Ñ¡Ôñ¿é(&B)
-menutrans Select\ &All		ȫѡ(&A)
-"
-" The GUI toolbar
-if has("toolbar")
-  if exists("*Do_toolbar_tmenu")
-    delfun Do_toolbar_tmenu
-  endif
-  fun Do_toolbar_tmenu()
-    tmenu ToolBar.Open		´ò¿ªÎļþ
-    tmenu ToolBar.Save		±£´æµ±Ç°Îļþ
-    tmenu ToolBar.SaveAll	±£´æÈ«²¿Îļþ
-    tmenu ToolBar.Print		´òÓ¡
-    tmenu ToolBar.Undo		³·Ïú
-    tmenu ToolBar.Redo		ÖØ×ö
-    tmenu ToolBar.Cut		¼ôÇе½¼ôÌù°å
-    tmenu ToolBar.Copy		¸´ÖƵ½¼ôÌù°å
-    tmenu ToolBar.Paste		´Ó¼ôÌù°åÕ³Ìù
-    tmenu ToolBar.Find		²éÕÒ...
-    tmenu ToolBar.FindNext	²éÕÒÏÂÒ»¸ö
-    tmenu ToolBar.FindPrev	²éÕÒÉÏÒ»¸ö
-    tmenu ToolBar.Replace	²éÕÒºÍÌæ»»...
-    tmenu ToolBar.LoadSesn	¼ÓÔØ»á»°
-    tmenu ToolBar.SaveSesn	±£´æµ±Ç°»á»°
-    tmenu ToolBar.RunScript	ÔËÐÐ Vim ½Å±¾
-    tmenu ToolBar.Make		Ö´ÐÐ Make (:make)
-    tmenu ToolBar.RunCtags	ÔÚµ±Ç°Ä¿Â¼½¨Á¢ tags (!ctags -R .)
-    tmenu ToolBar.TagJump	Ìø×ªµ½¹â±êλÖÃµÄ tag
-    tmenu ToolBar.Help		Vim °ïÖú
-    tmenu ToolBar.FindHelp	²éÕÒ Vim °ïÖú
-  endfun
-endif
-
-" Syntax menu
-menutrans &Syntax			Óï·¨(&S)
-menutrans &Show\ filetypes\ in\ menu	Ôڲ˵¥ÖÐÏÔʾÎļþÀàÐÍ(&S)
-menutrans &Off				¹Ø±Õ(&O)
-menutrans &Manual			ÊÖ¹¤(&M)
-menutrans A&utomatic			×Ô¶¯(&U)
-menutrans on/off\ for\ &This\ file	½ö¶ÔÕâ¸öÎļþ¿ª/¹Ø(&T)
-menutrans Co&lor\ test			É«²Ê²âÊÔ(&L)
-menutrans &Highlight\ test		¸ßÁÁ²âÊÔ(&H)
-menutrans &Convert\ to\ HTML		ת»»³É\ HTML(&C)
-menutrans Set\ '&syntax'\ only		½öÉ趨\ 'syntax'(&S)
-menutrans Set\ '&filetype'\ too		Ò²É趨\ 'filetype'(&F)
-
-let &cpo = s:keepcpo
-unlet s:keepcpo
+" As mentioned above, gbk/cp936 is a superset of (and backward compatible with)
+" gb2312, then source the translation encoded in cp936 should be ok. -- Shun
+source <sfile>:p:h/menu_zh_cn.cp936.vim
diff --git a/runtime/lang/menu_zh_cn.utf-8.vim b/runtime/lang/menu_zh_cn.utf-8.vim
index cb1288f..c8e2eb3 100644
--- a/runtime/lang/menu_zh_cn.utf-8.vim
+++ b/runtime/lang/menu_zh_cn.utf-8.vim
@@ -1,270 +1,452 @@
 " Menu Translations:    Simplified Chinese
 " Maintainer:           Shun Bai <baishunde@gmail.com>
 " Previous Maintainer:  Yuheng Xie <elephant@linux.net.cn>
-" Last Change:          2014 Oct 15
-
-" vim: ts=8 sw=8 noet
+" Last Change:          2019 Sep 11
 
 " Quit when menu translations have already been done.
 if exists("did_menu_trans")
   finish
 endif
 let did_menu_trans = 1
-let s:keepcpo= &cpo
+let s:keepcpo = &cpo
 set cpo&vim
 
 scriptencoding utf-8
 
 " Help menu
-menutrans &Help			帮助(&H)
-menutrans &Overview<Tab><F1>	纵览(&O)<Tab><F1>
-menutrans &User\ Manual		用户手册(&U)
-menutrans &How-to\ links	How-to\ 指引(&H)
-menutrans &Find\.\.\.		查找(&F)\.\.\.
-menutrans &Credits		致谢(&C)
-menutrans Co&pying		版权(&P)
-menutrans &Sponsor/Register	赞助/注册(&S)
-menutrans O&rphans		孤儿(&R)
-menutrans &Version		版本(&V)
-menutrans &About		关于(&A)
+menutrans &Help		帮助(&H)
+" Help menuitems and dialog {{{1
+menutrans &Overview<Tab><F1>	概述(&O)<Tab><F1>
+menutrans &User\ Manual			用户手册(&U)
+menutrans &How-to\ Links		如何使用(&H)
+menutrans &Find\.\.\.			查找(&F)\.\.\.
+menutrans &Credits				致谢(&C)
+menutrans Co&pying				版权(&P)
+menutrans &Sponsor/Register		赞助/注册(&S)
+menutrans O&rphans				拯救孤儿(&R)
+menutrans &Version				版本(&V)
+menutrans &About				关于(&A)
+
+" fun! s:Helpfind()
+if !exists("g:menutrans_help_dialog")
+  let g:menutrans_help_dialog = "输入命令或单词以获得帮助:\n\n前缀 i_ 表示输入模式下的命令(如: i_CTRL-X)\n前缀 c_ 表示命令行下的编辑命令(如: c_<Del>)\n前缀 ' 表示选项名(如: 'shiftwidth')"
+endif
+" }}}
 
 " File menu
-menutrans &File				文件(&F)
-menutrans &Open\.\.\.<Tab>:e		打开(&O)\.\.\.<Tab>:e
-menutrans Sp&lit-Open\.\.\.<Tab>:sp	分割并打开(&L)\.\.\.<Tab>:sp
-menutrans Open\ Tab\.\.\.<Tab>:tabnew	打开标签\.\.\.<Tab>:tabnew
-menutrans &New<Tab>:enew		新建(&N)<Tab>:enew
-menutrans &Close<Tab>:close		关闭(&C)<Tab>:close
-menutrans &Save<Tab>:w			保存(&S)<Tab>:w
-menutrans Save\ &As\.\.\.<Tab>:sav	另存为(&A)\.\.\.<Tab>:sav
-menutrans Split\ &Diff\ with\.\.\.	分割比较(Diff)(&D)\.\.\.
-menutrans Split\ Patched\ &By\.\.\.	分割打补丁(Patch)(&B)\.\.\.
-menutrans &Print			打印(&P)
-menutrans Sa&ve-Exit<Tab>:wqa		保存并退出(&V)<Tab>:wqa
-menutrans E&xit<Tab>:qa			退出(&X)<Tab>:qa
+menutrans &File		文件(&F)
+" File menuitems {{{1
+menutrans &Open\.\.\.<Tab>:e			打开(&O)\.\.\.<Tab>:e
+menutrans Sp&lit-Open\.\.\.<Tab>:sp		在拆分窗口打开(&L)\.\.\.<Tab>:sp
+menutrans Open\ Tab\.\.\.<Tab>:tabnew	在标签页打开\.\.\.<Tab>:tabnew
+menutrans &New<Tab>:enew				新建(&N)<Tab>:enew
+menutrans &Close<Tab>:close				关闭(&C)<Tab>:close
+menutrans &Save<Tab>:w					保存(&S)<Tab>:w
+menutrans Save\ &As\.\.\.<Tab>:sav		另存为(&A)\.\.\.<Tab>:sav
+menutrans Split\ &Diff\ With\.\.\.		拆分窗口以对比差异(Diff)(&D)\.\.\.
+menutrans Split\ Patched\ &By\.\.\.		拆分窗口以进行修补(Patch)(&B)\.\.\.
+menutrans &Print						打印(&P)
+menutrans Sa&ve-Exit<Tab>:wqa			保存并退出(&V)<Tab>:wqa
+menutrans E&xit<Tab>:qa					退出(&X)<Tab>:qa
+" }}}
 
 " Edit menu
-menutrans &Edit				编辑(&E)
-menutrans &Undo<Tab>u			撤销(&U)<Tab>u
-menutrans &Redo<Tab>^R			重做(&R)<Tab>^R
-menutrans Rep&eat<Tab>\.		重复上次操作(&E)<Tab>\.
-menutrans Cu&t<Tab>"+x			剪切(&T)<Tab>"+x
-menutrans &Copy<Tab>"+y			复制(&C)<Tab>"+y
-menutrans &Paste<Tab>"+gP		粘贴(&P)<Tab>"+gP
-menutrans Put\ &Before<Tab>[p		粘贴到光标前(&B)<Tab>[p
-menutrans Put\ &After<Tab>]p		粘贴到光标后(&A)<Tab>]p
-menutrans &Delete<Tab>x			删除(&D)<Tab>x
-menutrans &Select\ All<Tab>ggVG		全选(&S)<Tab>ggVG
-menutrans &Find\.\.\.			查找(&F)\.\.\.
-menutrans Find\ and\ Rep&lace\.\.\.	查找和替换(&L)\.\.\.
-menutrans &Find<Tab>/			查找(&F)<Tab>/
-menutrans Find\ and\ Rep&lace<Tab>:%s	查找和替换(&L)<Tab>:%s
-menutrans Settings\ &Window		设定窗口(&W)
-menutrans Startup\ &Settings		启动设定(&S)
-menutrans &Global\ Settings		全局设定(&G)
+menutrans &Edit		编辑(&E)
+" Edit menuitems {{{1
+menutrans &Undo<Tab>u						撤销(&U)<Tab>u
+menutrans &Redo<Tab>^R						恢复(&R)<Tab>^R
+menutrans Rep&eat<Tab>\.					重复(&E)<Tab>\.
+menutrans Cu&t<Tab>"+x						剪切(&T)<Tab>"+x
+menutrans &Copy<Tab>"+y						复制(&C)<Tab>"+y
+menutrans &Paste<Tab>"+gP					粘贴(&P)<Tab>"+gP
+menutrans Put\ &Before<Tab>[p				粘贴到光标前(&B)<Tab>[p
+menutrans Put\ &After<Tab>]p				粘贴到光标后(&A)<Tab>]p
+menutrans &Delete<Tab>x						删除(&D)<Tab>x
+menutrans &Select\ All<Tab>ggVG				全选(&S)<Tab>ggVG
+menutrans &Find\.\.\.						查找(&F)\.\.\.
+menutrans Find\ and\ Rep&lace\.\.\.			查找和替换(&L)\.\.\.
+menutrans &Find<Tab>/						查找(&F)<Tab>/
+menutrans Find\ and\ Rep&lace<Tab>:%s		查找和替换(&L)<Tab>:%s
+menutrans Settings\ &Window					设置窗口(&W)
+menutrans Startup\ &Settings				启动设置(&S)
 
 " Edit/Global Settings
-menutrans Toggle\ Pattern\ &Highlight<Tab>:set\ hls!	开/关模式高亮(&H)<Tab>:set\ hls!
-menutrans Toggle\ &Ignore-case<Tab>:set\ ic!		开/关忽略大小写(&I)<Tab>:set\ ic!
-menutrans Toggle\ &Showmatch<Tab>:set\ sm!		开/关显示配对(&S)<Tab>:set\ sm!
-menutrans &Context\ lines			上下文行数(&C)
-
-menutrans &Virtual\ Edit			虚拟编辑(&V)
+menutrans &Global\ Settings					全局设置(&G)
+" Edit.Global Settings menuitems and dialogs {{{2
+menutrans Toggle\ Pattern\ &Highlight<Tab>:set\ hls!		开/关高亮查找内容(&H)<Tab>:set\ hls!
+menutrans Toggle\ &Ignoring\ Case<Tab>:set\ ic!				开/关忽略大小写(&I)<Tab>:set\ ic!
+menutrans Toggle\ &Showing\ Matched\ Pairs<Tab>:set\ sm!	开/关显示括号匹配(&S)<Tab>:set\ sm!
+menutrans &Context\ Lines									上下文行数(&C)
+menutrans &Virtual\ Edit									虚拟编辑(&V)
+" Edit.Global Settings.Virtual Edit menuitems {{{3
 menutrans Never					从不
-menutrans Block\ Selection			块选择
-menutrans Insert\ mode				插入模式
-menutrans Block\ and\ Insert			块选择和插入模式
-menutrans Always				总是
-
-menutrans Toggle\ Insert\ &Mode<Tab>:set\ im!	开/关插入模式(&M)<Tab>:set\ im!
-menutrans Toggle\ Vi\ C&ompatible<Tab>:set\ cp!	开/关\ Vi\ 兼容<Tab>:set\ cp!
-menutrans Search\ &Path\.\.\.			查找路径(&P)\.\.\.
-menutrans Ta&g\ Files\.\.\.			Tag\ 文件(&T)\.\.\.
+menutrans Block\ Selection		只在选定矩形块时
+menutrans Insert\ Mode			只在插入模式时
+menutrans Block\ and\ Insert	在选定矩形块和插入模式时
+menutrans Always				始终
+" }}}
+menutrans Toggle\ Insert\ &Mode<Tab>:set\ im!				开/关插入模式(&M)<Tab>:set\ im!
+menutrans Toggle\ Vi\ C&ompatibility<Tab>:set\ cp!			开/关\ Vi\ 兼容性(&O)<Tab>:set\ cp!
+menutrans Search\ &Path\.\.\.								搜索路径(&P)\.\.\.
+menutrans Ta&g\ Files\.\.\.									标记文件(Tags)(&G)\.\.\.
 
 " GUI options
-menutrans Toggle\ &Toolbar			开/关工具栏(&T)
-menutrans Toggle\ &Bottom\ Scrollbar		开/关底部滚动条(&B)
-menutrans Toggle\ &Left\ Scrollbar		开/关左端滚动条(&L)
-menutrans Toggle\ &Right\ Scrollbar		开/关右端滚动条(&R)
+menutrans Toggle\ &Toolbar									开/关工具栏(&T)
+menutrans Toggle\ &Bottom\ Scrollbar						开/关底部滚动条(&B)
+menutrans Toggle\ &Left\ Scrollbar							开/关左侧滚动条(&L)
+menutrans Toggle\ &Right\ Scrollbar							开/关右侧滚动条(&R)
+
+" fun! s:SearchP()
+if !exists("g:menutrans_path_dialog")
+  let g:menutrans_path_dialog = "输入搜索路径。\n用逗号分隔目录名。"
+endif
+
+" fun! s:TagFiles()
+if !exists("g:menutrans_tags_dialog")
+  let g:menutrans_tags_dialog = "输入标记文件(Tags)名称。\n用逗号分隔文件名。"
+endif
+" }}}
 
 " Edit/File Settings
-menutrans F&ile\ Settings			文件设定(&I)
-
+menutrans F&ile\ Settings					文件设置(&I)
+" Edit.File Settings menuitems and dialogs {{{2
 " Boolean options
-menutrans Toggle\ Line\ &Numbering<Tab>:set\ nu!	开/关显示行号(&N)<Tab>:set\ nu!
-menutrans Toggle\ relati&ve\ Line\ Numbering<Tab>:set\ rnu! 开/关相对行号(&V)<Tab>:set\ rnu!
-menutrans Toggle\ &List\ Mode<Tab>:set\ list!		开/关\ list\ 模式(&L)<Tab>:set\ list!
-menutrans Toggle\ Line\ &Wrap<Tab>:set\ wrap!		开/关折行(&W)<Tab>:set\ wrap!
-menutrans Toggle\ W&rap\ at\ word<Tab>:set\ lbr!	开/关整词折行(&R)<Tab>:set\ lbr!
-menutrans Toggle\ &expand-tab<Tab>:set\ et!		开/关扩展\ tab(&E)<Tab>:set\ et!
-menutrans Toggle\ &auto-indent<Tab>:set\ ai!		开/关自动缩进(&A)<Tab>:set\ ai!
-menutrans Toggle\ &C-indenting<Tab>:set\ cin!		开/关\ C\ 缩进(&C)<Tab>:set\ cin!
+menutrans Toggle\ Line\ &Numbering<Tab>:set\ nu!			开/关行号(&N)<Tab>:set\ nu!
+menutrans Toggle\ Relati&ve\ Line\ Numbering<Tab>:set\ rnu!	开/关相对行号(&V)<Tab>:set\ rnu!
+menutrans Toggle\ &List\ Mode<Tab>:set\ list!				开/关列表模式(&L)<Tab>:set\ list!
+menutrans Toggle\ Line\ &Wrapping<Tab>:set\ wrap!			开/关换行(&W)<Tab>:set\ wrap!
+menutrans Toggle\ W&rapping\ at\ Word<Tab>:set\ lbr!		开/关词尾换行(&R)<Tab>:set\ lbr!
+menutrans Toggle\ Tab\ &Expanding<Tab>:set\ et!				开/关制表符扩展(&E)<Tab>:set\ et!
+menutrans Toggle\ &Auto\ Indenting<Tab>:set\ ai!			开/关自动缩进(&A)<Tab>:set\ ai!
+menutrans Toggle\ &C-Style\ Indenting<Tab>:set\ cin!		开/关\ C\ 语言式缩进(&C)<Tab>:set\ cin!
 
 " other options
-menutrans &Shiftwidth			缩进宽度(&S)
-menutrans Soft\ &Tabstop		Soft\ Tab\ 宽度(&T)
-menutrans Te&xt\ Width\.\.\.		文本宽度(&X)\.\.\.
-menutrans &File\ Format\.\.\.		文件格式(&F)\.\.\.
-menutrans C&olor\ Scheme		配色方案(&O)
-menutrans Select\ Fo&nt\.\.\.		选择字体(&N)\.\.\.
-menutrans &Keymap			键盘映射(&K)
+menutrans &Shiftwidth										缩进宽度(&S)
+menutrans Soft\ &Tabstop									软制表位宽度(Soft Tabstop)(&T)
+menutrans Te&xt\ Width\.\.\.								文本宽度(&X)\.\.\.
+menutrans &File\ Format\.\.\.								文件格式(&F)\.\.\.
+
+" fun! s:TextWidth()
+if !exists("g:menutrans_textwidth_dialog")
+  let g:menutrans_textwidth_dialog = "输入文本宽度(每行最大字符数,0 表示禁用):"
+endif
+
+" fun! s:FileFormat()
+if !exists("g:menutrans_fileformat_dialog")
+  let g:menutrans_fileformat_dialog = "选择文件的保存格式:"
+endif
+if !exists("g:menutrans_fileformat_choices")
+  let g:menutrans_fileformat_choices = "&Unix\n&Dos\n&Mac\n取消(&C)"
+endif
+" }}}
+menutrans Show\ C&olor\ Schemes\ in\ Menu	在菜单中显示配色方案(&O)
+menutrans C&olor\ Scheme					配色方案(&O)
+menutrans Show\ &Keymaps\ in\ Menu			在菜单中显示键盘映射(&K)
+menutrans &Keymap							键盘映射(&K)
+menutrans Select\ Fo&nt\.\.\.				选择字体(&N)\.\.\.
+" }}}
 
 " Programming menu
-menutrans &Tools			工具(&T)
-menutrans &Jump\ to\ this\ tag<Tab>g^]	跳转到这个\ tag(&J)<Tab>g^]
-menutrans Jump\ &back<Tab>^T		跳转返回(&B)<Tab>^T
-menutrans Build\ &Tags\ File		建立\ Tags\ 文件(&T)
+menutrans &Tools	工具(&T)
+" Tools menuitems {{{1
+menutrans &Jump\ to\ This\ Tag<Tab>g^]			跳转到这个标记(Tag)(&J)<Tab>g^]
+menutrans Jump\ &Back<Tab>^T					跳转回(&B)<Tab>^T
+menutrans Build\ &Tags\ File					生成标记文件(Tags)(&T)
 
 " Tools.Spelling Menu
-menutrans &Spelling				拼写检查(&S)
-menutrans &Spell\ Check\ On			打开拼写检查(&S)
-menutrans Spell\ Check\ &Off			关闭拼写检查(&O)
-menutrans To\ &Next\ error<Tab>]s		上一个错误(&N)<Tab>]s
-menutrans To\ &Previous\ error<Tab>[s		下一个错误(&P)<Tab>[s
-menutrans Suggest\ &Corrections<Tab>z=		修正建议(&C)<Tab>z=
-menutrans &Repeat\ correction<Tab>:spellrepall	重复修正(&R)<Tab>:spellrepall
-menutrans Set\ language\ to\ "en"		设定语言为\ "en"
-menutrans Set\ language\ to\ "en_au"		设定语言为\ "en_au"
-menutrans Set\ language\ to\ "en_ca"		设定语言为\ "en_ca"
-menutrans Set\ language\ to\ "en_gb"		设定语言为\ "en_gb"
-menutrans Set\ language\ to\ "en_nz"		设定语言为\ "en_nz"
-menutrans Set\ language\ to\ "en_us"		设定语言为\ "en_us"
-menutrans &Find\ More\ Languages		查找更多语言(&F)
+menutrans &Spelling								拼写检查(&S)
+" Tools.Spelling menuitems and dialog {{{2
+menutrans &Spell\ Check\ On						打开拼写检查(&S)
+menutrans Spell\ Check\ &Off					关闭拼写检查(&O)
+menutrans To\ &Next\ Error<Tab>]s				上一个错误(&N)<Tab>]s
+menutrans To\ &Previous\ Error<Tab>[s			下一个错误(&P)<Tab>[s
+menutrans Suggest\ &Corrections<Tab>z=			更正建议(&C)<Tab>z=
+menutrans &Repeat\ Correction<Tab>:spellrepall	更正全部同类错误(&R)<Tab>:spellrepall
+menutrans Set\ Language\ to\ "en"				设置语言为\ "en"
+menutrans Set\ Language\ to\ "en_au"			设置语言为\ "en_au"
+menutrans Set\ Language\ to\ "en_ca"			设置语言为\ "en_ca"
+menutrans Set\ Language\ to\ "en_gb"			设置语言为\ "en_gb"
+menutrans Set\ Language\ to\ "en_nz"			设置语言为\ "en_nz"
+menutrans Set\ Language\ to\ "en_us"			设置语言为\ "en_us"
+menutrans &Find\ More\ Languages				查找更多语言(&F)
+
+" func! s:SpellLang()
+if !exists("g:menutrans_set_lang_to")
+  let g:menutrans_set_lang_to = "设置语言为"
+endif
+" }}}
 
 " Tools.Fold Menu
+menutrans &Folding								折叠(&F)
+" Tools.Fold menuitems {{{2
 " open close folds
-menutrans &Folding				折叠(&F)
-menutrans &Enable/Disable\ folds<Tab>zi		启用/禁用折叠(&E)<Tab>zi
-menutrans &View\ Cursor\ Line<Tab>zv		查看此行(&V)<Tab>zv
-menutrans Vie&w\ Cursor\ Line\ only<Tab>zMzx	仅查看此行(&W)<Tab>zMzx
-menutrans C&lose\ more\ folds<Tab>zm		关闭更多折叠(&L)<Tab>zm
-menutrans &Close\ all\ folds<Tab>zM		关闭所有折叠(&C)<Tab>zM
-menutrans O&pen\ more\ folds<Tab>zr		打开更多折叠(&P)<Tab>zr
-menutrans &Open\ all\ folds<Tab>zR		打开所有折叠(&O)<Tab>zR
+menutrans &Enable/Disable\ Folds<Tab>zi			启用/禁用折叠(&E)<Tab>zi
+menutrans &View\ Cursor\ Line<Tab>zv			展开光标所在行(&V)<Tab>zv
+menutrans Vie&w\ Cursor\ Line\ Only<Tab>zMzx	只展开光标所在行(&W)<Tab>zMzx
+menutrans C&lose\ More\ Folds<Tab>zm			折叠一级(&L)<Tab>zm
+menutrans &Close\ All\ Folds<Tab>zM				折叠全部(&C)<Tab>zM
+menutrans O&pen\ More\ Folds<Tab>zr				展开一级(&P)<Tab>zr
+menutrans &Open\ All\ Folds<Tab>zR				展开全部(&O)<Tab>zR
 " fold method
-menutrans Fold\ Met&hod			折叠方法(&H)
-menutrans M&anual			手工(&A)
-menutrans I&ndent			缩进(&N)
-menutrans E&xpression			表达式(&X)
-menutrans S&yntax			语法(&Y)
-menutrans &Diff				比较(Diff)(&D)
-menutrans Ma&rker			标记(&R)
+menutrans Fold\ Met&hod							折叠方式(&H)
+" Tools.Fold.Fold Method menuitems {{{3
+menutrans M&anual		手动(&A)
+menutrans I&ndent		缩进(&N)
+menutrans E&xpression	表达式(&X)
+menutrans S&yntax		语法(&Y)
+menutrans &Diff			差异(Diff)(&D)
+menutrans Ma&rker		记号(Marker)(&R)
+" }}}
 " create and delete folds
-menutrans Create\ &Fold<Tab>zf		创建折叠(&F)<Tab>zf
-menutrans &Delete\ Fold<Tab>zd		删除折叠(&D)<Tab>zd
-menutrans Delete\ &All\ Folds<Tab>zD	删除所有折叠(&A)<Tab>zD
+menutrans Create\ &Fold<Tab>zf					创建折叠(&F)<Tab>zf
+menutrans &Delete\ Fold<Tab>zd					删除折叠(&D)<Tab>zd
+menutrans Delete\ &All\ Folds<Tab>zD			删除全部折叠(&A)<Tab>zD
 " moving around in folds
-menutrans Fold\ column\ &width		折叠栏宽度(&W)
+menutrans Fold\ Col&umn\ Width					折叠操作栏宽度(&W)
+" }}}
 
 " Tools.Diff Menu
-menutrans &Diff				比较(Diff)(&D)
-menutrans &Update			更新(&U)
-menutrans &Get\ Block			得到块(&G)
-menutrans &Put\ Block			放置块(&P)
+menutrans &Diff									差异(Diff)(&D)
+" Tools.Diff menuitems {{{2
+menutrans &Update		刷新(&U)
+menutrans &Get\ Block	采用对侧文本块(&G)
+menutrans &Put\ Block	采用本侧文本块(&P)
+" }}}
 
-menutrans &Make<Tab>:make		Make(&M)<Tab>:make
-menutrans &List\ Errors<Tab>:cl		列出错误(&L)<Tab>:cl
-menutrans L&ist\ Messages<Tab>:cl!	列出消息(&I)<Tab>:cl!
-menutrans &Next\ Error<Tab>:cn		下一个错误(&N)<Tab>:cn
-menutrans &Previous\ Error<Tab>:cp	上一个错误(&P)<Tab>:cp
-menutrans &Older\ List<Tab>:cold	更旧的错误列表(&O)<Tab>:cold
-menutrans N&ewer\ List<Tab>:cnew	更新的错误列表(&E)<Tab>:cnew
-menutrans Error\ &Window		错误窗口(&W)
-menutrans &Update<Tab>:cwin		更新(&U)<Tab>:cwin
+menutrans &Make<Tab>:make						生成(Make)(&M)<Tab>:make
+menutrans &List\ Errors<Tab>:cl					列出错误(&L)<Tab>:cl
+menutrans L&ist\ Messages<Tab>:cl!				列出消息(&I)<Tab>:cl!
+menutrans &Next\ Error<Tab>:cn					下一个错误(&N)<Tab>:cn
+menutrans &Previous\ Error<Tab>:cp				上一个错误(&P)<Tab>:cp
+menutrans &Older\ List<Tab>:cold				较旧的错误列表(&O)<Tab>:cold
+menutrans N&ewer\ List<Tab>:cnew				较新的错误列表(&E)<Tab>:cnew
+menutrans Error\ &Window						错误窗口(&W)
+" Tools.Error Window menuitems {{{2
+menutrans &Update<Tab>:cwin		刷新(&U)<Tab>:cwin
 menutrans &Open<Tab>:copen		打开(&O)<Tab>:copen
-menutrans &Close<Tab>:cclose		关闭(&C)<Tab>:cclose
-menutrans &Convert\ to\ HEX<Tab>:%!xxd	转换成十六进制<Tab>:%!xxd
-menutrans Conve&rt\ back<Tab>:%!xxd\ -r	转换返回<Tab>:%!xxd\ -r
-menutrans Se&T\ Compiler		设定编译器(&T)
+menutrans &Close<Tab>:cclose	关闭(&C)<Tab>:cclose
+" }}}
+menutrans Show\ Compiler\ Se&ttings\ in\ Menu	在菜单中显示编译器设置(&T)
+menutrans Se&t\ Compiler						设置编译器(&T)
+menutrans &Convert\ to\ HEX<Tab>:%!xxd			转换成十六进制(&C)<Tab>:%!xxd
+menutrans Conve&rt\ Back<Tab>:%!xxd\ -r			转换回(&R)<Tab>:%!xxd\ -r
+" }}}
 
-" Names for buffer menu.
-menutrans &Buffers		缓冲区(&B)
-menutrans &Refresh\ menu	更新菜单(&R)
-menutrans &Delete		删除(&D)
-menutrans &Alternate		交替(&A)
-menutrans &Next			下一个(&N)
-menutrans &Previous		上一个(&P)
+" Buffer menu
+menutrans &Buffers	缓冲区(&B)
+" Buffer menuitems and dialog {{{1
+menutrans &Refresh\ Menu	刷新本菜单(&R)
+menutrans &Delete			删除(&D)
+menutrans &Alternate		切换(&A)
+menutrans &Next				下一个(&N)
+menutrans &Previous			上一个(&P)
+
+" func! s:BMMunge(fname, bnum) 
+if !exists("g:menutrans_no_file")
+  let g:menutrans_no_file = "[无文件]"
+endif
+" }}}
 
 " Window menu
-menutrans &Window			窗口(&W)
-menutrans &New<Tab>^Wn			新建(&N)<Tab>^Wn
-menutrans S&plit<Tab>^Ws		分割(&P)<Tab>^Ws
-menutrans Sp&lit\ To\ #<Tab>^W^^	分割到\ #(&L)<Tab>^W^^
-menutrans Split\ &Vertically<Tab>^Wv	垂直分割(&V)<Tab>^Wv
-menutrans Split\ File\ E&xplorer	分割文件浏览器(&X)
-menutrans &Close<Tab>^Wc		关闭(&C)<Tab>^Wc
-menutrans Close\ &Other(s)<Tab>^Wo	关闭其它窗口(&O)<Tab>^Wo
-menutrans Move\ &To			移动到(&T)
-menutrans &Top<Tab>^WK			顶端(&T)<Tab>^WK
-menutrans &Bottom<Tab>^WJ		底端(&B)<Tab>^WJ
-menutrans &Left\ side<Tab>^WH		左边(&L)<Tab>^WH
-menutrans &Right\ side<Tab>^WL		右边(&R)<Tab>^WL
-" menutrans Ne&xt<Tab>^Ww		下一个(&X)<Tab>^Ww
-" menutrans P&revious<Tab>^WW		上一个(&R)<Tab>^WW
-menutrans Rotate\ &Up<Tab>^WR		向上轮换(&U)<Tab>^WR
-menutrans Rotate\ &Down<Tab>^Wr		向下轮换(&D)<Tab>^Wr
-menutrans &Equal\ Size<Tab>^W=		等大(&E)<Tab>^W=
-menutrans &Max\ Height<Tab>^W_		最大高度(&M)<Tab>^W
-menutrans M&in\ Height<Tab>^W1_		最小高度(&I)<Tab>^W1_
-menutrans Max\ &Width<Tab>^W\|		最大宽度(&W)<Tab>^W\|
-menutrans Min\ Widt&h<Tab>^W1\|		最小宽度(&H)<Tab>^W1\|
-"
-" The popup menu
-menutrans &Undo			撤销(&U)
-menutrans Cu&t			剪切(&T)
-menutrans &Copy			复制(&C)
-menutrans &Paste		粘贴(&P)
-menutrans &Delete		删除(&D)
-menutrans Select\ Blockwise	选择块
-menutrans Select\ &Word		选择单词(&W)
-menutrans Select\ &Sentence	选择句子(&S)
-menutrans Select\ Pa&ragraph	选择段落(&R)
-menutrans Select\ &Line		选择行(&L)
-menutrans Select\ &Block	选择块(&B)
-menutrans Select\ &All		全选(&A)
-"
-" The GUI toolbar
+menutrans &Window	窗口(&W)
+" Window menuitems {{{1
+menutrans &New<Tab>^Wn					新建(&N)<Tab>^Wn
+menutrans S&plit<Tab>^Ws				拆分(&P)<Tab>^Ws
+menutrans Sp&lit\ To\ #<Tab>^W^^		拆分并显示缓冲区\ #(&L)<Tab>^W^^
+menutrans Split\ &Vertically<Tab>^Wv	垂直拆分(&V)<Tab>^Wv
+menutrans Split\ File\ E&xplorer		拆分并打开文件浏览器(&X)
+menutrans &Close<Tab>^Wc				关闭(&C)<Tab>^Wc
+menutrans Close\ &Other(s)<Tab>^Wo		除此之外全部关闭(&O)<Tab>^Wo
+menutrans Move\ &To						移动到(&T)
+menutrans &Top<Tab>^WK					顶端(&T)<Tab>^WK
+menutrans &Bottom<Tab>^WJ				底端(&B)<Tab>^WJ
+menutrans &Left\ Side<Tab>^WH			左边(&L)<Tab>^WH
+menutrans &Right\ Side<Tab>^WL			右边(&R)<Tab>^WL
+menutrans Rotate\ &Up<Tab>^WR			向上轮换(&U)<Tab>^WR
+menutrans Rotate\ &Down<Tab>^Wr			向下轮换(&D)<Tab>^Wr
+menutrans &Equal\ Size<Tab>^W=			平均分布(&E)<Tab>^W=
+menutrans &Max\ Height<Tab>^W_			最大高度(&M)<Tab>^W
+menutrans M&in\ Height<Tab>^W1_			最小高度(&I)<Tab>^W1_
+menutrans Max\ &Width<Tab>^W\|			最大宽度(&W)<Tab>^W\|
+menutrans Min\ Widt&h<Tab>^W1\|			最小宽度(&H)<Tab>^W1\|
+" }}}
+
+" The popup menu {{{1
+menutrans &Undo					撤销(&U)
+menutrans Cu&t					剪切(&T)
+menutrans &Copy					复制(&C)
+menutrans &Paste				粘贴(&P)
+menutrans &Delete				删除(&D)
+menutrans Select\ Blockwise		改为选定矩形块
+menutrans Select\ &Word			选定单词(&W)
+menutrans Select\ &Sentence		选定句(&S)
+menutrans Select\ Pa&ragraph	选定段落(&R)
+menutrans Select\ &Line			选定行(&L)
+menutrans Select\ &Block		选定矩形块(&B)
+menutrans Select\ &All			全选(&A)
+
+" func! <SID>SpellPopup()
+if !exists("g:menutrans_spell_change_ARG_to")
+  let g:menutrans_spell_change_ARG_to = '将\ "%s"\ 更改为'
+endif
+if !exists("g:menutrans_spell_add_ARG_to_word_list")
+  let g:menutrans_spell_add_ARG_to_word_list = '将\ "%s"\ 添加到词典'
+endif
+if !exists("g:menutrans_spell_ignore_ARG")
+  let g:menutrans_spell_ignore_ARG = '忽略\ "%s"'
+endif
+" }}}
+
+" The GUI toolbar {{{1
 if has("toolbar")
   if exists("*Do_toolbar_tmenu")
     delfun Do_toolbar_tmenu
   endif
   fun Do_toolbar_tmenu()
-    tmenu ToolBar.Open		打开文件
-    tmenu ToolBar.Save		保存当前文件
-    tmenu ToolBar.SaveAll	保存全部文件
-    tmenu ToolBar.Print		打印
-    tmenu ToolBar.Undo		撤销
-    tmenu ToolBar.Redo		重做
-    tmenu ToolBar.Cut		剪切到剪贴板
-    tmenu ToolBar.Copy		复制到剪贴板
-    tmenu ToolBar.Paste		从剪贴板粘贴
-    tmenu ToolBar.Find		查找...
-    tmenu ToolBar.FindNext	查找下一个
-    tmenu ToolBar.FindPrev	查找上一个
-    tmenu ToolBar.Replace	查找和替换...
-    tmenu ToolBar.LoadSesn	加载会话
-    tmenu ToolBar.SaveSesn	保存当前会话
-    tmenu ToolBar.RunScript	运行 Vim 脚本
-    tmenu ToolBar.Make		执行 Make (:make)
-    tmenu ToolBar.RunCtags	在当前目录建立 tags (!ctags -R .)
-    tmenu ToolBar.TagJump	跳转到光标位置的 tag
-    tmenu ToolBar.Help		Vim 帮助
-    tmenu ToolBar.FindHelp	查找 Vim 帮助
+    let did_toolbar_tmenu = 1
+    tmenu ToolBar.Open			打开文件
+    tmenu ToolBar.Save			保存当前文件
+    tmenu ToolBar.SaveAll		全部保存
+    tmenu ToolBar.Print			打印
+    tmenu ToolBar.Undo			撤销
+    tmenu ToolBar.Redo			恢复
+    tmenu ToolBar.Cut			剪切到剪贴板
+    tmenu ToolBar.Copy			复制到剪贴板
+    tmenu ToolBar.Paste			从剪贴板粘贴
+    if !has("gui_athena")
+      tmenu ToolBar.Replace		查找和替换...
+      tmenu ToolBar.FindNext	查找下一个
+      tmenu ToolBar.FindPrev	查找上一个
+    endif
+    tmenu ToolBar.LoadSesn		加载会话
+    tmenu ToolBar.SaveSesn		保存当前会话
+    tmenu ToolBar.RunScript		运行 Vim 脚本
+    tmenu ToolBar.Make			生成当前项目 (:make)
+    tmenu ToolBar.RunCtags		在当前目录生成标记(Tags) (!ctags -R .)
+    tmenu ToolBar.TagJump		跳转到光标所在标记(Tag)
+    tmenu ToolBar.Help			Vim 帮助
+    tmenu ToolBar.FindHelp		在 Vim 帮助中查找
   endfun
 endif
+" }}}
 
 " Syntax menu
-menutrans &Syntax			语法(&S)
-menutrans &Show\ filetypes\ in\ menu	在菜单中显示文件类型(&S)
-menutrans &Off				关闭(&O)
-menutrans &Manual			手工(&M)
-menutrans A&utomatic			自动(&U)
-menutrans on/off\ for\ &This\ file	仅对这个文件开/关(&T)
-menutrans Co&lor\ test			色彩测试(&L)
-menutrans &Highlight\ test		高亮测试(&H)
-menutrans &Convert\ to\ HTML		转换成\ HTML(&C)
-menutrans Set\ '&syntax'\ only		仅设定\ 'syntax'(&S)
-menutrans Set\ '&filetype'\ too		也设定\ 'filetype'(&F)
+menutrans &Syntax	语法(&S)
+" Syntax menuitems {{{1
+menutrans &Show\ File\ Types\ in\ Menu	在菜单中显示文件类型(&S)
+menutrans &Off							关闭(&O)
+menutrans &Manual						手动(&M)
+menutrans A&utomatic					自动(&U)
+menutrans On/Off\ for\ &This\ File		只对这个文件开/关(&T)
+menutrans Co&lor\ Test					色彩测试(&L)
+menutrans &Highlight\ Test				高亮测试(&H)
+menutrans &Convert\ to\ HTML			转换成\ HTML(&C)
+" From synmenu.vim
+menutrans Set\ '&syntax'\ Only			只设置\ 'syntax'(&S)
+menutrans Set\ '&filetype'\ Too			也设置\ 'filetype'(&F)
+" }}}
+
+" Netrw menu {{{1
+" Plugin loading may be after menu translation
+" So giveup testing if Netrw Plugin is loaded
+" if exists("g:loaded_netrwPlugin")
+  menutrans Help<tab><F1>					帮助<tab><F1>
+  menutrans Bookmarks						书签
+  menutrans History							历史记录
+  menutrans Go\ Up\ Directory<tab>-			向上一级<tab>-
+  menutrans Apply\ Special\ Viewer<tab>x	用默认程序打开<tab>x
+  menutrans Bookmarks\ and\ History			书签和历史记录
+  " Netrw.Bookmarks and History menuitems {{{2
+  menutrans Bookmark\ Current\ Directory<tab>mb		添加书签<tab>mb
+  menutrans Bookmark\ Delete						移除书签
+  menutrans Goto\ Prev\ Dir\ (History)<tab>u		后退(历史记录)<tab>u
+  menutrans Goto\ Next\ Dir\ (History)<tab>U		前进(历史记录)<tab>U
+  menutrans List<tab>qb								完整列表<tab>qb
+  " }}}
+  menutrans Browsing\ Control				控制
+  " Netrw.Browsing Control menuitems {{{2
+  menutrans Horizontal\ Split<tab>o					在拆分窗口打开<tab>o
+  menutrans Vertical\ Split<tab>v					在垂直拆分窗口打开<tab>v
+  menutrans New\ Tab<tab>t							在标签页打开<tab>t	
+  menutrans Preview<tab>p							预览<tab>p
+  menutrans Edit\ File\ Hiding\ List<tab><ctrl-h>	编辑隐藏条件(Hiding\ List)<tab><ctrl-h>
+  menutrans Edit\ Sorting\ Sequence<tab>S			编辑排序条件(Sorting\ Sequence)<tab>S
+  menutrans Quick\ Hide/Unhide\ Dot\ Files<tab>gh	快速隐藏/显示以\.开头的文件<tab>gh
+  menutrans Refresh\ Listing<tab><ctrl-l>			刷新<tab><ctrl-l>
+  menutrans Settings/Options<tab>:NetrwSettings		设置/选项<tab>:NetrwSettings
+  " }}}
+  menutrans Delete\ File/Directory<tab>D	删除文件/目录<tab>D
+  menutrans Edit\ File/Dir					编辑文件/目录
+  " Netrw.Edit File menuitems {{{2
+  menutrans Create\ New\ File<tab>%				新建文件<tab>%
+  menutrans In\ Current\ Window<tab><cr>		在当前窗口<tab><cr>
+  menutrans Preview\ File/Directory<tab>p		预览文件/目录<tab>p
+  menutrans In\ Previous\ Window<tab>P			在上一个窗口<tab>P
+  menutrans In\ New\ Window<tab>o				在新窗口<tab>o
+  menutrans In\ New\ Tab<tab>t					在新标签页<tab>t
+  menutrans In\ New\ Vertical\ Window<tab>v		在新垂直窗口<tab>v
+  " }}}
+  menutrans Explore							浏览
+  " Netrw.Explore menuitems {{{2
+  menutrans Directory\ Name															指定目录名
+  menutrans Filenames\ Matching\ Pattern\ (curdir\ only)<tab>:Explore\ */			匹配指定文件名模式(当前目录)<tab>:Explore\ */
+  menutrans Filenames\ Matching\ Pattern\ (+subdirs)<tab>:Explore\ **/				匹配指定文件名模式(含子目录)<tab>:Explore\ **/
+  menutrans Files\ Containing\ String\ Pattern\ (curdir\ only)<tab>:Explore\ *//	内容包含指定字符串模式(当前目录)<tab>:Explore\ *//
+  menutrans Files\ Containing\ String\ Pattern\ (+subdirs)<tab>:Explore\ **//		内容包含指定字符串模式(含子目录)<tab>:Explore\ **//
+  menutrans Next\ Match<tab>:Nexplore												下一个匹配项<tab>:Nexplore
+  menutrans Prev\ Match<tab>:Pexplore												上一个匹配项<tab>:Pexplore
+  " }}}
+  menutrans Make\ Subdirectory<tab>d		新建子目录<tab>d
+  menutrans Marked\ Files					选定的(Marked)文件
+  " Netrw.Marked Files menuitems {{{2
+  menutrans Mark\ File<tab>mf						选定(Mark)/取消<tab>mf
+  menutrans Mark\ Files\ by\ Regexp<tab>mr			用正则表达式(Regexp)选定<tab>mr
+  menutrans Hide-Show-List\ Control<tab>a			隐藏/显示<tab>a
+  menutrans Copy\ To\ Target<tab>mc					复制到目标<tab>mc
+  menutrans Delete<tab>D							删除<tab>D
+  menutrans Diff<tab>md								差异(Diff)<tab>md
+  menutrans Edit<tab>me								编辑<tab>me
+  menutrans Exe\ Cmd<tab>mx							作为参数运行命令<tab>mx
+  menutrans Move\ To\ Target<tab>mm					移动到目标<tab>mm
+  menutrans Obtain<tab>O							获取<tab>O
+  menutrans Print<tab>mp							打印<tab>mp
+  menutrans Replace<tab>R							替换<tab>R
+  menutrans Set\ Target<tab>mt						设置目标<tab>mt
+  menutrans Tag<tab>mT								生成标记文件(Tags)<tab>mT
+  menutrans Zip/Unzip/Compress/Uncompress<tab>mz	压缩/解压缩<tab>mz
+  " }}}
+  menutrans Obtain\ File<tab>O				获取文件<tab>O
+  menutrans Style							显示风格
+  " Netrw.Style menuitems {{{2
+  menutrans Listing							列表形式
+  " Netrw.Style.Listing menuitems {{{3
+  menutrans thin<tab>i	紧凑<thin)<tab>i
+  menutrans long<tab>i	详细(long)<tab>i
+  menutrans wide<tab>i	多列(wide)<tab>i
+  menutrans tree<tab>i	树状(tree)<tab>i
+  " }}}
+  menutrans Normal-Hide-Show				显示/隐藏
+  " Netrw.Style.Normal-Hide_show menuitems {{{3
+  menutrans Show\ All<tab>a		显示全部
+  menutrans Normal<tab>a		不显示隐藏文件
+  menutrans Hidden\ Only<tab>a	只显示隐藏文件
+  " }}}
+  menutrans Reverse\ Sorting\ Order<tab>r	升序/降序<tab>r
+  menutrans Sorting\ Method					排序方式
+  " Netrw.Style.Sorting Method menuitems {{{3
+  menutrans Name<tab>s		文件名<tab>s
+  menutrans Time<tab>s  	修改时间<tab>s
+  menutrans Size<tab>s  	大小<tab>s
+  menutrans Exten<tab>s		扩展名<tab>s
+  " }}}
+  " }}}
+  menutrans Rename\ File/Directory<tab>R	重命名文件/目录<tab>R
+  menutrans Set\ Current\ Directory<tab>c	设置\ Vim\ 工作目录<tab>c
+  menutrans Targets							目标
+" endif
+" }}}
 
 let &cpo = s:keepcpo
 unlet s:keepcpo
+
+" vim: set ts=4 sw=4 noet fdm=marker fdc=4 :
diff --git a/runtime/syntax/debchangelog.vim b/runtime/syntax/debchangelog.vim
index 9d6dfe9..2d61206 100644
--- a/runtime/syntax/debchangelog.vim
+++ b/runtime/syntax/debchangelog.vim
@@ -3,7 +3,7 @@
 " Maintainer:  Debian Vim Maintainers
 " Former Maintainers: Gerfried Fuchs <alfie@ist.org>
 "                     Wichert Akkerman <wakkerma@debian.org>
-" Last Change: 2019 Apr 21
+" Last Change: 2019 Sep 07
 " URL: https://salsa.debian.org/vim-team/vim-debian/blob/master/syntax/debchangelog.vim
 
 " Standard syntax initialization
@@ -21,7 +21,7 @@
 syn match debchangelogName	contained "^[[:alnum:]][[:alnum:].+-]\+ "
 exe 'syn match debchangelogFirstKV	contained "; \('.s:urgency.'\|'.s:binNMU.'\)"'
 exe 'syn match debchangelogOtherKV	contained ", \('.s:urgency.'\|'.s:binNMU.'\)"'
-syn match debchangelogTarget	contained "\v %(frozen|unstable|sid|%(testing|%(old)=stable)%(-proposed-updates|-security)=|experimental|%(squeeze|wheezy|jessie)-%(backports%(-sloppy)=|lts|security)|stretch%(-backports%(-sloppy)=|-security)=|buster%(-backports|-security)=|bullseye|%(devel|precise|trusty|vivid|wily|xenial|yakkety|zesty|artful|bionic|cosmic|disco|eoan)%(-%(security|proposed|updates|backports|commercial|partner))=)+"
+syn match debchangelogTarget	contained "\v %(frozen|unstable|sid|%(testing|%(old)=stable)%(-proposed-updates|-security)=|experimental|%(squeeze|wheezy|jessie)-%(backports%(-sloppy)=|lts|security)|stretch%(-backports%(-sloppy)=|-security)=|buster%(-backports|-security)=|bullseye|bookworm|%(devel|precise|trusty|vivid|wily|xenial|yakkety|zesty|artful|bionic|cosmic|disco|eoan)%(-%(security|proposed|updates|backports|commercial|partner))=)+"
 syn match debchangelogVersion	contained "(.\{-})"
 syn match debchangelogCloses	contained "closes:\_s*\(bug\)\=#\=\_s\=\d\+\(,\_s*\(bug\)\=#\=\_s\=\d\+\)*"
 syn match debchangelogLP	contained "\clp:\s\+#\d\+\(,\s*#\d\+\)*"
diff --git a/runtime/syntax/debcopyright.vim b/runtime/syntax/debcopyright.vim
index c85ca37..c87b876 100644
--- a/runtime/syntax/debcopyright.vim
+++ b/runtime/syntax/debcopyright.vim
@@ -1,7 +1,7 @@
 " Vim syntax file
 " Language:    Debian copyright file
 " Maintainer:  Debian Vim Maintainers
-" Last Change: 2018 Feb 05
+" Last Change: 2019 Sep 07
 " URL: https://salsa.debian.org/vim-team/vim-debian/blob/master/syntax/debcopyright.vim
 
 " Standard syntax initialization
@@ -15,7 +15,7 @@
 syn case match
 
 syn match debcopyrightUrl       "\vhttps?://[[:alnum:]][-[:alnum:]]*[[:alnum:]]?(\.[[:alnum:]][-[:alnum:]]*[[:alnum:]]?)*\.[[:alpha:]][-[:alnum:]]*[[:alpha:]]?(:\d+)?(/[^[:space:]]*)?$"
-syn match debcopyrightKey       "^\%(Format\|Upstream-Name\|Upstream-Contact\|Disclaimer\|Source\|Comment\|Files\|Copyright\|License\): *"
+syn match debcopyrightKey       "^\%(Format\|Upstream-Name\|Upstream-Contact\|Disclaimer\|Source\|Comment\|Files\|Copyright\|License\|Files-Excluded\%(-[-a-zA-Z0-9]\+\)\=\): *"
 syn match debcopyrightEmail     "[_=[:alnum:]\.+-]\+@[[:alnum:]\./\-]\+"
 syn match debcopyrightEmail     "<.\{-}>"
 syn match debcopyrightComment   "^#.*$" contains=@Spell
diff --git a/runtime/syntax/debsources.vim b/runtime/syntax/debsources.vim
index f90476f..97acbf6 100644
--- a/runtime/syntax/debsources.vim
+++ b/runtime/syntax/debsources.vim
@@ -2,7 +2,7 @@
 " Language:     Debian sources.list
 " Maintainer:   Debian Vim Maintainers
 " Former Maintainer: Matthijs Mohlmann <matthijs@cacholong.nl>
-" Last Change: 2019 Apr 21
+" Last Change: 2019 Sep 07
 " URL: https://salsa.debian.org/vim-team/vim-debian/blob/master/syntax/debsources.vim
 
 " Standard syntax initialization
@@ -26,7 +26,7 @@
       \ 'wheezy', 'jessie', 'stretch', 'buster', 'bullseye', 'bookworm',
       \ 'sid', 'rc-buggy',
       \
-      \ 'trusty', 'xenial', 'bionic', 'cosmic', 'disco', 'eoan', 'devel'
+      \ 'trusty', 'xenial', 'bionic', 'disco', 'eoan', 'devel'
       \ ]
 let s:unsupported = [
       \ 'buzz', 'rex', 'bo', 'hamm', 'slink', 'potato',
@@ -35,7 +35,7 @@
       \ 'warty', 'hoary', 'breezy', 'dapper', 'edgy', 'feisty',
       \ 'gutsy', 'hardy', 'intrepid', 'jaunty', 'karmic', 'lucid',
       \ 'maverick', 'natty', 'oneiric', 'precise', 'quantal', 'raring', 'saucy',
-      \ 'utopic', 'vivid', 'wily', 'yakkety', 'zesty', 'artful'
+      \ 'utopic', 'vivid', 'wily', 'yakkety', 'zesty', 'artful', 'cosmic'
       \ ]
 let &cpo=s:cpo
 
diff --git a/runtime/syntax/freebasic.vim b/runtime/syntax/freebasic.vim
index bce7f9e..68e838f 100644
--- a/runtime/syntax/freebasic.vim
+++ b/runtime/syntax/freebasic.vim
@@ -1,12 +1,13 @@
 " Vim syntax file
 " Language:    FreeBasic
-" Maintainer:  Mark Manning <markem@airmail.net>
-" Updated:     10/22/2006
+" Maintainer:  Mark Manning <markem@sim1.us>
+" Updated:     10/9/2019
+" Version:		7.0b
 "
 " Description:
 "
 "	Based originally on the work done by Allan Kelly <Allan.Kelly@ed.ac.uk>
-"	Updated by Mark Manning <markem@airmail.net>
+"	Updated by Mark Manning <markem@sim1.us>
 "	Applied FreeBasic support to the already excellent support
 "	for standard basic syntax (like QB).
 "
@@ -138,7 +139,7 @@
 "	types of identifiers like functions, basic commands and
 "	such. MEM 9/9/2006
 "
-syn match	freebasicIdentifier		"\<[a-zA-Z_][a-zA-Z0-9_]*\>"
+syn match	freebasicIdentifier			"\<[a-zA-Z_][a-zA-Z0-9_]*\>"
 syn match	freebasicGenericFunction	"\<[a-zA-Z_][a-zA-Z0-9_]*\>\s*("me=e-1,he=e-1
 "
 "	Function list
@@ -154,9 +155,13 @@
 "
 "	Integer number, or floating point number without a dot and with "f".
 "
-syn region	freebasicHex		start="&h" end="\W"
-syn region	freebasicHexError	start="&h\x*[g-zG-Z]" end="\W"
-syn match	freebasicInteger	"\<\d\+\(u\=l\=\|lu\|f\)\>"
+syn region	freebasicHex			start="&h" end="\W"
+syn region	freebasicHexError		start="&h\x*[g-zG-Z]" end="\W"
+syn region	freebasicOctal			start="&o" end="\W"
+syn region	freebasicOctalError		start="&o[0-7]*[89a-zA-Z]" end="\W"
+syn region	freebasicBinary			start="&b" end="\W"
+syn region	freebasicBinaryError	start="&b[01]*[2-9a-zA-Z]" end="\W"
+syn match	freebasicInteger		"\<\d\+\(u\=l\=\|lu\|f\)\>"
 "
 "	Floating point number, with dot, optional exponent
 "
@@ -170,11 +175,11 @@
 "
 syn match	freebasicFloat		"\<\d\+e[-+]\=\d\+[fl]\=\>"
 "
-"	Hex number
+"	Octal number
 "
 syn case match
-syn match	freebasicOctal		"\<0\o*\>"
-syn match	freebasicOctalError	"\<0\o*[89]"
+syn match	freebasicOctal2			"\<0\o*\>"
+syn match	freebasicOctal2Error	"\<0\o*[89a-zA-Z]"
 "
 "	String and Character contstants
 "
@@ -183,7 +188,7 @@
 "
 "	Comments
 "
-syn match	freebasicSpecial	contained "\\."
+syn match	freebasicSpecial	contained "\\\\."
 syn region	freebasicComment	start="^rem" end="$" contains=freebasicSpecial,freebasicTodo
 syn region	freebasicComment	start=":\s*rem" end="$" contains=freebasicSpecial,freebasicTodo
 syn region	freebasicComment	start="\s*'" end="$" contains=freebasicSpecial,freebasicTodo
@@ -197,12 +202,12 @@
 "
 "	Create the clusters
 "
-syn cluster	freebasicNumber		contains=freebasicHex,freebasicOctal,freebasicInteger,freebasicFloat
-syn cluster	freebasicError		contains=freebasicHexError,freebasicOctalError
+syn cluster	freebasicNumber		contains=freebasicHex,freebasicOctal,freebasicOctal2,freebasicBinary,freebasicInteger,freebasicFloat
+syn cluster	freebasicError		contains=freebasicHexError,freebasicOctalError,freebasicOctal2,freebasicBinary
 "
 "	Used with OPEN statement
 "
-syn match	freebasicFilenumber	"#\d\+"
+syn match	freebasicFilenumber		"#\d\+"
 syn match	freebasicMathOperator	"[\+\-\=\|\*\/\>\<\%\()[\]]" contains=freebasicParen
 "
 "	The default methods for highlighting.  Can be overridden later
diff --git a/runtime/syntax/sshconfig.vim b/runtime/syntax/sshconfig.vim
index 755d08e..6c36f56 100644
--- a/runtime/syntax/sshconfig.vim
+++ b/runtime/syntax/sshconfig.vim
@@ -5,7 +5,8 @@
 " Contributor:  Leonard Ehrenfried <leonard.ehrenfried@web.de>
 " Contributor:  Karsten Hopp <karsten@redhat.com>
 " Contributor:  Dean, Adam Kenneth <adam.ken.dean@hpe.com>
-" Last Change:	2016 Dec 28
+" Last Change:	2019 Sep 09
+"		Added RemoteCommand from pull request #4809
 " SSH Version:	7.4p1
 "
 
@@ -206,6 +207,7 @@
 syn keyword sshconfigKeyword PubkeyAuthentication
 syn keyword sshconfigKeyword RSAAuthentication
 syn keyword sshconfigKeyword RekeyLimit
+syn keyword sshconfigKeyword RemoteCommand
 syn keyword sshconfigKeyword RemoteForward
 syn keyword sshconfigKeyword RequestTTY
 syn keyword sshconfigKeyword RhostsRSAAuthentication
diff --git a/runtime/syntax/vim.vim b/runtime/syntax/vim.vim
index 2ed4b30..78c9d26 100644
--- a/runtime/syntax/vim.vim
+++ b/runtime/syntax/vim.vim
@@ -28,6 +28,9 @@
 syn match   vimCommand contained	"\<z[-+^.=]\=\>"
 syn keyword vimStdPlugin contained	Arguments Break Cfilter Clear Continue DiffOrig Evaluate Finish Gdb Lfilter Man N[ext] Over P[rint] Program Run S Source Step Stop Termdebug TermdebugCommand TOhtml Winbar XMLent XMLns
 
+" added later
+syn keyword vimCommand contained	eval
+
 " vimOptions are caught only when contained in a vimSet {{{2
 syn keyword vimOption contained	acd ambw arshape background ballooneval bex bl brk buftype cf cinkeys cmdwinheight com conceallevel crb cscopeverbose cuc def diffexpr ea ei ep eventignore fdi fenc fileformat fkmap foldexpr foldopen fsync gfw guicursor guitabtooltip hidden hlg imactivatefunc imi inc inex isident keymap langnoremap linespace loadplugins ma matchtime mef mle modelineexpr mousehide mps nu opendevice paste pex pmbcs printdevice printoptions pw qe relativenumber rightleft rs runtimepath scr sect sft shellredir shiftwidth showmatch signcolumn smarttab sp spf srr startofline suffixes switchbuf ta tagfunc tbi term termwintype tgc titlelen toolbariconsize ttimeout ttymouse twt undofile varsofttabstop verbosefile viminfofile wak weirdinvert wig wildoptions winheight wm wrapscan
 syn keyword vimOption contained	ai anti autochdir backspace balloonevalterm bexpr bo browsedir casemap cfu cino cmp comments confirm cryptmethod cspc cul define diffopt ead ek equalalways ex fdl fencs fileformats flp foldignore foldtext ft ghr guifont helpfile highlight hls imactivatekey iminsert include inf isk keymodel langremap lisp lpl macatsui maxcombine menc mls modelines mousem msm number operatorfunc pastetoggle pexpr pmbfn printencoding prompt pythondll quoteescape remap rightleftcmd rtp sb scroll sections sh shellslash shm showmode siso smc spc spl ss statusline suffixesadd sws tabline taglength tbidi termbidi terse tgst titleold top ttimeoutlen ttyscroll tx undolevels vartabstop vfile virtualedit warn wfh wildchar wim winminheight wmh write
diff --git a/runtime/syntax/yaml.vim b/runtime/syntax/yaml.vim
index 626dc8a..49f7d04 100644
--- a/runtime/syntax/yaml.vim
+++ b/runtime/syntax/yaml.vim
@@ -3,6 +3,7 @@
 " Maintainer:       Nikolai Pavlov <zyx.vim@gmail.com>
 " First author:     Nikolai Weibull <now@bitwi.se>
 " Latest Revision:  2015-03-28
+" 		    removed duplicate yamlKeyValueDelimiter (pull #4799)
 
 if exists('b:current_syntax')
     finish
@@ -150,7 +151,6 @@
 syn match yamlBlockMappingMerge /<<\ze\s*:\%(\s\|$\)/ nextgroup=yamlKeyValueDelimiter contained
 
 syn match   yamlKeyValueDelimiter /\s*:/ contained
-syn match   yamlKeyValueDelimiter /\s*:/ contained
 
 syn cluster yamlScalarWithSpecials contains=yamlPlainScalar,yamlBlockMappingKey,yamlFlowMappingKey
 
diff --git a/runtime/vim.desktop b/runtime/vim.desktop
index ec7ece4..276ddc6 100644
--- a/runtime/vim.desktop
+++ b/runtime/vim.desktop
@@ -19,6 +19,7 @@
 # be overwritten by the po file when generating the desktop.file.
 GenericName[da]=Teksteditor
 GenericName[pl]=Edytor tekstu
+GenericName[sr]=Едитор текста
 GenericName[is]=Ritvinnsluforrit
 Comment[af]=Redigeer tekslêers
 Comment[am]=የጽሑፍ ፋይሎች ያስተካክሉ
diff --git a/src/po/de.po b/src/po/de.po
index edfa8f1..5a14f4a 100644
--- a/src/po/de.po
+++ b/src/po/de.po
@@ -11,7 +11,7 @@
 msgstr ""
 "Project-Id-Version: Vim\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2019-04-11 16:08+0200\n"
+"POT-Creation-Date: 2019-09-09 08:53+0200\n"
 "PO-Revision-Date: 2008-05-24 17:26+0200\n"
 "Last-Translator: Christian Brabandt <cb@256bit.org>\n"
 "Language-Team: German\n"
@@ -21,6 +21,18 @@
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
+msgid "E163: There is only one file to edit"
+msgstr "E163: Es gibt nur eine Datei zum Editieren."
+
+msgid "E164: Cannot go before first file"
+msgstr "E164: Kann nicht vor die erste Datei hinausgehen."
+
+msgid "E165: Cannot go beyond last file"
+msgstr "E165: Kann nicht über die letzte Datei hinausgehen"
+
+msgid "E249: window layout changed unexpectedly"
+msgstr "E249: Fensterlayout änderte sich unerwartet"
+
 msgid "--Deleted--"
 msgstr "--gelöscht--"
 
@@ -115,8 +127,9 @@
 msgid "E931: Buffer cannot be registered"
 msgstr "E931: Puffer kann nicht registriert werden."
 
-msgid "E937: Attempt to delete a buffer that is in use"
-msgstr "E937: Versuch, Puffer zu löschen, der noch benutzt wird."
+#, c-format
+msgid "E937: Attempt to delete a buffer that is in use: %s"
+msgstr "E937: Versuch, Puffer %s zu löschen, der noch benutzt wird."
 
 msgid "E515: No buffers were unloaded"
 msgstr "E515: Kein Puffer wurde entladen."
@@ -248,22 +261,21 @@
 msgid "Top"
 msgstr "Anfang"
 
-msgid ""
-"\n"
-"# Buffer list:\n"
-msgstr ""
-"\n"
-"# Liste der Puffer:\n"
-
 msgid "E382: Cannot write, 'buftype' option is set"
 msgstr "E382: Kann nicht schreiben, 'buftype'-Option ist gesetzt"
 
 msgid "[Prompt]"
 msgstr "[Prompt]"
 
+msgid "[Popup]"
+msgstr "[Popup]"
+
 msgid "[Scratch]"
 msgstr "[Scratch]"
 
+msgid "W10: Warning: Changing a readonly file"
+msgstr "W10: Achtung: Ändern einer schreibgeschützten Datei"
+
 msgid "E902: Cannot connect to port"
 msgstr "E902: Kann keine Verbindung zu Port herstellen."
 
@@ -286,6 +298,9 @@
 msgid "E905: received unknown command: %s"
 msgstr "E905: Unbekannter Befehl empfangen: %s."
 
+msgid "E906: not an open channel"
+msgstr "E906: Kein offener Channel"
+
 #, c-format
 msgid "E630: %s(): write while not connected"
 msgstr "E630: %s(): geschrieben ohne eine Verbindung hergestellt zu haben."
@@ -303,9 +318,6 @@
 "E912: Kann ch_evalexpr()/ch_sendexpr() nicht mit einem Raw oder NL Channel "
 "benutzen."
 
-msgid "E906: not an open channel"
-msgstr "E906: Kein offener Channel"
-
 msgid "E920: _io file requires _name to be set"
 msgstr "E920: Für _io Datei muss _name gesetzt ist."
 
@@ -316,6 +328,18 @@
 msgid "E918: buffer must be loaded: %s"
 msgstr "E918: Puffer muss geladen sein: %s."
 
+msgid "E916: not a valid job"
+msgstr "E916: kein gültiger Job"
+
+msgid "tagname"
+msgstr "Tag-Name"
+
+msgid " kind file\n"
+msgstr " Typ Datei\n"
+
+msgid "'history' option is zero"
+msgstr "Option 'history' ist Null"
+
 msgid "E821: File is encrypted with unknown method"
 msgstr "E821: Datei ist mit unbekannter Verschlüsselungsart verschlüsselt."
 
@@ -334,6 +358,51 @@
 msgid "[crypted]"
 msgstr "[verschlüsselt]"
 
+msgid "Entering Debug mode.  Type \"cont\" to continue."
+msgstr "Debug-Modus. Geben Sie \"cont\" zum Fortsetzen ein."
+
+#, c-format
+msgid "Oldval = \"%s\""
+msgstr "Alter Wert = \"%s\""
+
+#, c-format
+msgid "Newval = \"%s\""
+msgstr "Neuer Wert = \"%s\""
+
+#, c-format
+msgid "line %ld: %s"
+msgstr "Zeile %ld: %s"
+
+#, c-format
+msgid "cmd: %s"
+msgstr "Befehl: %s"
+
+msgid "frame is zero"
+msgstr "Frame ist Null"
+
+#, c-format
+msgid "frame at highest level: %d"
+msgstr "Frame auf letzter Ebene: %d"
+
+#, c-format
+msgid "Breakpoint in \"%s%s\" line %ld"
+msgstr "Haltepunkt in \"%s%s\" Zeile %ld"
+
+#, c-format
+msgid "E161: Breakpoint not found: %s"
+msgstr "E161: Haltepunkt nicht gefunden: %s"
+
+msgid "No breakpoints defined"
+msgstr "Keine Haltepunkte definiert"
+
+#, c-format
+msgid "%3d  %s %s  line %ld"
+msgstr "%3d  %s %s  Zeile %ld"
+
+#, c-format
+msgid "%3d  expr %s"
+msgstr "%3d expr %s"
+
 #, c-format
 msgid "E720: Missing colon in Dictionary: %s"
 msgstr "E720: Fehlender Doppelpunkt im Dictionary: %s"
@@ -498,45 +567,17 @@
 msgid "E791: Empty keymap entry"
 msgstr "E791: Leerer keymap Eintrag"
 
-msgid "E18: Unexpected characters in :let"
-msgstr "E18: Unerwartete Zeichen in :let"
-
-#, c-format
-msgid "E121: Undefined variable: %s"
-msgstr "E121: Undefinierte Variable: %s"
-
 msgid "E111: Missing ']'"
 msgstr "E111: Fehlende ']'"
 
 msgid "E719: Cannot use [:] with a Dictionary"
 msgstr "E719: Kann [:] nicht mit einem Dictionary verwenden"
 
-#, c-format
-msgid "E734: Wrong variable type for %s="
-msgstr "E734: Falscher Variablentyp für %s="
-
-#, c-format
-msgid "E461: Illegal variable name: %s"
-msgstr "E461: Unzulässiger Variablenname: %s"
-
 msgid "E806: using Float as a String"
 msgstr "E806: Float als String benutzt."
 
-msgid "E985: .= is not supported with script version 2"
-msgstr "E985: .= wird mit Scriptversion 2 nicht mehr unterstützt."
-
-msgid "E687: Less targets than List items"
-msgstr "E687: Weniger Ziele als Einträge in der Liste."
-
-msgid "E688: More targets than List items"
-msgstr "E688: Mehr Ziele als Einträge in der Liste."
-
-msgid "Double ; in list of variables"
-msgstr "Doppeltes ; in der Liste von Variablen"
-
-#, c-format
-msgid "E738: Can't list variables for %s"
-msgstr "E738: Kann Variablen nicht auflisten: %s"
+msgid "E274: No white space allowed before parenthesis"
+msgstr "E274: Keine Leerzeichen vor Klammern erlaubt"
 
 msgid "E689: Can only index a List, Dictionary or Blob"
 msgstr "E689: Kann nur Listen, Dictionary oder Blob indizieren"
@@ -550,26 +591,21 @@
 msgid "E972: Blob value does not have the right number of bytes"
 msgstr "E972: Blobwert hat nicht die richtige Anzahl an Bytes"
 
+msgid "E996: Cannot lock a range"
+msgstr "E996: Kann Bereich nicht sperren"
+
 msgid "E710: List value has more items than target"
 msgstr "E710: Listenwert hat mehr Einträge als das Ziel."
 
 msgid "E711: List value has not enough items"
 msgstr "E711: Listenwert hat nicht genügend Einträge."
 
+msgid "E996: Cannot lock a list or dict"
+msgstr "E996: Kann List oder Dictionary nicht sperren"
+
 msgid "E690: Missing \"in\" after :for"
 msgstr "E690: Fehlendes \"in\" nach :for"
 
-#, c-format
-msgid "E108: No such variable: \"%s\""
-msgstr "E108: Keine solche Variable: \"%s\""
-
-#, c-format
-msgid "E940: Cannot lock or unlock variable %s"
-msgstr "E940: Kann Variable \"%s\" nicht sperren bzw. entsperren."
-
-msgid "E743: variable nested too deep for (un)lock"
-msgstr "E743: Variable ist zu tief verschachtelt zum (ent)sperren."
-
 msgid "E109: Missing ':' after '?'"
 msgstr "E109: Fehlender ':' nach '?'"
 
@@ -582,6 +618,9 @@
 msgid "E110: Missing ')'"
 msgstr "E110: Fehlendes ')'"
 
+msgid "E260: Missing name after ->"
+msgstr "E260: Fehlende Name nach ->"
+
 msgid "E695: Cannot index a Funcref"
 msgstr "E695: Kann keine Funktionsreferenz indizieren."
 
@@ -672,46 +711,11 @@
 msgid "E908: using an invalid value as a String"
 msgstr "E908: Ungültiger Wert als String verwendet."
 
-#, c-format
-msgid "E963: setting %s to value with wrong type"
-msgstr "E963: %s auf Wert mit falschem Typ gesetzt"
-
-#, c-format
-msgid "E795: Cannot delete variable %s"
-msgstr "E795: Kann Variable nicht löschen: %s"
-
-#, c-format
-msgid "E704: Funcref variable name must start with a capital: %s"
-msgstr ""
-"E704: Funktionsreferenz-Variable muss mit einem Großbuchstaben beginnen: %s"
-
-#, c-format
-msgid "E705: Variable name conflicts with existing function: %s"
-msgstr "E705: Konflikt eines Variablennamens mit bestehender Funktion: %s"
-
-#, c-format
-msgid "E741: Value is locked: %s"
-msgstr "E741: Wert ist gesperrt: %s"
-
-msgid "Unknown"
-msgstr "Unbekannt"
-
-#, c-format
-msgid "E742: Cannot change value of %s"
-msgstr "E742: Kann Wert nicht ändern: %s"
-
 msgid "E698: variable nested too deep for making a copy"
 msgstr "E698: Variable ist zu tief verschachtelt für eine Kopie"
 
 msgid ""
 "\n"
-"# global variables:\n"
-msgstr ""
-"\n"
-"# globale Variablen:\n"
-
-msgid ""
-"\n"
 "\tLast set from "
 msgstr ""
 "\n"
@@ -745,19 +749,9 @@
 msgstr "filter() Argument"
 
 #, c-format
-msgid "E686: Argument of %s must be a List"
-msgstr "E686: Argument von %s muss eine Liste sein."
-
-#, c-format
 msgid "E899: Argument of %s must be a List or Blob"
 msgstr "E899: Argument von %s muss eine Liste oder ein Blob sein."
 
-msgid "E928: String required"
-msgstr "E928: String wird benötigt."
-
-msgid "E957: Invalid window number"
-msgstr "E957: Ungültige Fensternummer"
-
 msgid "E808: Number or Float required"
 msgstr "E808: Zahl oder Float benötigt."
 
@@ -768,9 +762,6 @@
 msgid "E158: Invalid buffer name: %s"
 msgstr "E158: ungültige Puffernummer: %s"
 
-msgid "E785: complete() can only be used in Insert mode"
-msgstr "E785: complete() kann nur im Einfüge-Modus verwendet werden."
-
 msgid "&Ok"
 msgstr "&Ok"
 
@@ -778,12 +769,6 @@
 msgstr "E980: Low-Level Eingabe wird nicht unterstützt"
 
 #, c-format
-msgid "+-%s%3ld line: "
-msgid_plural "+-%s%3ld lines: "
-msgstr[0] "+-%s%3ld Zeile: "
-msgstr[1] "+-%s%3ld Zeilen: "
-
-#, c-format
 msgid "E700: Unknown function: %s"
 msgstr "E700: Unbekannte Funktion: %s"
 
@@ -811,16 +796,9 @@
 msgid "E786: Range not allowed"
 msgstr "E786: Bereich nicht erlaubt"
 
-msgid "E916: not a valid job"
-msgstr "E916: kein gültiger Job"
-
 msgid "E701: Invalid type for len()"
 msgstr "E701: Unzulässiger Typ für len()"
 
-#, c-format
-msgid "E798: ID is reserved for \":match\": %d"
-msgstr "E798: ID ist für \":match\" reserviert: %d"
-
 msgid "E726: Stride is zero"
 msgstr "E726: Stride ist Null"
 
@@ -859,25 +837,9 @@
 msgstr "E258: Kann nicht zum Client senden."
 
 #, c-format
-msgid "E927: Invalid action: '%s'"
-msgstr "E927: Ungültige Aktion '%s'"
-
-#, c-format
 msgid "E962: Invalid action: '%s'"
 msgstr "E962: Ungültige Aktion '%s'"
 
-msgid "sort() argument"
-msgstr "sort() Argument"
-
-msgid "uniq() argument"
-msgstr "uniq() Argument"
-
-msgid "E702: Sort compare function failed"
-msgstr "E702: Die Vergleichsfunktion der Sortierung ist fehlgeschlagen."
-
-msgid "E882: Uniq compare function failed"
-msgstr "E882: Die Uniq Vergleichsfunktion ist fehlgeschlagen."
-
 msgid "(Invalid)"
 msgstr "(Ungültig)"
 
@@ -891,6 +853,86 @@
 msgid "E921: Invalid callback argument"
 msgstr "E921: Ungülgültiges Callback Argument"
 
+msgid "E18: Unexpected characters in :let"
+msgstr "E18: Unerwartete Zeichen in :let"
+
+msgid "E991: cannot use =<< here"
+msgstr "E991: =<< kann hier nicht genutzt werden"
+
+msgid "E221: Marker cannot start with lower case letter"
+msgstr "E221: Markierung darf nicht mit Kleinbuchstaben beginnen."
+
+msgid "E172: Missing marker"
+msgstr "E172: Fehlende Markierung"
+
+#, c-format
+msgid "E990: Missing end marker '%s'"
+msgstr "E990: Fehlende Endmarkierung nach '%s'"
+
+msgid "E985: .= is not supported with script version 2"
+msgstr "E985: .= wird mit Scriptversion 2 nicht mehr unterstützt."
+
+msgid "E687: Less targets than List items"
+msgstr "E687: Weniger Ziele als Einträge in der Liste."
+
+msgid "E688: More targets than List items"
+msgstr "E688: Mehr Ziele als Einträge in der Liste."
+
+msgid "Double ; in list of variables"
+msgstr "Doppeltes ; in der Liste von Variablen"
+
+#, c-format
+msgid "E738: Can't list variables for %s"
+msgstr "E738: Kann Variablen nicht auflisten: %s"
+
+msgid "E996: Cannot lock an environment variable"
+msgstr "E996: Kann Umgebungsvariable nicht sperren"
+
+msgid "E996: Cannot lock an option"
+msgstr "E996: Kann Option nicht sperren"
+
+msgid "E996: Cannot lock a register"
+msgstr "E996: Kann Register nicht sperren"
+
+#, c-format
+msgid "E108: No such variable: \"%s\""
+msgstr "E108: Keine solche Variable: \"%s\""
+
+#, c-format
+msgid "E940: Cannot lock or unlock variable %s"
+msgstr "E940: Kann Variable \"%s\" nicht sperren bzw. entsperren."
+
+msgid "E743: variable nested too deep for (un)lock"
+msgstr "E743: Variable ist zu tief verschachtelt zum (ent)sperren."
+
+#, c-format
+msgid "E963: setting %s to value with wrong type"
+msgstr "E963: %s auf Wert mit falschem Typ gesetzt"
+
+#, c-format
+msgid "E795: Cannot delete variable %s"
+msgstr "E795: Kann Variable nicht löschen: %s"
+
+#, c-format
+msgid "E704: Funcref variable name must start with a capital: %s"
+msgstr ""
+"E704: Funktionsreferenz-Variable muss mit einem Großbuchstaben beginnen: %s"
+
+#, c-format
+msgid "E705: Variable name conflicts with existing function: %s"
+msgstr "E705: Konflikt eines Variablennamens mit bestehender Funktion: %s"
+
+#, c-format
+msgid "E741: Value is locked: %s"
+msgstr "E741: Wert ist gesperrt: %s"
+
+msgid "Unknown"
+msgstr "Unbekannt"
+
+#, c-format
+msgid "E742: Cannot change value of %s"
+msgstr "E742: Kann Wert nicht ändern: %s"
+
 #, c-format
 msgid "<%s>%s%s  %d,  Hex %02x,  Oct %03o, Digr %s"
 msgstr "<%s>%s%s  %d,  Hex %02x,  Oktal %03o, Digr %s"
@@ -934,73 +976,6 @@
 msgid "[No write since last change]\n"
 msgstr "[Nicht geschrieben seit der letzten Änderung]\n"
 
-#, c-format
-msgid "%sviminfo: %s in line: "
-msgstr "%sviminfo: %s in Zeile: "
-
-msgid "E136: viminfo: Too many errors, skipping rest of file"
-msgstr "E136: viminfo: Zu viele Fehler; überspringe Rest der Datei"
-
-#, c-format
-msgid "Reading viminfo file \"%s\"%s%s%s"
-msgstr "Lesen der viminfo-Datei \"%s\"%s%s%s"
-
-msgid " info"
-msgstr " Information"
-
-msgid " marks"
-msgstr " Markierungen"
-
-msgid " oldfiles"
-msgstr " oldfiles"
-
-msgid " FAILED"
-msgstr " FEHLGESCHLAGEN"
-
-#, c-format
-msgid "E137: Viminfo file is not writable: %s"
-msgstr "E137: Viminfo-Datei ist nicht schreibbar: %s"
-
-#, c-format
-msgid "E929: Too many viminfo temp files, like %s!"
-msgstr "E929: Zu viele temporäre viminfo Dateien (wie %s)!"
-
-#, c-format
-msgid "E138: Can't write viminfo file %s!"
-msgstr "E138: Schreiben der viminfo-Datei %s ist nicht möglich!"
-
-#, c-format
-msgid "Writing viminfo file \"%s\""
-msgstr "Schreiben der viminfo-Datei \"%s\""
-
-#, c-format
-msgid "E886: Can't rename viminfo file to %s!"
-msgstr "E886: Kann viminfo Datei nicht in %s umbenennen!"
-
-#, c-format
-msgid "# This viminfo file was generated by Vim %s.\n"
-msgstr "# Diese viminfo-Datei wurde von Vim %s generiert.\n"
-
-msgid ""
-"# You may edit it if you're careful!\n"
-"\n"
-msgstr ""
-"# Sie können sie verändern, wenn Sie vorsichtig vorgehen!\n"
-"\n"
-
-msgid "# Value of 'encoding' when this file was written\n"
-msgstr "# Wert von 'encoding', als diese Datei geschrieben wurde\n"
-
-msgid "Illegal starting char"
-msgstr "Unzulässiges Zeichen am Anfang"
-
-msgid ""
-"\n"
-"# Bar lines, copied verbatim:\n"
-msgstr ""
-"\n"
-"# |-Zeilen, wortwörtlich kopiert:\n"
-
 msgid "Save As"
 msgstr "Speichern als"
 
@@ -1064,7 +1039,8 @@
 msgstr "E144: Nicht-numerisches Argument für :z"
 
 msgid "E145: Shell commands and some functionality not allowed in rvim"
-msgstr "E145: Shell-Befehle und andere Funktionalitäten sind in rvim nicht erlaubt."
+msgstr ""
+"E145: Shell-Befehle und andere Funktionalitäten sind in rvim nicht erlaubt."
 
 msgid "E146: Regular expressions can't be delimited by letters"
 msgstr ""
@@ -1115,15 +1091,6 @@
 msgid "Pattern not found: %s"
 msgstr "Muster nicht gefunden: %s"
 
-msgid ""
-"\n"
-"# Last Substitute String:\n"
-"$"
-msgstr ""
-"\n"
-"# Letzte ersetzte Zeichenkette:\n"
-"$"
-
 msgid "E478: Don't panic!"
 msgstr "E478: Nur keine Panik!"
 
@@ -1167,54 +1134,6 @@
 msgid "No old files"
 msgstr "Keine Alt-Dateien"
 
-msgid "Entering Debug mode.  Type \"cont\" to continue."
-msgstr "Debug-Modus. Geben Sie \"cont\" zum Fortsetzen ein."
-
-#, c-format
-msgid "Oldval = \"%s\""
-msgstr "Alter Wert = \"%s\""
-
-#, c-format
-msgid "Newval = \"%s\""
-msgstr "Neuer Wert = \"%s\""
-
-#, c-format
-msgid "line %ld: %s"
-msgstr "Zeile %ld: %s"
-
-#, c-format
-msgid "cmd: %s"
-msgstr "Befehl: %s"
-
-msgid "frame is zero"
-msgstr "Frame ist Null"
-
-#, c-format
-msgid "frame at highest level: %d"
-msgstr "Frame auf letzter Ebene: %d"
-
-#, c-format
-msgid "Breakpoint in \"%s%s\" line %ld"
-msgstr "Haltepunkt in \"%s%s\" Zeile %ld"
-
-#, c-format
-msgid "E161: Breakpoint not found: %s"
-msgstr "E161: Haltepunkt nicht gefunden: %s"
-
-msgid "No breakpoints defined"
-msgstr "Keine Haltepunkte definiert"
-
-#, c-format
-msgid "%3d  %s %s  line %ld"
-msgstr "%3d  %s %s  Zeile %ld"
-
-#, c-format
-msgid "%3d  expr %s"
-msgstr "%3d expr %s"
-
-msgid "E750: First use \":profile start {fname}\""
-msgstr "E750: Benutze vorher :profile start <fname>"
-
 #, c-format
 msgid "Save changes to \"%s\"?"
 msgstr "Änderungen in \"%s\" speichern?"
@@ -1232,32 +1151,11 @@
 "Achtung: Unerwartetet einen andren Puffer geöffnet (überprüfen Sie die "
 "Autokommandos)"
 
-msgid "E163: There is only one file to edit"
-msgstr "E163: Es gibt nur eine Datei zum Editieren."
-
-msgid "E164: Cannot go before first file"
-msgstr "E164: Kann nicht vor die erste Datei hinausgehen."
-
-msgid "E165: Cannot go beyond last file"
-msgstr "E165: Kann nicht über die letzte Datei hinausgehen"
-
 #, c-format
 msgid "E666: compiler not supported: %s"
 msgstr "E666: Compiler nicht unterstützt: %s"
 
 #, c-format
-msgid "Searching for \"%s\" in \"%s\""
-msgstr "Suche nach \"%s\" in \"%s\""
-
-#, c-format
-msgid "Searching for \"%s\""
-msgstr "Suche nach \"%s\""
-
-#, c-format
-msgid "not found in '%s': \"%s\""
-msgstr "in '%s' nicht gefunden: \"%s\""
-
-#, c-format
 msgid "W20: Required python version 2.x not supported, ignoring file: %s"
 msgstr ""
 "W20: Erforderliche Python Version 2.x nicht unterstützt, ignoriere Datei: %s"
@@ -1267,68 +1165,6 @@
 msgstr ""
 "W21: Erforderliche Python Version 3.x nicht unterstützt, ignoriere Datei: %s"
 
-msgid "Source Vim script"
-msgstr "Lese Vim-Skript"
-
-#, c-format
-msgid "Cannot source a directory: \"%s\""
-msgstr "Kann kein Verzeichnis einlesen: \"%s\""
-
-#, c-format
-msgid "could not source \"%s\""
-msgstr "\"%s\" konnte nicht gelesen werden"
-
-#, c-format
-msgid "line %ld: could not source \"%s\""
-msgstr "Zeile %ld: \"%s\" konnte nicht gelesen werden"
-
-#, c-format
-msgid "sourcing \"%s\""
-msgstr "lese \"%s\""
-
-#, c-format
-msgid "line %ld: sourcing \"%s\""
-msgstr "Zeile %ld: lese \"%s\""
-
-#, c-format
-msgid "finished sourcing %s"
-msgstr "Lesen von %s beendet"
-
-#, c-format
-msgid "continuing in %s"
-msgstr "weiter in %s"
-
-msgid "modeline"
-msgstr "modeline"
-
-msgid "--cmd argument"
-msgstr "--cmd Argument"
-
-msgid "-c argument"
-msgstr "-c Argument"
-
-msgid "environment variable"
-msgstr "Umgebungsvariable"
-
-msgid "error handler"
-msgstr "Error-Handler"
-
-msgid "W15: Warning: Wrong line separator, ^M may be missing"
-msgstr "W15: Achtung: Falscher Zeilentrenner, vielleicht fehlt ein ^M"
-
-msgid "E167: :scriptencoding used outside of a sourced file"
-msgstr "E167: :scriptencoding außerhalb einer eingelesenen Datei"
-
-msgid "E984: :scriptversion used outside of a sourced file"
-msgstr "E984: :scriptversion außerhalb einer eingelesenen Datei"
-
-#, c-format
-msgid "E999: scriptversion not supported: %d"
-msgstr "E999: scriptversion nicht unterstützt: %d"
-
-msgid "E168: :finish used outside of a sourced file"
-msgstr "E168: :finish außerhalb einer eingelesenen Datei"
-
 #, c-format
 msgid "Current %slanguage: \"%s\""
 msgstr "Momentane %sSprache: \"%s\""
@@ -1375,6 +1211,12 @@
 msgid "E494: Use w or w>>"
 msgstr "E494: Verwenden Sie w oder w>>"
 
+msgid ""
+"INTERNAL: Cannot use EX_DFLALL with ADDR_NONE, ADDR_UNSIGNED or ADDR_QUICKFIX"
+msgstr ""
+"INTERN: Kann EX_DFLALL nicht zusammen mit ADDR_NONE, ADDR_UNSIGNED "
+"oder ADDR_QUICKFIX nutzen"
+
 msgid "E943: Command table needs to be updated, run 'make cmdidxs'"
 msgstr ""
 "E943: Befehlstabelle muss aktualisiert werden, führe 'make cmdidxs' aus"
@@ -1394,75 +1236,6 @@
 msgstr[0] "E173: %d weitere Datei zum Editieren"
 msgstr[1] "E173: %d weitere Dateien zum Editieren"
 
-#, c-format
-msgid "E174: Command already exists: add ! to replace it: %s"
-msgstr "E174: Befehl '%s' existiert bereits: ! zum Ersetzen hinzufügen"
-
-msgid ""
-"\n"
-"    Name        Args       Address   Complete  Definition"
-msgstr ""
-"\n"
-"    Name        Args       Adresse Vervollständigung Definition"
-
-msgid "No user-defined commands found"
-msgstr "Keine vom Benutzer definierten Befehle gefunden"
-
-msgid "E175: No attribute specified"
-msgstr "E175: Kein Attribut angegeben"
-
-msgid "E176: Invalid number of arguments"
-msgstr "E176: Falsche Anzahl von Argumenten"
-
-msgid "E177: Count cannot be specified twice"
-msgstr "E177: Zähler kann nicht zweimal angegeben werden"
-
-msgid "E178: Invalid default value for count"
-msgstr "E178: Ungültige Voreinstellung für den Zähler"
-
-msgid "E179: argument required for -complete"
-msgstr "E179: Argument benötigt für -complete"
-
-msgid "E179: argument required for -addr"
-msgstr "E179: Argument benötigt für -addr"
-
-#, c-format
-msgid "E181: Invalid attribute: %s"
-msgstr "E181: Ungültiges Attribut: %s"
-
-msgid "E182: Invalid command name"
-msgstr "E182: Ungültiger Befehls-Name"
-
-msgid "E183: User defined commands must start with an uppercase letter"
-msgstr "E183: Benutzerdefinierte Befehle müssen mit Großbuchstaben beginnen."
-
-msgid "E841: Reserved name, cannot be used for user defined command"
-msgstr ""
-"E841: Reservierter Name kann nicht für benutzerdefinierten Befehl verwendet "
-"werden."
-
-#, c-format
-msgid "E184: No such user-defined command: %s"
-msgstr "E184: Unbekannter benutzerdefinierter Befehl: %s"
-
-#, c-format
-msgid "E180: Invalid address type value: %s"
-msgstr "E180: Ungültiger Adresstyp: %s"
-
-#, c-format
-msgid "E180: Invalid complete value: %s"
-msgstr "E180: Ungültiger Wert der Vervollständigung: %s"
-
-msgid "E468: Completion argument only allowed for custom completion"
-msgstr ""
-"E468: Argument für Vervollständigung nur für benutzerdefinierte "
-"Vervollständigung erlaubt."
-
-msgid "E467: Custom completion requires a function argument"
-msgstr ""
-"E467: Benutzerdefinierte Vervollständigung benötigt eine Funktion als "
-"Argument."
-
 msgid "unknown"
 msgstr "unbekannt"
 
@@ -1527,15 +1300,6 @@
 msgid "Save Redirection"
 msgstr "Umleitung Speichern"
 
-msgid "Save View"
-msgstr "Ansichten Speichern"
-
-msgid "Save Session"
-msgstr "Sitzung Speichern"
-
-msgid "Save Setup"
-msgstr "Einstellungen Speichern"
-
 #, c-format
 msgid "E739: Cannot create directory: %s"
 msgstr "E739: Kann Verzeichnis nicht erstellen: %s"
@@ -1588,9 +1352,6 @@
 msgid "E500: Evaluates to an empty string"
 msgstr "E500: Ergibt eine leere Zeichenkette"
 
-msgid "E195: Cannot open viminfo file for reading"
-msgstr "E195: viminfo kann nicht zum Lesen geöffnet werden."
-
 msgid "Untitled"
 msgstr "Unbenannt"
 
@@ -1704,38 +1465,6 @@
 msgid "E811: Not allowed to change buffer information now"
 msgstr "E811: Puffer Information darf momentan nicht geändert werden."
 
-msgid "tagname"
-msgstr "Tag-Name"
-
-msgid " kind file\n"
-msgstr " Typ Datei\n"
-
-msgid "'history' option is zero"
-msgstr "Option 'history' ist Null"
-
-#, c-format
-msgid ""
-"\n"
-"# %s History (newest to oldest):\n"
-msgstr ""
-"\n"
-"# %s Geschichte (neueste bis älteste):\n"
-
-msgid "Command Line"
-msgstr "Befehlszeile"
-
-msgid "Search String"
-msgstr "Suchausdruck"
-
-msgid "Expression"
-msgstr "Ausdruck"
-
-msgid "Input Line"
-msgstr "Eingabe-Zeile"
-
-msgid "Debug Line"
-msgstr "Debug-Zeile"
-
 msgid "E199: Active window or buffer deleted"
 msgstr "E199: Aktives Fenster oder Puffer gelöscht"
 
@@ -2115,37 +1844,18 @@
 msgstr[0] "%3ld Zeile gefaltet "
 msgstr[1] "%3ld Zeilen gefaltet "
 
+#, c-format
+msgid "+-%s%3ld line: "
+msgid_plural "+-%s%3ld lines: "
+msgstr[0] "+-%s%3ld Zeile: "
+msgstr[1] "+-%s%3ld Zeilen: "
+
 msgid "E222: Add to read buffer"
 msgstr "E222: Zum Lesepuffer hinzufügen"
 
 msgid "E223: recursive mapping"
 msgstr "E223: rekursives Mapping"
 
-#, c-format
-msgid "E224: global abbreviation already exists for %s"
-msgstr "E224: Globale Kurzform für %s existiert bereits"
-
-#, c-format
-msgid "E225: global mapping already exists for %s"
-msgstr "E225: Globales Mapping für %s existiert bereits"
-
-#, c-format
-msgid "E226: abbreviation already exists for %s"
-msgstr "E226: Kurzform %s existiert bereits"
-
-#, c-format
-msgid "E227: mapping already exists for %s"
-msgstr "E227: Mapping für %s existiert bereits"
-
-msgid "No abbreviation found"
-msgstr "Keine Kurzform gefunden"
-
-msgid "No mapping found"
-msgstr "Kein Mapping gefunden"
-
-msgid "E228: makemap: Illegal mode"
-msgstr "E228: makemap: Unzulässiger Modus"
-
 msgid "E851: Failed to create a new process for the GUI"
 msgstr "E851: Erstellung des GUI-Prozesses fehlgeschlagen"
 
@@ -2352,6 +2062,9 @@
 msgstr ""
 "E243: Argument wird nicht unterstützt: \"-%s\"; verwende die OLE Version."
 
+msgid "E988: GUI cannot be used. Cannot execute gvim.exe."
+msgstr "E988: GUI kann nicht benutzt werden: Kann gvim.exe nicht ausführen."
+
 msgid "E672: Unable to open window inside MDI application"
 msgstr "E672: Kann Fenster nicht innerhalb einer MDI Anwendung öffnen"
 
@@ -2524,6 +2237,93 @@
 msgid "Print job sent."
 msgstr "Druckauftrag abgeschickt"
 
+msgid "E679: recursive loop loading syncolor.vim"
+msgstr "E679: Rekursive Schleife beim Laden von syncolor.vim"
+
+#, c-format
+msgid "E411: highlight group not found: %s"
+msgstr "E411: Hervorhebungsgruppe nicht gefunden: %s"
+
+#, c-format
+msgid "E412: Not enough arguments: \":highlight link %s\""
+msgstr "E412: Nicht genügend Argumente: \":highlight link %s\""
+
+#, c-format
+msgid "E413: Too many arguments: \":highlight link %s\""
+msgstr "E413: Zu viele Argumente: \":highlight link %s\""
+
+msgid "E414: group has settings, highlight link ignored"
+msgstr "E414: Gruppe hat Einstellungen, highlight link ignoriert"
+
+#, c-format
+msgid "E415: unexpected equal sign: %s"
+msgstr "E415: Unerwartetes Gleichheitszeichen: %s"
+
+#, c-format
+msgid "E416: missing equal sign: %s"
+msgstr "E416: fehlendes Gleichheitszeichen: %s"
+
+#, c-format
+msgid "E417: missing argument: %s"
+msgstr "E417: Fehlendes Argument: %s"
+
+#, c-format
+msgid "E418: Illegal value: %s"
+msgstr "E418: Unzulässiger Wert: %s"
+
+msgid "E419: FG color unknown"
+msgstr "E419: Vordergrundfarbe unbekannt"
+
+msgid "E420: BG color unknown"
+msgstr "E420: Hintergrundfarbe unbekannt"
+
+#, c-format
+msgid "E421: Color name or number not recognized: %s"
+msgstr "E421: Unbekannte Farbbezeichnung oder -Nummer: %s"
+
+#, c-format
+msgid "E422: terminal code too long: %s"
+msgstr "E422: Terminal-Code zu lang: %s"
+
+#, c-format
+msgid "E423: Illegal argument: %s"
+msgstr "E423: Unzulässiges Argument: %s"
+
+msgid "E424: Too many different highlighting attributes in use"
+msgstr "E424: Zu viele verschieden Hervorhebungsattribute in Gebrauch"
+
+msgid "E669: Unprintable character in group name"
+msgstr "E669: Nicht druckbare Zeichen im Namen der Gruppe"
+
+msgid "W18: Invalid character in group name"
+msgstr "W18: Ungültiges Zeichen im Namen der Gruppe"
+
+msgid "E849: Too many highlight and syntax groups"
+msgstr "E849: Zu viele Highlight- und Syntaxgruppen"
+
+#, c-format
+msgid "E799: Invalid ID: %d (must be greater than or equal to 1)"
+msgstr "E799: Ungültige ID: %d (muss größer gleich 1 sein)"
+
+#, c-format
+msgid "E801: ID already taken: %d"
+msgstr "E801: ID bereits benutzt: %d"
+
+msgid "List or number required"
+msgstr "Liste oder Nummer erforderlich"
+
+#, c-format
+msgid "E802: Invalid ID: %d (must be greater than or equal to 1)"
+msgstr "E802: Ungültige ID: %d (muss größer gleich 1 sein)"
+
+#, c-format
+msgid "E803: ID not found: %d"
+msgstr "E803: ID nicht gefunden: %d"
+
+#, c-format
+msgid "E798: ID is reserved for \":match\": %d"
+msgstr "E798: ID ist für \":match\" reserviert: %d"
+
 msgid "Add a new database"
 msgstr "Eine neue Datenbank hinzufügen"
 
@@ -2963,6 +2763,9 @@
 msgid " (replace) Scroll (^E/^Y)"
 msgstr " (Ersetzen) Scrollen (^E/^Y)"
 
+msgid "E785: complete() can only be used in Insert mode"
+msgstr "E785: complete() kann nur im Einfüge-Modus verwendet werden."
+
 #, c-format
 msgid "Scanning: %s"
 msgstr "Durchsuche: %s"
@@ -3008,6 +2811,18 @@
 msgid "E697: Missing end of List ']': %s"
 msgstr "E697: Fehlendes Ende der Liste ']': %s"
 
+msgid "sort() argument"
+msgstr "sort() Argument"
+
+msgid "uniq() argument"
+msgstr "uniq() Argument"
+
+msgid "E702: Sort compare function failed"
+msgstr "E702: Die Vergleichsfunktion der Sortierung ist fehlgeschlagen."
+
+msgid "E882: Uniq compare function failed"
+msgstr "E882: Die Uniq Vergleichsfunktion ist fehlgeschlagen."
+
 msgid "Unknown option argument"
 msgstr "Unbekanntes Optionsargument"
 
@@ -3459,6 +3274,39 @@
 msgid ": Send expression failed.\n"
 msgstr ": Versenden des Ausdrucks fehlgeschlagen.\n"
 
+#, c-format
+msgid "E224: global abbreviation already exists for %s"
+msgstr "E224: Globale Kurzform für %s existiert bereits"
+
+#, c-format
+msgid "E225: global mapping already exists for %s"
+msgstr "E225: Globales Mapping für %s existiert bereits"
+
+#, c-format
+msgid "E226: abbreviation already exists for %s"
+msgstr "E226: Kurzform %s existiert bereits"
+
+#, c-format
+msgid "E227: mapping already exists for %s"
+msgstr "E227: Mapping für %s existiert bereits"
+
+msgid "No abbreviation found"
+msgstr "Keine Kurzform gefunden"
+
+msgid "No mapping found"
+msgstr "Kein Mapping gefunden"
+
+msgid "E228: makemap: Illegal mode"
+msgstr "E228: makemap: Unzulässiger Modus"
+
+#, c-format
+msgid "E357: 'langmap': Matching character missing for %s"
+msgstr "E357: 'langmap': Passendes Zeichen fehlt für %s"
+
+#, c-format
+msgid "E358: 'langmap': Extra characters after semicolon: %s"
+msgstr "E358: 'langmap': Überschüssige Zeichen nach dem Semikolon: %s"
+
 msgid "No marks set"
 msgstr "Keine Markierungen gesetzt"
 
@@ -3487,30 +3335,6 @@
 "\n"
 "Änder. Zeile Sp  Text"
 
-msgid ""
-"\n"
-"# File marks:\n"
-msgstr ""
-"\n"
-"# Datei-Markierungen:\n"
-
-msgid ""
-"\n"
-"# Jumplist (newest first):\n"
-msgstr ""
-"\n"
-"# Jumplist (neueste zuerst):\n"
-
-msgid ""
-"\n"
-"# History of marks within files (newest to oldest):\n"
-msgstr ""
-"\n"
-"# Geschichte der Markierungen innerhalb von Dateien (neueste zuerst):\n"
-
-msgid "Missing '>'"
-msgstr "'>' fehlt"
-
 msgid "E543: Not a valid codepage"
 msgstr "E543: Keine zulässige Codepage"
 
@@ -3768,6 +3592,10 @@
 msgid "      -- none --\n"
 msgstr "      -- Nichts --\n"
 
+# no-c-format
+msgid "%a %b %d %H:%M:%S %Y"
+msgstr "%a, %d %b %Y %H:%M:%S"
+
 msgid "          owned by: "
 msgstr "      Eigentum von: "
 
@@ -3897,7 +3725,7 @@
 msgstr "E323: Zeilenanzahl falsch in Block %ld"
 
 msgid "Stack size increases"
-msgstr "Stapel Größe wächst"
+msgstr "Stack Größe wächst"
 
 msgid "E317: pointer block id wrong 2"
 msgstr "E317: Zeiger Block id falsch 2"
@@ -3961,6 +3789,9 @@
 "\"\n"
 "    um diese Nachricht zu vermeiden.\n"
 
+msgid "Found a swap file that is not useful, deleting it"
+msgstr "Auslagerungsdatei gefunden, die nicht nutzbar ist. Lösche diese"
+
 msgid "Swap file \""
 msgstr "Auslagerungsdatei \""
 
@@ -4128,9 +3959,6 @@
 msgid "E767: Too many arguments to printf()"
 msgstr "E767: Zu viele Argumente für printf()"
 
-msgid "W10: Warning: Changing a readonly file"
-msgstr "W10: Achtung: Ändern einer schreibgeschützten Datei"
-
 msgid "Type number and <Enter> or click with mouse (empty cancels): "
 msgstr ""
 "Bitte Nummer und <Enter> eingeben oder mit der Maus auswählen (abbrechen mit "
@@ -4177,12 +4005,8 @@
 "[Aufrufe] gesamt re/malloc()s %lu, gesamt free()s %lu\n"
 "\n"
 
-msgid "E340: Line is becoming too long"
-msgstr "E340: Zeile wird zu lang"
-
-#, c-format
-msgid "E341: Internal error: lalloc(%ld, )"
-msgstr "E341: Interner Fehler: lalloc(%ld, )"
+msgid "E341: Internal error: lalloc(0, )"
+msgstr "E341: Interner Fehler: lalloc(0, )"
 
 #, c-format
 msgid "E342: Out of memory!  (allocating %lu bytes)"
@@ -4330,20 +4154,6 @@
 "\n"
 "--- Register ---"
 
-msgid "Illegal register name"
-msgstr "Unzulässiger Register Name"
-
-msgid ""
-"\n"
-"# Registers:\n"
-msgstr ""
-"\n"
-"# Register:\n"
-
-#, c-format
-msgid "E574: Unknown register type %d"
-msgstr "E574: Unbekannter Register Typ %d"
-
 msgid ""
 "E883: search pattern and expression register may not contain two or more "
 "lines"
@@ -4397,6 +4207,11 @@
 msgid "E520: Not allowed in a modeline"
 msgstr "E520: Nicht erlaubt in einer Modeline"
 
+msgid "E992: Not allowed in a modeline when 'modelineexpr' is off"
+msgstr ""
+"E992: Nicht erlaubt innerhalb einer Modeline, da die Option 'modelineexpr' "
+"deaktiviert ist"
+
 msgid "E846: Key code not set"
 msgstr "E846: Tastencode nicht gesetzt"
 
@@ -4555,14 +4370,6 @@
 msgid "E356: get_varp ERROR"
 msgstr "E356: get_varp FEHLER"
 
-#, c-format
-msgid "E357: 'langmap': Matching character missing for %s"
-msgstr "E357: 'langmap': Passendes Zeichen fehlt für %s"
-
-#, c-format
-msgid "E358: 'langmap': Extra characters after semicolon: %s"
-msgstr "E358: 'langmap': Überschüssige Zeichen nach dem Semikolon: %s"
-
 msgid "cannot open "
 msgstr "kann nicht öffnen"
 
@@ -4656,6 +4463,10 @@
 "\n"
 "Vim: ein X11 Fehler trat auf\n"
 
+#, c-format
+msgid "restoring display %s"
+msgstr "Wiederherstellen des Displays %s"
+
 msgid "Testing the X display failed"
 msgstr "Test des X-Displays schlug fehl"
 
@@ -4784,6 +4595,23 @@
 msgid "shell returned %d"
 msgstr "Shell gab %d zurück"
 
+#, c-format
+msgid "E997: Tabpage not found: %d"
+msgstr "E997: Konnte Reiter \"%d\" nicht finden"
+
+#, c-format
+msgid "E993: window %d is not a popup window"
+msgstr "E993: Fenster %d is kein Popup-Fenster"
+
+msgid "E994: Not allowed in a popup window"
+msgstr "E994: Nicht innerhalb eines Popup-Fensters erlaubt"
+
+msgid "E750: First use \":profile start {fname}\""
+msgstr "E750: Benutze vorher :profile start <fname>"
+
+msgid "E553: No more items"
+msgstr "E553: Keine weiteren Einträge"
+
 msgid "E926: Current location list was changed"
 msgstr "E926: Aktuelle Positionsliste wurde geändert."
 
@@ -4816,9 +4644,6 @@
 msgid "E379: Missing or empty directory name"
 msgstr "E379: Fehlender oder leerer Verzeichnisname"
 
-msgid "E553: No more items"
-msgstr "E553: Keine weiteren Einträge"
-
 msgid "E924: Current window was closed"
 msgstr "E924: Aktuelles Fenster wurde geschlossen."
 
@@ -4862,6 +4687,10 @@
 msgstr "E777: Zeichenkette oder Liste erwartet"
 
 #, c-format
+msgid "E927: Invalid action: '%s'"
+msgstr "E927: Ungültige Aktion '%s'"
+
+#, c-format
 msgid "E369: invalid item in %s%%[]"
 msgstr "E369: Ungültiges Element in %s%%[]"
 
@@ -4982,6 +4811,7 @@
 msgid "E866: (NFA regexp) Misplaced %c"
 msgstr "E866: (NFA regexp) Deplatziert %c"
 
+#, c-format
 msgid "E877: (NFA regexp) Invalid character class: %d"
 msgstr "E877: (NFA regexp) Ungültige Zeichenklasse: %d"
 
@@ -5091,6 +4921,80 @@
 msgstr "aufzeichnen"
 
 #, c-format
+msgid "Searching for \"%s\" in \"%s\""
+msgstr "Suche nach \"%s\" in \"%s\""
+
+#, c-format
+msgid "Searching for \"%s\""
+msgstr "Suche nach \"%s\""
+
+#, c-format
+msgid "not found in '%s': \"%s\""
+msgstr "in '%s' nicht gefunden: \"%s\""
+
+msgid "Source Vim script"
+msgstr "Lese Vim-Skript"
+
+#, c-format
+msgid "Cannot source a directory: \"%s\""
+msgstr "Kann kein Verzeichnis einlesen: \"%s\""
+
+#, c-format
+msgid "could not source \"%s\""
+msgstr "\"%s\" konnte nicht gelesen werden"
+
+#, c-format
+msgid "line %ld: could not source \"%s\""
+msgstr "Zeile %ld: \"%s\" konnte nicht gelesen werden"
+
+#, c-format
+msgid "sourcing \"%s\""
+msgstr "lese \"%s\""
+
+#, c-format
+msgid "line %ld: sourcing \"%s\""
+msgstr "Zeile %ld: lese \"%s\""
+
+#, c-format
+msgid "finished sourcing %s"
+msgstr "Lesen von %s beendet"
+
+#, c-format
+msgid "continuing in %s"
+msgstr "weiter in %s"
+
+msgid "modeline"
+msgstr "modeline"
+
+msgid "--cmd argument"
+msgstr "--cmd Argument"
+
+msgid "-c argument"
+msgstr "-c Argument"
+
+msgid "environment variable"
+msgstr "Umgebungsvariable"
+
+msgid "error handler"
+msgstr "Error-Handler"
+
+msgid "W15: Warning: Wrong line separator, ^M may be missing"
+msgstr "W15: Achtung: Falscher Zeilentrenner, vielleicht fehlt ein ^M"
+
+msgid "E167: :scriptencoding used outside of a sourced file"
+msgstr "E167: :scriptencoding außerhalb einer eingelesenen Datei"
+
+msgid "E984: :scriptversion used outside of a sourced file"
+msgstr "E984: :scriptversion außerhalb einer eingelesenen Datei"
+
+#, c-format
+msgid "E999: scriptversion not supported: %d"
+msgstr "E999: scriptversion nicht unterstützt: %d"
+
+msgid "E168: :finish used outside of a sourced file"
+msgstr "E168: :finish außerhalb einer eingelesenen Datei"
+
+#, c-format
 msgid "E383: Invalid search string: %s"
 msgstr "E383: Unzulässiges Suchmuster: %s"
 
@@ -5146,18 +5050,14 @@
 msgid "E389: Couldn't find pattern"
 msgstr "E389: Konnte Muster nicht finden"
 
-msgid "Substitute "
-msgstr "Ersetze"
+msgid "Save View"
+msgstr "Ansichten Speichern"
 
-#, c-format
-msgid ""
-"\n"
-"# Last %sSearch Pattern:\n"
-"~"
-msgstr ""
-"\n"
-"# Letztes %sSuchmuster:\n"
-"~"
+msgid "Save Session"
+msgstr "Sitzung Speichern"
+
+msgid "Save Setup"
+msgstr "Einstellungen Speichern"
 
 msgid "[Deleted]"
 msgstr "[Gelöscht]"
@@ -5764,76 +5664,18 @@
 msgstr ""
 "  TOTAL      ANZAHL MATCH   LANGSAMST   DURCHSCHN NAME               MUSTER"
 
-msgid "E679: recursive loop loading syncolor.vim"
-msgstr "E679: Rekursive Schleife beim Laden von syncolor.vim"
-
-#, c-format
-msgid "E411: highlight group not found: %s"
-msgstr "E411: Hervorhebungsgruppe nicht gefunden: %s"
-
-#, c-format
-msgid "E412: Not enough arguments: \":highlight link %s\""
-msgstr "E412: Nicht genügend Argumente: \":highlight link %s\""
-
-#, c-format
-msgid "E413: Too many arguments: \":highlight link %s\""
-msgstr "E413: Zu viele Argumente: \":highlight link %s\""
-
-msgid "E414: group has settings, highlight link ignored"
-msgstr "E414: Gruppe hat Einstellungen, highlight link ignoriert"
-
-#, c-format
-msgid "E415: unexpected equal sign: %s"
-msgstr "E415: Unerwartetes Gleichheitszeichen: %s"
-
-#, c-format
-msgid "E416: missing equal sign: %s"
-msgstr "E416: fehlendes Gleichheitszeichen: %s"
-
-#, c-format
-msgid "E417: missing argument: %s"
-msgstr "E417: Fehlendes Argument: %s"
-
-#, c-format
-msgid "E418: Illegal value: %s"
-msgstr "E418: Unzulässiger Wert: %s"
-
-msgid "E419: FG color unknown"
-msgstr "E419: Vordergrundfarbe unbekannt"
-
-msgid "E420: BG color unknown"
-msgstr "E420: Hintergrundfarbe unbekannt"
-
-#, c-format
-msgid "E421: Color name or number not recognized: %s"
-msgstr "E421: Unbekannte Farbbezeichnung oder -Nummer: %s"
-
-#, c-format
-msgid "E422: terminal code too long: %s"
-msgstr "E422: Terminal-Code zu lang: %s"
-
-#, c-format
-msgid "E423: Illegal argument: %s"
-msgstr "E423: Unzulässiges Argument: %s"
-
-msgid "E424: Too many different highlighting attributes in use"
-msgstr "E424: Zu viele verschieden Hervorhebungsattribute in Gebrauch"
-
-msgid "E669: Unprintable character in group name"
-msgstr "E669: Nicht druckbare Zeichen im Namen der Gruppe"
-
-msgid "W18: Invalid character in group name"
-msgstr "W18: Ungültiges Zeichen im Namen der Gruppe"
-
-msgid "E849: Too many highlight and syntax groups"
-msgstr "E849: Zu viele Highlight- und Syntaxgruppen"
-
 msgid "E555: at bottom of tag stack"
 msgstr "E555: Am Ende des Tag-Stacks"
 
 msgid "E556: at top of tag stack"
 msgstr "E556: Am Anfang des Tag-Stacks"
 
+msgid "E986: cannot modify the tag stack within tagfunc"
+msgstr "E986: Kann den Tag-Stack nicht innerhalb der tagfunc Funktion verändern"
+
+msgid "E987: invalid return value from tagfunc"
+msgstr "E987: Ungültiges Ergebnis der tagfunc Funktion"
+
 msgid "E425: Cannot go before first matching tag"
 msgstr "E425: Kann nicht vor den ersten passenden Tag hinausgehen"
 
@@ -5948,6 +5790,10 @@
 msgstr "Kann Datei $VIMRUNTIME/rgb.txt nicht öffnen."
 
 #, c-format
+msgid "E181: Invalid attribute: %s"
+msgstr "E181: Ungültiges Attribut: %s"
+
+#, c-format
 msgid "Kill job in \"%s\"?"
 msgstr "Beende job in \"%s\"?"
 
@@ -5994,6 +5840,9 @@
 msgid "E965: missing property type name"
 msgstr "E965: Fehlender Eigenschaften Typname"
 
+msgid "E275: Cannot add text property to unloaded buffer"
+msgstr "E275: Kann Texteigenschaft nicht einem entladenen Puffer hinzufügen"
+
 msgid "E967: text property info corrupted"
 msgstr "E967: Texteigenschaft-Info beschädigt"
 
@@ -6156,6 +6005,71 @@
 msgid "E440: undo line missing"
 msgstr "E440: Wiederherstellungszeile fehlt"
 
+msgid ""
+"\n"
+"    Name              Args Address Complete    Definition"
+msgstr ""
+"\n"
+"    Name              Args Adresse Vervollständigung Definition"
+
+msgid "No user-defined commands found"
+msgstr "Keine vom Benutzer definierten Befehle gefunden"
+
+#, c-format
+msgid "E180: Invalid address type value: %s"
+msgstr "E180: Ungültiger Adresstyp: %s"
+
+#, c-format
+msgid "E180: Invalid complete value: %s"
+msgstr "E180: Ungültiger Wert der Vervollständigung: %s"
+
+msgid "E468: Completion argument only allowed for custom completion"
+msgstr ""
+"E468: Argument für Vervollständigung nur für benutzerdefinierte "
+"Vervollständigung erlaubt."
+
+msgid "E467: Custom completion requires a function argument"
+msgstr ""
+"E467: Benutzerdefinierte Vervollständigung benötigt eine Funktion als "
+"Argument."
+
+msgid "E175: No attribute specified"
+msgstr "E175: Kein Attribut angegeben"
+
+msgid "E176: Invalid number of arguments"
+msgstr "E176: Falsche Anzahl von Argumenten"
+
+msgid "E177: Count cannot be specified twice"
+msgstr "E177: Zähler kann nicht zweimal angegeben werden"
+
+msgid "E178: Invalid default value for count"
+msgstr "E178: Ungültige Voreinstellung für den Zähler"
+
+msgid "E179: argument required for -complete"
+msgstr "E179: Argument benötigt für -complete"
+
+msgid "E179: argument required for -addr"
+msgstr "E179: Argument benötigt für -addr"
+
+#, c-format
+msgid "E174: Command already exists: add ! to replace it: %s"
+msgstr "E174: Befehl '%s' existiert bereits: ! zum Ersetzen hinzufügen"
+
+msgid "E182: Invalid command name"
+msgstr "E182: Ungültiger Befehls-Name"
+
+msgid "E183: User defined commands must start with an uppercase letter"
+msgstr "E183: Benutzerdefinierte Befehle müssen mit Großbuchstaben beginnen."
+
+msgid "E841: Reserved name, cannot be used for user defined command"
+msgstr ""
+"E841: Reservierter Name kann nicht für benutzerdefinierten Befehl verwendet "
+"werden."
+
+#, c-format
+msgid "E184: No such user-defined command: %s"
+msgstr "E184: Unbekannter benutzerdefinierter Befehl: %s"
+
 #, c-format
 msgid "E122: Function %s already exists, add ! to replace it"
 msgstr "E122: Funktion %s existiert bereits; zum Ersetzen ! hinzufügen"
@@ -6178,6 +6092,9 @@
 msgid "E853: Duplicate argument name: %s"
 msgstr "E853: Doppelter Argumentname: %s"
 
+msgid "E989: Non-default argument follows default argument"
+msgstr "E989: Nicht-default Argument folgt auf default Argument"
+
 #, c-format
 msgid "E740: Too many arguments for function %s"
 msgstr "E740: Zu viele Argumente für Funktion %s"
@@ -6213,6 +6130,10 @@
 msgstr "E117: Unbekannte Funktion: %s"
 
 #, c-format
+msgid "E276: Cannot use function as a method: %s"
+msgstr "E276: Funktion %s kann nicht als Methode genutzt werden"
+
+#, c-format
 msgid "E933: Function was deleted: %s"
 msgstr "E933: Funktion wurde gelöscht: %s"
 
@@ -6251,7 +6172,7 @@
 msgstr "E124: Fehlendes '(': %s"
 
 msgid "E862: Cannot use g: here"
-msgstr "E862: g: kann hier nicht benutzt werden"
+msgstr "E862: g: kann hier nicht genutzt werden"
 
 #, c-format
 msgid "E932: Closure function should not be at top level: %s"
@@ -6286,15 +6207,25 @@
 msgstr "E133: :return außerhalb einer Funktion"
 
 #, c-format
-msgid "E107: Missing parentheses: %s"
-msgstr "E107: Fehlende Klammern: %s"
-
-#, c-format
 msgid "%s (%s, compiled %s)"
 msgstr "%s (%s kompiliert am %s)"
 
 msgid ""
 "\n"
+"MS-Windows 64-bit GUI/console version"
+msgstr ""
+"\n"
+"MS-Windows 64 Bit GUI/Konsolen-Version"
+
+msgid ""
+"\n"
+"MS-Windows 32-bit GUI/console version"
+msgstr ""
+"\n"
+"MS-Windows 32 Bit GUI/Konsolen-Version"
+
+msgid ""
+"\n"
 "MS-Windows 64-bit GUI version"
 msgstr ""
 "\n"
@@ -6568,6 +6499,173 @@
 msgid "menu  Help->Sponsor/Register  for information    "
 msgstr "Menü   Hilfe->Sponsor/Register  für mehr Informationen    "
 
+msgid ""
+"\n"
+"# Buffer list:\n"
+msgstr ""
+"\n"
+"# Liste der Puffer:\n"
+
+#, c-format
+msgid ""
+"\n"
+"# %s History (newest to oldest):\n"
+msgstr ""
+"\n"
+"# %s Geschichte (neueste bis älteste):\n"
+
+msgid "Command Line"
+msgstr "Befehlszeile"
+
+msgid "Search String"
+msgstr "Suchausdruck"
+
+msgid "Expression"
+msgstr "Ausdruck"
+
+msgid "Input Line"
+msgstr "Eingabe-Zeile"
+
+msgid "Debug Line"
+msgstr "Debug-Zeile"
+
+msgid ""
+"\n"
+"# Bar lines, copied verbatim:\n"
+msgstr ""
+"\n"
+"# |-Zeilen, wortwörtlich kopiert:\n"
+
+#, c-format
+msgid "%sviminfo: %s in line: "
+msgstr "%sviminfo: %s in Zeile: "
+
+msgid "E136: viminfo: Too many errors, skipping rest of file"
+msgstr "E136: viminfo: Zu viele Fehler; überspringe Rest der Datei"
+
+msgid ""
+"\n"
+"# global variables:\n"
+msgstr ""
+"\n"
+"# globale Variablen:\n"
+
+msgid ""
+"\n"
+"# Last Substitute String:\n"
+"$"
+msgstr ""
+"\n"
+"# Letzte ersetzte Zeichenkette:\n"
+"$"
+
+#, c-format
+msgid ""
+"\n"
+"# Last %sSearch Pattern:\n"
+"~"
+msgstr ""
+"\n"
+"# Letztes %sSuchmuster:\n"
+"~"
+
+msgid "Substitute "
+msgstr "Ersetze"
+
+msgid "Illegal register name"
+msgstr "Unzulässiger Register Name"
+
+msgid ""
+"\n"
+"# Registers:\n"
+msgstr ""
+"\n"
+"# Register:\n"
+
+#, c-format
+msgid "E574: Unknown register type %d"
+msgstr "E574: Unbekannter Register Typ %d"
+
+msgid ""
+"\n"
+"# History of marks within files (newest to oldest):\n"
+msgstr ""
+"\n"
+"# Geschichte der Markierungen innerhalb von Dateien (neueste zuerst):\n"
+
+msgid ""
+"\n"
+"# File marks:\n"
+msgstr ""
+"\n"
+"# Datei-Markierungen:\n"
+
+msgid ""
+"\n"
+"# Jumplist (newest first):\n"
+msgstr ""
+"\n"
+"# Jumplist (neueste zuerst):\n"
+
+msgid "Missing '>'"
+msgstr "'>' fehlt"
+
+msgid "Illegal starting char"
+msgstr "Unzulässiges Zeichen am Anfang"
+
+#, c-format
+msgid "# This viminfo file was generated by Vim %s.\n"
+msgstr "# Diese viminfo-Datei wurde von Vim %s generiert.\n"
+
+msgid ""
+"# You may edit it if you're careful!\n"
+"\n"
+msgstr ""
+"# Sie können sie verändern, wenn Sie vorsichtig vorgehen!\n"
+"\n"
+
+msgid "# Value of 'encoding' when this file was written\n"
+msgstr "# Wert von 'encoding', als diese Datei geschrieben wurde\n"
+
+#, c-format
+msgid "Reading viminfo file \"%s\"%s%s%s"
+msgstr "Lesen der viminfo-Datei \"%s\"%s%s%s"
+
+msgid " info"
+msgstr " Information"
+
+msgid " marks"
+msgstr " Markierungen"
+
+msgid " oldfiles"
+msgstr " oldfiles"
+
+msgid " FAILED"
+msgstr " FEHLGESCHLAGEN"
+
+#, c-format
+msgid "E137: Viminfo file is not writable: %s"
+msgstr "E137: Viminfo-Datei ist nicht schreibbar: %s"
+
+#, c-format
+msgid "E929: Too many viminfo temp files, like %s!"
+msgstr "E929: Zu viele temporäre viminfo Dateien (wie %s)!"
+
+#, c-format
+msgid "E138: Can't write viminfo file %s!"
+msgstr "E138: Schreiben der viminfo-Datei %s ist nicht möglich!"
+
+#, c-format
+msgid "Writing viminfo file \"%s\""
+msgstr "Schreiben der viminfo-Datei \"%s\""
+
+#, c-format
+msgid "E886: Can't rename viminfo file to %s!"
+msgstr "E886: Kann viminfo Datei nicht in %s umbenennen!"
+
+msgid "E195: Cannot open viminfo file for reading"
+msgstr "E195: viminfo kann nicht zum Lesen geöffnet werden."
+
 msgid "Already only one window"
 msgstr "Bereits nur ein Fenster"
 
@@ -6578,6 +6676,9 @@
 msgid "E441: There is no preview window"
 msgstr "E441: Es gibt kein Vorschaufenster"
 
+msgid "E242: Can't split a window while closing another"
+msgstr "E242: Kann Fenster nicht teilen während anderes geschlossen wird"
+
 # should read: topleft / botright
 msgid "E442: Can't split topleft and botright at the same time"
 msgstr "E442: topleft und botright können nicht gleichzeitig verwendet werden"
@@ -6588,8 +6689,8 @@
 msgid "E444: Cannot close last window"
 msgstr "E444: Letztes Fenster kann nicht geschlossen werden"
 
-msgid "E813: Cannot close autocmd window"
-msgstr "E813: Autokommando-Fenster kann nicht geschlossen werden"
+msgid "E813: Cannot close autocmd or popup window"
+msgstr "E813: Autokommando-Fenster oder Popup-Fenster kann nicht geschlossen werden"
 
 msgid "E814: Cannot close window, only autocmd window would remain"
 msgstr ""
@@ -6600,25 +6701,6 @@
 msgstr "E445: Anderes Fenster enthält Änderungen"
 
 #, c-format
-msgid "E799: Invalid ID: %d (must be greater than or equal to 1)"
-msgstr "E799: Ungültige ID: %d (muss größer gleich 1 sein)"
-
-#, c-format
-msgid "E801: ID already taken: %d"
-msgstr "E801: ID bereits benutzt: %d"
-
-msgid "List or number required"
-msgstr "Liste oder Nummer erforderlich"
-
-#, c-format
-msgid "E802: Invalid ID: %d (must be greater than or equal to 1)"
-msgstr "E802: Ungültige ID: %d (muss größer gleich 1 sein)"
-
-#, c-format
-msgid "E803: ID not found: %d"
-msgstr "E803: ID nicht gefunden: %d"
-
-#, c-format
 msgid "E370: Could not load library %s"
 msgstr "E370: Konnte Bibliothek %s nicht laden"
 
@@ -6728,9 +6810,6 @@
 msgid "Interrupted"
 msgstr "Unterbrochen"
 
-msgid "E14: Invalid address"
-msgstr "E14: Ungültige Adresse"
-
 msgid "E474: Invalid argument"
 msgstr "E474: Ungültiges Argument"
 
@@ -6916,6 +6995,21 @@
 msgstr "E45: Die Option 'readonly' ist gesetzt (erzwinge mit !)"
 
 #, c-format
+msgid "E121: Undefined variable: %s"
+msgstr "E121: Undefinierte Variable: %s"
+
+#, c-format
+msgid "E734: Wrong variable type for %s="
+msgstr "E734: Falscher Variablentyp für %s="
+
+#, c-format
+msgid "E461: Illegal variable name: %s"
+msgstr "E461: Unzulässiger Variablenname: %s"
+
+msgid "E995: Cannot modify existing variable"
+msgstr "E995: Kann existierende Variable nicht ändern"
+
+#, c-format
 msgid "E46: Cannot change read-only variable \"%s\""
 msgstr "E46: Variable \"%s\" kann nur gelesen werden"
 
@@ -6923,6 +7017,9 @@
 msgid "E794: Cannot set variable in the sandbox: \"%s\""
 msgstr "E794: Variable kann nicht in der Sandbox gesetzt werden: \"%s\""
 
+msgid "E928: String required"
+msgstr "E928: String wird benötigt."
+
 msgid "E713: Cannot use empty key for Dictionary"
 msgstr "E713: Der Schlüssel für das Dictionary darf nicht leer sein"
 
@@ -6987,7 +7084,7 @@
 msgstr "E72: Fehler beim Schließen der Auslagerungsdatei"
 
 msgid "E73: tag stack empty"
-msgstr "E73: Tag Stapel leer."
+msgstr "E73: Tag Stack leer."
 
 msgid "E74: Command too complex"
 msgstr "E74: Befehl zu komplex"
@@ -7025,6 +7122,10 @@
 msgid "E81: Using <SID> not in a script context"
 msgstr "E81: <SID> wurde nicht in einer Skript-Umgebung benutzt"
 
+#, c-format
+msgid "E107: Missing parentheses: %s"
+msgstr "E107: Fehlende Klammern: %s"
+
 msgid "E449: Invalid expression received"
 msgstr "E449: Ungültiger Ausdruck"
 
@@ -7067,6 +7168,13 @@
 msgid "E328: Menu only exists in another mode"
 msgstr "E328: Menü existiert nur in anderen Modi"
 
+msgid "E957: Invalid window number"
+msgstr "E957: Ungültige Fensternummer"
+
+#, c-format
+msgid "E686: Argument of %s must be a List"
+msgstr "E686: Argument von %s muss eine Liste sein."
+
 msgid "search hit TOP, continuing at BOTTOM"
 msgstr "Suche erreichte den ANFANG und wurde am ENDE fortgesetzt"
 
@@ -7402,5 +7510,3 @@
 
 msgid "Vim"
 msgstr "Vim"
-
-
diff --git a/src/po/gvim.desktop.in b/src/po/gvim.desktop.in
index b547598..b41bcc0 100644
--- a/src/po/gvim.desktop.in
+++ b/src/po/gvim.desktop.in
@@ -12,6 +12,7 @@
 GenericName[da]=Teksteditor
 GenericName[fr]=Éditeur de texte
 GenericName[pl]=Edytor tekstu
+GenericName[sr]=Едитор текста
 GenericName[is]=Ritvinnsluforrit
 Comment[af]=Redigeer tekslêers
 Comment[am]=የጽሑፍ ፋይሎች ያስተካክሉ
diff --git a/src/po/sr.po b/src/po/sr.po
index 44a98c3..dc72038 100644
--- a/src/po/sr.po
+++ b/src/po/sr.po
@@ -3324,21 +3324,21 @@
 "mark line  col file/text"
 msgstr ""
 "\n"
-"линија маркера  кол фајл/текст"
+"марк лин   кол фајл/текст"
 
 msgid ""
 "\n"
 " jump line  col file/text"
 msgstr ""
 "\n"
-"  линија скока  кол фајл/текст"
+" скок лин   кол фајл/текст"
 
 msgid ""
 "\n"
 "change line  col text"
 msgstr ""
 "\n"
-"линија промене кол текст"
+"измена лин   кол текст"
 
 msgid ""
 "\n"
@@ -3969,7 +3969,7 @@
 msgstr "E767: Сувише аргумената за printf()"
 
 msgid "W10: Warning: Changing a readonly file"
-msgstr "W10: Упозорење: Мења се фајл која може само да се чита"
+msgstr "W10: Упозорење: Мења се фајл који може само да се чита"
 
 msgid "Type number and <Enter> or click with mouse (empty cancels): "
 msgstr "Унесите број и <Ентер> или кликните мишем (ништа за отказ): "
@@ -6716,7 +6716,7 @@
 msgstr "E255: Подаци за знак нису могли да се прочитају!"
 
 msgid "E72: Close error on swap file"
-msgstr "E72: Грешка код затвањара swap фајла"
+msgstr "E72: Грешка код затварања swap фајла"
 
 msgid "E73: tag stack empty"
 msgstr "E73: стек ознака је празан"