Home Explore Blog CI



neovim

3rd chunk of `runtime/doc/mlang.txt`
ca320211ca9b9dd0da0a572d554d72d44cba16fcac4ac5b60000000100000d04
	*multilang-menus*

See |45.2| for the basics, esp. using 'langmenu'.

Note that if changes have been made to the menus after the translation was
done, some of the menus may be shown in English.  Please try contacting the
maintainer of the translation and ask him to update it.  You can find the
name and e-mail address of the translator in
"$VIMRUNTIME/lang/menu_<lang>.vim".

To set the font to use for the menus, use the |:highlight| command.  Example: >

	:highlight Menu font=k12,r12


ALIAS LOCALE NAMES

Unfortunately, the locale names are different on various systems, even though
they are for the same language and encoding.  If you do not get the menu
translations you expected, check the output of this command: >

	echo v:lang

Now check the "$VIMRUNTIME/lang" directory for menu translation files that use
a similar language.  A difference in a "-" being a "_" already causes a file
not to be found!  Another common difference to watch out for is "iso8859-1"
versus "iso_8859-1".  Fortunately Vim makes all names lowercase, thus you
don't have to worry about case differences.  Spaces are changed to
underscores, to avoid having to escape them.

If you find a menu translation file for your language with a different name,
create a file in your own runtime directory to load that one.  The name of
that file could be: >

	~/.config/nvim/lang/menu_<v:lang>.vim

Check the 'runtimepath' option for directories which are searched.  In that
file put a command to load the menu file with the other name: >

	runtime lang/menu_<other_lang>.vim


TRANSLATING MENUS

If you want to do your own translations, you can use the |:menutrans| command,
explained below.  It is recommended to put the translations for one language
in a Vim script.  For a language that has no translation yet, please consider
becoming the maintainer and make your translations available to all Vim users.
Send an e-mail to the Vim maintainer <maintainer@vim.org>.

					*:menut* *:menutrans* *:menutranslate*
:menut[ranslate] clear
			Clear all menu translations.

:menut[ranslate] {english} {mylang}
			Translate menu name {english} to {mylang}.  All
			special characters like "&" and "<Tab>" need to be
			included.  Spaces and dots need to be escaped with a
			backslash, just like in other |:menu| commands.
			Case in {english} is ignored.

See the $VIMRUNTIME/lang directory for examples.

To try out your translations you first have to remove all menus.  This is how
you can do it without restarting Vim: >
	:source $VIMRUNTIME/delmenu.vim
	:source <your-new-menu-file>
	:source $VIMRUNTIME/menu.vim

Each part of a menu path is translated separately.  The result is that when
"Help" is translated to "Hilfe" and "Overview" to "Überblick" then
"Help.Overview" will be translated to "Hilfe.Überblick".

==============================================================================
3. Scripts						*multilang-scripts*

In Vim scripts you can use the |v:lang| variable to get the current language
(locale).  The default value is "C" or comes from the $LANG environment
variable.

The following example shows how this variable is used in a simple way, to make
a message adapt to language preferences of the user, >

	:if v:lang =~ "de_DE"
	:  echo "Guten Morgen"
	:else
	:  echo "Good morning"
	:endif
<

 vim:tw=78:sw=4:ts=8:noet:ft=help:norl:

Title: Vim Multi-Language Menus: Aliases, Translations, and Scripts
Summary
This section describes how to handle different locale names for menu translations across systems, suggesting the creation of a custom file to load alternative menu files. It then discusses translating menus using the ":menutrans" command, recommending contributions to the Vim community. Finally, it explains the use of the v:lang variable in Vim scripts to adapt messages to the user's language preferences.