Тестирование на наличие локали в Vimscript - PullRequest
0 голосов
/ 10 октября 2010

Одна из моих проблем при создании портативного .vimrc связана с локалями.Допустим, я всегда хочу использовать английский язык для сообщений.В зависимости от версии ОС и Vim, необходимая команда может быть lang messages en, lang messages en_US, lang messages English_US и т. Д. Теперь я могу сделать это:

try
  lang messages en
catch
  try
    lang messages en_US
  catch
    try
      lang messages English_US
    catch
      ...
    endtry
  endtry
endtry

но есть ли более простой способ?

1 Ответ

3 голосов
/ 10 октября 2010

Согласно справке vim, вы можете использовать let $LANG="en", поэтому по крайней мере следующие работы (обратите внимание, что --cmd выполняется до vimrc):

vim --cmd 'let $LANG="en"'

, но это приводит к следующей ошибке:

perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
        LANGUAGE = "",
        LC_ALL = (unset),
        LANG = "en"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").

, так что это работает только для английского языка (поскольку C локаль английская).

Вы также можете использовать execute:

for s:lang in ["en", "en_US", "en_US.UTF-8", "English_US"]
    try
        execute 'language messages '.s:lang
        break
    catch /^Vim(language):E197:/
        " Do nothing
    endtry
endfor
unlet s:lang
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...