如何修復 Manjaro 上遺失的語言環境文件?

如何修復 Manjaro 上遺失的語言環境文件?

我正在運行 Manjaro Gnome 並使用套件管理器安裝了一些更新。從那時起,我不斷在控制台中收到這些訊息:

manpath: can't set the locale; make sure $LC_* and $LANG are correct
(anon):12: character not in range
manpath: can't set the locale; make sure $LC_* and $LANG are correct

運行locale給我這個輸出:

locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_MESSAGES to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory
LANG=en_US.UTF-8
LC_CTYPE=
LC_NUMERIC=en_US.UTF-8
LC_TIME=en_US.UTF-8
LC_COLLATE="en_US.UTF-8"
LC_MONETARY=en_US.UTF-8
LC_MESSAGES="en_US.UTF-8"
LC_PAPER=en_US.UTF-8
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT=en_US.UTF-8
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=

當我運行時,sudo locale-gen我收到一條錯誤訊息,指出檔案或目錄不存在

Generating locales...
  de_DE.UTF-8...failed to set locale!
[error] cannot open locale definition file `i18n_ctype': No such file or directory

當我註解掉(那麼唯一沒有註解掉的行是)de_DE.UTF-8 UTF-8時,我得到:/etc/locale.genen_US.UTF-8 UTF-8

Generating locales...
  en_US.UTF-8...failed to set locale!
[error] cannot open locale definition file `en_GB': No such file or directory

這是以下內容/usr/share/i18n/locales

de_DE                  translit_combining
en_US                  translit_compat
i18n                   translit_font
iso14651_t1            translit_fraction
iso14651_t1_common     translit_hangul
iso14651_t1_pinyin     translit_narrow
translit_circle        translit_neutral
translit_cjk_compat    translit_small
translit_cjk_variants  translit_wide

所以看起來文件en_GBi18n_ctype確實丟失了(儘管我不確定它們是否應該在這個資料夾中)

另外,如果我去設定->地區和語言,我無法改變語言(它說Unspecified [ANSI_X3.4-1968]。如果我點擊它,則在選擇語言彈出視窗。

我在網上發現問題可能出在glibc(並且根據歷史記錄,glibc在我運行的更新期間重新安裝了[2020-08-11T18:49:33+0200] [ALPM] reinstalled glibc (2.31-5))。但是,我不知道如何解決這個問題。套件管理器中沒有 glibc 的重新安裝按鈕,我不想做任何可能導致更大混亂的實驗。

有沒有辦法重新安裝/重置語言檔案?

更新

我使用NoExtractin/etc/pacman.conf來節省硬碟空間,如 [Arch wiki] 中所述(https://wiki.archlinux.org/index.php/Pacman/Tips_and_tricks#Installing_only_content_in_required_languages

NoExtract = usr/share/help/* !usr/share/help/en*
NoExtract = usr/share/gtk-doc/html/*
NoExtract = usr/share/locale/* usr/share/X11/locale/* usr/share/i18n/* opt/google/chrome/locales/*
NoExtract = !*locale*/en*/* !usr/share/i18n/charmaps/UTF-8.gz !usr/share/*locale*/locale.*
NoExtract = !usr/share/*locales/en_US !usr/share/*locales/i18n !usr/share/*locales/iso*
NoExtract = !usr/share/*locales/trans*
NoExtract = !*locale*/de*/* !usr/share/i18n/charmaps/UTF-8.gz !usr/share/*locale*/locale.*
NoExtract = !usr/share/*locales/de_DE !usr/share/*locales/i18n !usr/share/*locales/iso*
NoExtract = !usr/share/*locales/trans*
NoExtract = usr/share/qt4/translations/*
NoExtract = usr/share/man/* !usr/share/man/man*
NoExtract = usr/share/vim/vim*/lang/*
NoExtract = usr/lib/libreoffice/help/en-US/*

我想知道這是否是問題的一部分,也許重新安裝 glibc 時跳過了一些檔案。

答案1

  1. 編輯/etc/locale.gen

    取消註解該行:

    locale en_US.UTF-8
    
  2. 跑步sudo locale-gen

信用:https://nanxiao.me/en/fix-locale-configuration-issue-on-arch-linux/

答案2

我現在找到了解決方案。我不認為這是最好的方法,但它似乎對我有用。

我下載了glibc包並手動將遺失的文件(en_GBi18n_ctype)複製到/usr/share/i18n/locales/.

然後運行sudo locale-gen

答案3

/etc/locale.gen您可以透過重新安裝軟體包來取回您的資訊glibc。這將在安裝時產生一個新檔案。

答案4

就我而言,問題是由KDE Plasma Settings Manager- 將區域設定配置為不存在的配置引起的。

在 Manjaro 安裝過程中,我選擇了Finland/English那裡,因為它可用。為什麼不?它決定了fi_EN.UTF-8這至少是無稽之談,因為glibc不包含這樣的組合。

您可以列出glibc檢查其包文件的語言,如下所示:

pacman -Ql glibc | grep fi_

在我的例子中顯示了這兩個:

glibc /usr/share/i18n/locales/fi_FI
glibc /usr/share/i18n/locales/fi_FI@euro

fi_FI是正確的,而不是fi_EN兩者都正確fi_US。等離子,你真丟臉。

取代grep fi_上面命令中的 來尋找您的語言,例如波蘭語:grep pl_、德語:grep de_等。

locale然後將其與命令調用的結果進行比較。就我而言,我需要透過編輯來糾正它/etc/locale.gen。您可以按照 Manjaro 的故障排除:

https://wiki.manjaro.org/index.php/Locale

或者更確切地說,在 Holly Arch Wiki 中:

https://wiki.archlinux.org/title/locale

相關內容