1071d4279SBram Moolenaar" Vim tutor support file 2071d4279SBram Moolenaar" Author: Eduardo F. Amatria <[email protected]> 3e37d50a5SBram Moolenaar" Maintainer: Bram Moolenaar 4*574ee7bcSBram Moolenaar" Last Change: 2019 Nov 11 5071d4279SBram Moolenaar 6e37d50a5SBram Moolenaar" This Vim script is used for detecting if a translation of the 7071d4279SBram Moolenaar" tutor file exist, i.e., a tutor.xx file, where xx is the language. 8071d4279SBram Moolenaar" If the translation does not exist, or no extension is given, 97dda86f2SBram Moolenaar" it defaults to the English version. 10071d4279SBram Moolenaar 11071d4279SBram Moolenaar" It is invoked by the vimtutor shell script. 12071d4279SBram Moolenaar 13071d4279SBram Moolenaar" 1. Build the extension of the file, if any: 14071d4279SBram Moolenaarlet s:ext = "" 15071d4279SBram Moolenaarif strlen($xx) > 1 16071d4279SBram Moolenaar let s:ext = "." . $xx 17071d4279SBram Moolenaarelse 18071d4279SBram Moolenaar let s:lang = "" 1997b2ad35SBram Moolenaar " Check that a potential value has at least two letters. 2097b2ad35SBram Moolenaar " Ignore "1043" and "C". 2197b2ad35SBram Moolenaar if exists("v:lang") && v:lang =~ '\a\a' 22071d4279SBram Moolenaar let s:lang = v:lang 2397b2ad35SBram Moolenaar elseif $LC_ALL =~ '\a\a' 24e2cc9702SBram Moolenaar let s:lang = $LC_ALL 25b44b7addSBram Moolenaar elseif $LC_MESSAGES =~ '\a\a' || $LC_MESSAGES ==# "C" 26b44b7addSBram Moolenaar " LC_MESSAGES=C can be used to explicitly ask for English messages while 27b44b7addSBram Moolenaar " keeping LANG non-English; don't set s:lang then. 28b44b7addSBram Moolenaar if $LC_MESSAGES =~ '\a\a' 29b44b7addSBram Moolenaar let s:lang = $LC_MESSAGES 30b44b7addSBram Moolenaar endif 3197b2ad35SBram Moolenaar elseif $LANG =~ '\a\a' 32071d4279SBram Moolenaar let s:lang = $LANG 33071d4279SBram Moolenaar endif 34071d4279SBram Moolenaar if s:lang != "" 35071d4279SBram Moolenaar " Remove "@euro" (ignoring case), it may be at the end 36071d4279SBram Moolenaar let s:lang = substitute(s:lang, '\c@euro', '', '') 37071d4279SBram Moolenaar " On MS-Windows it may be German_Germany.1252 or Polish_Poland.1250. How 38071d4279SBram Moolenaar " about other languages? 39071d4279SBram Moolenaar if s:lang =~ "German" 40071d4279SBram Moolenaar let s:ext = ".de" 41071d4279SBram Moolenaar elseif s:lang =~ "Polish" 42071d4279SBram Moolenaar let s:ext = ".pl" 43071d4279SBram Moolenaar elseif s:lang =~ "Slovak" 44071d4279SBram Moolenaar let s:ext = ".sk" 45946e27abSBram Moolenaar elseif s:lang =~ "Serbian" 46946e27abSBram Moolenaar let s:ext = ".sr" 47d7afed37SBram Moolenaar elseif s:lang =~ "Czech" 48d7afed37SBram Moolenaar let s:ext = ".cs" 4997b2ad35SBram Moolenaar elseif s:lang =~ "Dutch" 5097b2ad35SBram Moolenaar let s:ext = ".nl" 5142ebd066SBram Moolenaar elseif s:lang =~ "Bulgarian" 5242ebd066SBram Moolenaar let s:ext = ".bg" 53071d4279SBram Moolenaar else 54071d4279SBram Moolenaar let s:ext = "." . strpart(s:lang, 0, 2) 55071d4279SBram Moolenaar endif 56071d4279SBram Moolenaar endif 57071d4279SBram Moolenaarendif 58071d4279SBram Moolenaar 59446cb837SBram Moolenaar" Somehow ".ge" (Germany) is sometimes used for ".de" (Deutsch). 60446cb837SBram Moolenaarif s:ext =~? '\.ge' 61446cb837SBram Moolenaar let s:ext = ".de" 62446cb837SBram Moolenaarendif 63446cb837SBram Moolenaar 64446cb837SBram Moolenaarif s:ext =~? '\.en' 65446cb837SBram Moolenaar let s:ext = "" 66446cb837SBram Moolenaarendif 67446cb837SBram Moolenaar 68a9604e61SBram Moolenaar" The Japanese tutor is available in three encodings, guess which one to use 69071d4279SBram Moolenaar" The "sjis" one is actually "cp932", it doesn't matter for this text. 70071d4279SBram Moolenaarif s:ext =~? '\.ja' 71071d4279SBram Moolenaar if &enc =~ "euc" 72071d4279SBram Moolenaar let s:ext = ".ja.euc" 73446cb837SBram Moolenaar elseif &enc != "utf-8" 74071d4279SBram Moolenaar let s:ext = ".ja.sjis" 75071d4279SBram Moolenaar endif 76071d4279SBram Moolenaarendif 77071d4279SBram Moolenaar 78a9604e61SBram Moolenaar" The Korean tutor is available in two encodings, guess which one to use 79071d4279SBram Moolenaarif s:ext =~? '\.ko' 80446cb837SBram Moolenaar if &enc != "utf-8" 81071d4279SBram Moolenaar let s:ext = ".ko.euc" 82071d4279SBram Moolenaar endif 83071d4279SBram Moolenaarendif 84071d4279SBram Moolenaar 85d09acef4SBram Moolenaar" The Chinese tutor is available in three encodings, guess which one to use 86071d4279SBram Moolenaar" This segment is from the above lines and modified by 87071d4279SBram Moolenaar" Mendel L Chan <[email protected]> for Chinese vim tutorial 88d09acef4SBram Moolenaar" When 'encoding' is utf-8, choose between China (simplified) and Taiwan 89d09acef4SBram Moolenaar" (traditional) based on the language, suggested by Alick Zhao. 90071d4279SBram Moolenaarif s:ext =~? '\.zh' 91071d4279SBram Moolenaar if &enc =~ 'big5\|cp950' 92071d4279SBram Moolenaar let s:ext = ".zh.big5" 93446cb837SBram Moolenaar elseif &enc != 'utf-8' 94071d4279SBram Moolenaar let s:ext = ".zh.euc" 95d09acef4SBram Moolenaar elseif s:ext =~? 'zh_tw' || (exists("s:lang") && s:lang =~? 'zh_tw') 96d09acef4SBram Moolenaar let s:ext = ".zh_tw" 97d09acef4SBram Moolenaar else 98d09acef4SBram Moolenaar let s:ext = ".zh_cn" 99071d4279SBram Moolenaar endif 100071d4279SBram Moolenaarendif 101071d4279SBram Moolenaar 102071d4279SBram Moolenaar" The Polish tutor is available in two encodings, guess which one to use. 103c0197e28SBram Moolenaarif s:ext =~? '\.pl' 104c0197e28SBram Moolenaar if &enc =~ 1250 105071d4279SBram Moolenaar let s:ext = ".pl.cp1250" 106c0197e28SBram Moolenaar endif 107071d4279SBram Moolenaarendif 108071d4279SBram Moolenaar 109a5792f58SBram Moolenaar" The Turkish tutor is available in two encodings, guess which one to use 110a5792f58SBram Moolenaarif s:ext =~? '\.tr' 111*574ee7bcSBram Moolenaar if &enc == "iso-8859-9" || &enc == "cp1254" 112a5792f58SBram Moolenaar let s:ext = ".tr.iso9" 113a5792f58SBram Moolenaar endif 114a5792f58SBram Moolenaarendif 115a5792f58SBram Moolenaar 11645125098SBram Moolenaar" The Greek tutor is available in three encodings, guess what to use. 11745125098SBram Moolenaar" We used ".gr" (Greece) instead of ".el" (Greek); accept both. 11845125098SBram Moolenaarif s:ext =~? '\.gr\|\.el' 11945125098SBram Moolenaar if &enc == "iso-8859-7" 120446cb837SBram Moolenaar let s:ext = ".el" 12145125098SBram Moolenaar elseif &enc == "utf-8" 122446cb837SBram Moolenaar let s:ext = ".el.utf-8" 12345125098SBram Moolenaar elseif &enc =~ 737 124446cb837SBram Moolenaar let s:ext = ".el.cp737" 125071d4279SBram Moolenaar endif 12645125098SBram Moolenaarendif 127071d4279SBram Moolenaar 128d7afed37SBram Moolenaar" The Slovak tutor is available in three encodings, guess which one to use 129d7afed37SBram Moolenaarif s:ext =~? '\.sk' 130446cb837SBram Moolenaar if &enc =~ 1250 131071d4279SBram Moolenaar let s:ext = ".sk.cp1250" 132071d4279SBram Moolenaar endif 133d7afed37SBram Moolenaarendif 134d7afed37SBram Moolenaar 135946e27abSBram Moolenaar" The Slovak tutor is available in two encodings, guess which one to use 136946e27abSBram Moolenaar" Note that the utf-8 version is the original, the cp1250 version is created 137946e27abSBram Moolenaar" from it. 138946e27abSBram Moolenaarif s:ext =~? '\.sr' 139946e27abSBram Moolenaar if &enc =~ 1250 140946e27abSBram Moolenaar let s:ext = ".sr.cp1250" 141946e27abSBram Moolenaar endif 142946e27abSBram Moolenaarendif 143946e27abSBram Moolenaar 144d7afed37SBram Moolenaar" The Czech tutor is available in three encodings, guess which one to use 145d7afed37SBram Moolenaarif s:ext =~? '\.cs' 146446cb837SBram Moolenaar if &enc =~ 1250 147d7afed37SBram Moolenaar let s:ext = ".cs.cp1250" 148d7afed37SBram Moolenaar endif 149d7afed37SBram Moolenaarendif 150071d4279SBram Moolenaar 151d9380f5cSBram Moolenaar" The Russian tutor is available in three encodings, guess which one to use. 152d9380f5cSBram Moolenaarif s:ext =~? '\.ru' 153446cb837SBram Moolenaar if &enc =~ '1251' 154d9380f5cSBram Moolenaar let s:ext = '.ru.cp1251' 155d9380f5cSBram Moolenaar elseif &enc =~ 'koi8' 156d9380f5cSBram Moolenaar let s:ext = '.ru' 157d9380f5cSBram Moolenaar endif 158071d4279SBram Moolenaarendif 159071d4279SBram Moolenaar 160446cb837SBram Moolenaar" The Hungarian tutor is available in three encodings, guess which one to use. 161d7afed37SBram Moolenaarif s:ext =~? '\.hu' 162446cb837SBram Moolenaar if &enc =~ 1250 163446cb837SBram Moolenaar let s:ext = ".hu.cp1250" 164d7afed37SBram Moolenaar elseif &enc =~ 'iso-8859-2' 165d7afed37SBram Moolenaar let s:ext = '.hu' 166d7afed37SBram Moolenaar endif 167d7afed37SBram Moolenaarendif 168d7afed37SBram Moolenaar 169446cb837SBram Moolenaar" The Croatian tutor is available in three encodings, guess which one to use. 170446cb837SBram Moolenaarif s:ext =~? '\.hr' 171446cb837SBram Moolenaar if &enc =~ 1250 172446cb837SBram Moolenaar let s:ext = ".hr.cp1250" 173446cb837SBram Moolenaar elseif &enc =~ 'iso-8859-2' 174446cb837SBram Moolenaar let s:ext = '.hr' 175446cb837SBram Moolenaar endif 176071d4279SBram Moolenaarendif 177071d4279SBram Moolenaar 178446cb837SBram Moolenaar" If 'encoding' is utf-8 s:ext must end in utf-8. 179446cb837SBram Moolenaarif &enc == 'utf-8' && s:ext !~ '\.utf-8' 180e37d50a5SBram Moolenaar let s:ext .= '.utf-8' 181071d4279SBram Moolenaarendif 182071d4279SBram Moolenaar 183071d4279SBram Moolenaar" 2. Build the name of the file: 184071d4279SBram Moolenaarlet s:tutorfile = "/tutor/tutor" 185071d4279SBram Moolenaarlet s:tutorxx = $VIMRUNTIME . s:tutorfile . s:ext 186071d4279SBram Moolenaar 187071d4279SBram Moolenaar" 3. Finding the file: 188071d4279SBram Moolenaarif filereadable(s:tutorxx) 189071d4279SBram Moolenaar let $TUTOR = s:tutorxx 190a9604e61SBram Moolenaarelseif s:ext !~ '\.utf-8' && filereadable(s:tutorxx . ".utf-8") 191a9604e61SBram Moolenaar " Fallback to utf-8 if available. 192a9604e61SBram Moolenaar let $TUTOR = s:tutorxx . ".utf-8" 193071d4279SBram Moolenaarelse 194071d4279SBram Moolenaar let $TUTOR = $VIMRUNTIME . s:tutorfile 195071d4279SBram Moolenaar echo "The file " . s:tutorxx . " does not exist.\n" 196071d4279SBram Moolenaar echo "Copying English version: " . $TUTOR 197071d4279SBram Moolenaar 4sleep 198071d4279SBram Moolenaarendif 199071d4279SBram Moolenaar 200071d4279SBram Moolenaar" 4. Making the copy and exiting Vim: 201071d4279SBram Moolenaare $TUTOR 202071d4279SBram Moolenaarwq! $TUTORCOPY 203