Mlang

Nvim 的 :help 頁面,從 原始碼 使用 tree-sitter-vimdoc 解析器 產生


多語言功能 multi-lang
這是有關使用各種語言的訊息和選單。關於編輯多位元組文字,請參閱 multibyte
基本概念在使用者手冊中說明:usr_45.txt
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:langv:ctypev:collatev: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 文字)

2. 選單 multilang-menus

有關基本概念,請參閱 45.2,尤其是使用 'langmenu'
請注意,如果在翻譯完成後對選單進行了變更,則部分選單可能會以英文顯示。請嘗試聯繫翻譯的維護人員,並要求他更新翻譯。您可以在 "$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

翻譯選單

如果您想自行翻譯,可以使用 :menutrans 命令,如下所述。建議將一種語言的翻譯放在 Vim 指令碼中。對於尚未翻譯的語言,請考慮成為維護人員,並讓所有 Vim 使用者都能使用您的翻譯。發送電子郵件給 Vim 維護人員 <[email protected]>。
:menut :menutrans :menutranslate :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"。

3. 指令碼 multilang-scripts

在 Vim 指令碼中,您可以使用 v:lang 變數來取得目前的語言 (地區設定)。預設值為 "C" 或來自 $LANG 環境變數。
以下範例示範如何以簡單的方式使用此變數,使訊息適應用戶的語言偏好,
:if v:lang =~ "de_DE"
:  echo "Guten Morgen"
:else
:  echo "Good morning"
:endif
主要
命令索引
快速參考