Mlang
Nvim 的 :help
頁面,從 原始碼 使用 tree-sitter-vimdoc 解析器 產生。
Vim 從環境中取得地區設定。在大多數情況下,這表示 Vim 會使用您偏好的語言,除非該語言不可用。
若要查看系統上支援的地區設定名稱列表,請查看以下其中一個目錄 (適用於 Unix)
/usr/lib/locale
/usr/share/locale
不幸的是,大小寫差異很重要。還要留意 "-" 和 "_" 的使用。
:lan :lang :language E197 :lan[guage] :lan[guage] mes[sages] :lan[guage] cty[pe] :lan[guage] tim[e] :lan[guage] col[late] 列印目前的語言 (又稱地區設定)。使用 "messages" 引數,會列印用於訊息的語言。技術上:LC_MESSAGES。使用 "ctype" 引數,會列印用於字元編碼的語言。技術上:LC_CTYPE。使用 "time" 引數,會列印用於 strftime() 的語言。技術上:LC_TIME。使用 "collate" 引數,會列印用於排序順序的語言。技術上:LC_COLLATE。不使用引數,則會列印地區設定的所有部分 (這取決於系統)。也可以使用
v:lang、
v:ctype、
v:collate 和
v:lc_time 變數取得目前的語言。
:lan[guage]
{name}
:lan[guage] mes[sages]
{name}
:lan[guage] cty[pe]
{name}
:lan[guage] tim[e]
{name}
:lan[guage] col[late]
{name}
將目前的語言 (又稱地區設定) 設定為
{name}
。地區設定
{name}
必須是您系統上的有效地區設定。有些系統接受別名,例如 "en" 或 "en_US",但有些系統只接受完整規格,例如 "en_US.ISO_8859-1"。在 Unix 系統上,您可以使用此命令來查看支援哪些地區設定
:!locale -a
使用 "messages" 引數,會設定用於訊息的語言。當您想使用英文訊息同時編輯日文文字時,這可能會有所不同。這會設定 $LC_MESSAGES。使用 "ctype" 引數,會設定用於字元編碼的語言。這會影響 Vim 所連結的程式庫。將此設定為與
'encoding' 或 "C" 不同的值是不尋常的。這會設定 $LC_CTYPE。使用 "time" 引數,會設定用於時間和日期訊息的語言。這會影響 strftime()。這會設定 $LC_TIME。使用 "collate" 引數,會設定用於排序順序的語言。這會影響字元的排序。這會設定 $LC_COLLATE。不使用引數,則會設定全部,此外還會設定 $LANG。LC_NUMERIC 值將始終設定為 "C",以便浮點數使用 '.' 作為小數點。這對於依賴語言的項目 (某些訊息、時間和日期格式) 將會有所不同。並非所有系統都完全支援。如果此操作失敗,將會顯示錯誤訊息。如果成功,則沒有訊息。範例
:language
Current language: C
:language de_DE.ISO_8859-1
:language mes
Current messages language: de_DE.ISO_8859-1
:lang mes en
訊息檔案 (vim.mo) 必須放在 "$VIMRUNTIME/lang/xx/LC_MESSAGES" 中,其中 "xx" 是語言的縮寫 (通常是兩個字母)。如果您編寫自己的翻譯,則需要產生 .po 檔案並將其轉換為 .mo 檔案。
若要覆寫語言的自動選擇,請將 $LANG 變數設定為您選擇的語言。使用 "en" 停用翻譯。
:let $LANG = 'ja'
(Muraoka Taro 撰寫的 Windows 文字)
請注意,如果在翻譯完成後對選單進行了變更,則部分選單可能會以英文顯示。請嘗試聯繫翻譯的維護人員,並要求他更新翻譯。您可以在 "$VIMRUNTIME/lang/menu_<lang>.vim" 中找到翻譯人員的姓名和電子郵件地址。
若要設定用於選單的字型,請使用
:highlight 命令。範例
:highlight Menu font=k12,r12
地區設定別名
不幸的是,地區設定名稱在各種系統上有所不同,即使它們是針對相同的語言和編碼。如果您沒有獲得預期的選單翻譯,請檢查此命令的輸出
echo v:lang
現在檢查 "$VIMRUNTIME/lang" 目錄中是否有使用類似語言的選單翻譯檔案。 "-" 如果變成 "_",就會導致找不到檔案!另一個常見的差異是 "iso8859-1" 與 "iso_8859-1"。幸運的是,Vim 會將所有名稱轉換為小寫,因此您不必擔心大小寫差異。空格會變更為底線,以避免必須逸出它們。
如果您找到適用於您語言的選單翻譯檔案,但名稱不同,請在您自己的執行階段目錄中建立一個檔案來載入該檔案。該檔案的名稱可能是
~/.config/nvim/lang/menu_<v:lang>.vim
檢查
'runtimepath' 選項,以瞭解搜尋的目錄。在該檔案中放入一個命令,以載入其他名稱的選單檔案
runtime lang/menu_<other_lang>.vim
:menut[ranslate] clear 清除所有選單翻譯。
:menut[ranslate]
{english}
{mylang}
將選單名稱
{english}
翻譯為
{mylang}
。所有特殊字元,例如 "&" 和 "<Tab>" 都需要包含在內。空格和點需要使用反斜線逸出,就像其他
:menu 命令一樣。
{english}
中的大小寫會忽略。
有關範例,請參閱 $VIMRUNTIME/lang 目錄。
若要試用您的翻譯,您必須先移除所有選單。這是您如何在不重新啟動 Vim 的情況下執行此操作的方式
:source $VIMRUNTIME/delmenu.vim
:source <your-new-menu-file>
:source $VIMRUNTIME/menu.vim
選單路徑的每個部分都會單獨翻譯。結果是當 "Help" 翻譯為 "Hilfe" 且 "Overview" 翻譯為 "Überblick" 時,"Help.Overview" 將翻譯為 "Hilfe.Überblick"。
在 Vim 指令碼中,您可以使用
v:lang 變數來取得目前的語言 (地區設定)。預設值為 "C" 或來自 $LANG 環境變數。
以下範例示範如何以簡單的方式使用此變數,使訊息適應用戶的語言偏好,
:if v:lang =~ "de_DE"
: echo "Guten Morgen"
:else
: echo "Good morning"
:endif