1*mlang.txt* For Vim version 7.3. Last change: 2010 Jul 20 2 3 4 VIM REFERENCE MANUAL by Bram Moolenaar 5 6 7Multi-language features *multilang* *multi-lang* 8 9This is about using messages and menus in various languages. For editing 10multi-byte text see |multibyte|. 11 12The basics are explained in the user manual: |usr_45.txt|. 13 141. Messages |multilang-messages| 152. Menus |multilang-menus| 163. Scripts |multilang-scripts| 17 18Also see |help-translated| for multi-language help. 19 20{Vi does not have any of these features} 21{not available when compiled without the |+multi_lang| feature} 22 23============================================================================== 241. Messages *multilang-messages* 25 26Vim picks up the locale from the environment. In most cases this means Vim 27will use the language that you prefer, unless it's not available. 28 29To see a list of supported locale names on your system, look in one of these 30directories (for Unix): 31 /usr/lib/locale ~ 32 /usr/share/locale ~ 33Unfortunately, upper/lowercase differences matter. Also watch out for the 34use of "-" and "_". 35 36 *:lan* *:lang* *:language* *E197* 37:lan[guage] 38:lan[guage] mes[sages] 39:lan[guage] cty[pe] 40:lan[guage] tim[e] 41 Print the current language (aka locale). 42 With the "messages" argument the language used for 43 messages is printed. Technical: LC_MESSAGES. 44 With the "ctype" argument the language used for 45 character encoding is printed. Technical: LC_CTYPE. 46 With the "time" argument the language used for 47 strftime() is printed. Technical: LC_TIME. 48 Without argument all parts of the locale are printed 49 (this is system dependent). 50 The current language can also be obtained with the 51 |v:lang|, |v:ctype| and |v:lc_time| variables. 52 53:lan[guage] {name} 54:lan[guage] mes[sages] {name} 55:lan[guage] cty[pe] {name} 56:lan[guage] tim[e] {name} 57 Set the current language (aka locale) to {name}. 58 The locale {name} must be a valid locale on your 59 system. Some systems accept aliases like "en" or 60 "en_US", but some only accept the full specification 61 like "en_US.ISO_8859-1". On Unix systems you can use 62 the this command to see what locales are supported: > 63 :!locale -a 64< With the "messages" argument the language used for 65 messages is set. This can be different when you want, 66 for example, English messages while editing Japanese 67 text. This sets $LC_MESSAGES. 68 With the "ctype" argument the language used for 69 character encoding is set. This affects the libraries 70 that Vim was linked with. It's unusual to set this to 71 a different value from 'encoding'. This sets 72 $LC_CTYPE. 73 With the "time" argument the language used for time 74 and date messages is set. This affects strftime(). 75 This sets $LC_TIME. 76 Without an argument both are set, and additionally 77 $LANG is set. 78 When compiled with the |+float| feature the LC_NUMERIC 79 value will always be set to "C", so that floating 80 point numbers use '.' as the decimal point. 81 This will make a difference for items that depend on 82 the language (some messages, time and date format). 83 Not fully supported on all systems 84 If this fails there will be an error message. If it 85 succeeds there is no message. Example: > 86 :language 87 Current language: C 88 :language de_DE.ISO_8859-1 89 :language mes 90 Current messages language: de_DE.ISO_8859-1 91 :lang mes en 92< 93 94MS-WINDOWS MESSAGE TRANSLATIONS *win32-gettext* 95 96If you used the self-installing .exe file, message translations should work 97already. Otherwise get the libintl.dll file if you don't have it yet: 98 99 http://sourceforge.net/projects/gettext 100 101This also contains tools xgettext, msgformat and others. 102 103libintl.dll should be placed in same directory with (g)vim.exe, or some 104place where PATH environment value describe. Message files (vim.mo) 105have to be placed in "$VIMRUNTIME/lang/xx/LC_MESSAGES", where "xx" is the 106abbreviation of the language (mostly two letters). 107 108If you write your own translations you need to generate the .po file and 109convert it to a .mo file. You need to get the source distribution and read 110the file "src/po/README.txt". 111 112To overrule the automatic choice of the language, set the $LANG variable to 113the language of your choice. use "en" to disable translations. > 114 115 :let $LANG = 'ja' 116 117(text for Windows by Muraoka Taro) 118 119============================================================================== 1202. Menus *multilang-menus* 121 122See |45.2| for the basics, esp. using 'langmenu'. 123 124Note that if changes have been made to the menus after the translation was 125done, some of the menus may be shown in English. Please try contacting the 126maintainer of the translation and ask him to update it. You can find the 127name and e-mail address of the translator in 128"$VIMRUNTIME/lang/menu_<lang>.vim". 129 130To set the font (or fontset) to use for the menus, use the |:highlight| 131command. Example: > 132 133 :highlight Menu font=k12,r12 134 135 136ALIAS LOCALE NAMES 137 138Unfortunately, the locale names are different on various systems, even though 139they are for the same language and encoding. If you do not get the menu 140translations you expected, check the output of this command: > 141 142 echo v:lang 143 144Now check the "$VIMRUNTIME/lang" directory for menu translation files that use 145a similar language. A difference in a "-" being a "_" already causes a file 146not to be found! Another common difference to watch out for is "iso8859-1" 147versus "iso_8859-1". Fortunately Vim makes all names lowercase, thus you 148don't have to worry about case differences. Spaces are changed to 149underscores, to avoid having to escape them. 150 151If you find a menu translation file for your language with a different name, 152create a file in your own runtime directory to load that one. The name of 153that file could be: > 154 155 ~/.vim/lang/menu_<v:lang>.vim 156 157Check the 'runtimepath' option for directories which are searched. In that 158file put a command to load the menu file with the other name: > 159 160 runtime lang/menu_<other_lang>.vim 161 162 163TRANSLATING MENUS 164 165If you want to do your own translations, you can use the |:menutrans| command, 166explained below. It is recommended to put the translations for one language 167in a Vim script. For a language that has no translation yet, please consider 168becoming the maintainer and make your translations available to all Vim users. 169Send an e-mail to the Vim maintainer <maintainer@vim.org>. 170 171 *:menut* *:menutrans* *:menutranslate* 172:menut[ranslate] clear 173 Clear all menu translations. 174 175:menut[ranslate] {english} {mylang} 176 Translate menu name {english} to {mylang}. All 177 special characters like "&" and "<Tab>" need to be 178 included. Spaces and dots need to be escaped with a 179 backslash, just like in other |:menu| commands. 180 181See the $VIMRUNTIME/lang directory for examples. 182 183To try out your translations you first have to remove all menus. This is how 184you can do it without restarting Vim: > 185 :source $VIMRUNTIME/delmenu.vim 186 :source <your-new-menu-file> 187 :source $VIMRUNTIME/menu.vim 188 189Each part of a menu path is translated separately. The result is that when 190"Help" is translated to "Hilfe" and "Overview" to "�berblick" then 191"Help.Overview" will be translated to "Hilfe.�berblick". 192 193============================================================================== 1943. Scripts *multilang-scripts* 195 196In Vim scripts you can use the |v:lang| variable to get the current language 197(locale). The default value is "C" or comes from the $LANG environment 198variable. 199 200The following example shows how this variable is used in a simple way, to make 201a message adapt to language preferences of the user, > 202 203 :if v:lang =~ "de_DE" 204 : echo "Guten Morgen" 205 :else 206 : echo "Good morning" 207 :endif 208< 209 210 vim:tw=78:sw=4:ts=8:ft=help:norl: 211