Problem: We can't change the case in menu entries, it breaks translations.
Solution: Ignore case when looking up a menu translation.
char_u *dname;
for (i = 0; i < menutrans_ga.ga_len; ++i)
- if (STRNCMP(name, tp[i].from, len) == 0 && tp[i].from[len] == NUL)
+ if (STRNICMP(name, tp[i].from, len) == 0 && tp[i].from[len] == NUL)
return tp[i].to;
/* Now try again while ignoring '&' characters. */
if (dname != NULL)
{
for (i = 0; i < menutrans_ga.ga_len; ++i)
- if (STRCMP(dname, tp[i].from_noamp) == 0)
+ if (STRICMP(dname, tp[i].from_noamp) == 0)
{
vim_free(dname);
return tp[i].to;
" Test that the system menu can be loaded.
+if !has('menu')
+ finish
+endif
+
func Test_load_menu()
try
source $VIMRUNTIME/menu.vim
catch
call assert_false(1, 'error while loading menus: ' . v:exception)
endtry
+ source $VIMRUNTIME/delmenu.vim
+endfunc
+
+func Test_translate_menu()
+ if !has('multi_lang')
+ return
+ endif
+ if !filereadable($VIMRUNTIME . '/lang/menu_de_de.latin1.vim')
+ throw 'Skipped: translated menu not found'
+ endif
+
+ set langmenu=de_de
+ source $VIMRUNTIME/menu.vim
+ call assert_match(':browse tabnew', execute(':menu File.In\ neuem\ Tab\ öffnen\.\.\.'))
+
+ source $VIMRUNTIME/delmenu.vim
endfunc
static int included_patches[] =
{ /* Add new patch number below this line */
+/**/
+ 411,
/**/
410,
/**/