缺少“en”語言環境
我正在使用 openSUSE Tumbleweed,我正在嘗試將我的時間普遍更改為 24 小時制。主要用於 KDE 鎖屏,還有其他的東西。
我的第一次嘗試是在 /etc/sysconfig/language(通過 YaST)中設置 RC_LC_TIME=“en_GB”,但沒有意識到“TIME”也會影響日期,所以現在我在 Thunderbird 中的日期欄位是 DD/MM/YYYY,即迷失方向。
接下來,我嘗試遍歷所有語言環境以查看其他選項可能有效:
cd /usr/share/locale for f in *; do echo -e "$f\t$(LC_TIME=$f date +"%A %B %c")";done | grep "Tuesday December Tue Dec" | grep -v "[AP]M" | less
這給了我很多選擇,其中最明顯的是“en”。所以我嘗試了,但現在我在登錄時收到以下錯誤:
-bash: warning: setlocale: LC_TIME: cannot change locale (en): No such file or directory -bash: warning: setlocale: LC_TIME: cannot change locale (en) /usr/bin/manpath: can't set the locale; make sure $LC_* and $LANG are correct
因此,在我查看語言環境列表試錯以查看哪些有效之前,這裡的正確方法是什麼?我只想要 en_US 但有 24 小時時間。
en
不是語言環境名稱。並非所有目錄/usr/share/locales
都是語言環境名稱。有些包含由多個語言環境共享的數據。例如,en
包含所有變體英語語言使用的文件。大多數語言環境名稱都有格式,例如(美國英語)、(英國英語)、(加拿大英語)等。
*language*_*REGION*``en_US``en_GB``en_CA
要獲取(基於 Glibc,即非嵌入式 Linux)系統上可用的語言環境列表,請執行
locale -a
在某些系統上(至少在 Debian 和衍生系統上),並非所有語言環境都可以預設使用。
locale -a
僅列出可供使用的語言環境。完整的語言環境列表可在/usr/share/i18n/SUPPORTED
. 如果要準備好語言環境,請執行locale.gen
. (檢查系統上的手冊頁:不同的版本有不同的語法。)您可以在可用的語言環境中搜尋具有所需屬性的語言環境。有關語言環境的資訊位於
/usr/share/i18n/locales/
. 您想要一個預設日期格式為%m
before%d
、預設時間格式為 24 小時制且工作日名稱為英文的格式。這是一個腳本,它搜尋可用的語言環境並報告具有前一個月日期和英語工作日的那些。for x in /usr/share/i18n/locales/*; do awk ' $1=="t_fmt" {t = $0} $1 == "d_fmt" && /%m.*%d/ {mdy=1} $1=="day" && (/Sunday/ || /Monday/) {english=1} END {if (english && mdy) {print FILENAME, t}} ' $x; done
我的系統上的輸出:
/usr/share/i18n/locales/en_CA t_fmt "%r" /usr/share/i18n/locales/en_DK t_fmt "%T" /usr/share/i18n/locales/en_US t_fmt "%r"
%r
是 12 小時制,%T
是 24 小時制。所以en_DK
語言環境有你想要的屬性。您可能想要指定文本編碼,可能是en_DK.UTF-8
.