Locale
netstat 輸出中的語言
我這裡有一個程序,它取決於
netstat
. 更具體:netstat -apn
。這是一個正常輸出的例子。
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN -
我的一個客戶有一些其他的輸出(例如):
Proto Recv-Q Send-Q Endereço Local Endereço Remoto Estado PID/Program name tcp 0 0 0.0.0.0:111 0.0.0.0:* OUÇA -
我想用改變的輸出來測試我的軟體
netstat
,比如客戶端的輸出。所以問題是:我應該怎麼做才能改變 的輸出語言
netstat
,這樣我才能重現錯誤,客戶得到?我已經嘗試用 更改語言
export LANG=pt_PT
,但輸出沒有改變。
首先,您需要確保您的機器設置了必要的語言環境。您可以使用 . 查看可用的語言環境
locale -a
。例如,在我的系統上:$ locale -a C C.UTF-8 el_GR.utf8 en_US.utf8 fr_FR.utf8 POSIX
正如您在上面看到的,我沒有葡萄牙語語言環境。在我的 Debian 上,我可以通過執行
sudo dpkg-reconfigure locales
並選擇相關的語言環境來創建它:包配置
┌──────────────────────────┤ Configuring locales ├──────────────────────────┐ │ Locales are a framework to switch between multiple languages and allow │ │ users to use their language, country, characters, collation order, etc. │ │ │ │ Please choose which locales to generate. UTF-8 locales should be chosen │ │ by default, particularly for new installations. Other character sets may │ │ be useful for backwards compatibility with older systems and software. │ │ │ │ Locales to be generated: │ │ │ │ [ ] pt_BR.UTF-8 UTF-8 ↑ │ │ [ ] pt_PT ISO-8859-1 ▒ │ │ [*] pt_PT.UTF-8 UTF-8 ▮ │ │ [ ] pt_PT@euro ISO-8859-15 ▒ │ │ [ ] quz_PE UTF-8 ↓ │ │ │ │ │ │ <Ok> <Cancel> │ │ │ └───────────────────────────────────────────────────────────────────────────┘
擊中 後
Enter
,您應該得到:$ sudo dpkg-reconfigure locales Generating locales (this might take a while)... el_GR.UTF-8... done en_US.UTF-8... done fr_FR.UTF-8... done pt_PT.UTF-8... done Generation complete.
如果您不使用基於 Debian 的發行版,則需要手動執行此操作:
- 將相關的語言環境名稱添加到
/etc/locale.gen
. 例如:pt_PT.UTF-8 UTF-8
- 跑
locale-gen
在上述步驟(手動方法或其中
dpkg-reconfigre locales
一個)之後,locale -a
還將列出葡萄牙語語言環境:$ locale -a C C.UTF-8 el_GR.utf8 en_US.utf8 fr_FR.utf8 POSIX pt_PT.utf8
現在,您可以選擇顯示的語言輸出:
$ LC_ALL=el_GR.utf8 date Τετ 14 Οκτ 2015 12:34:28 μμ EEST $ LC_ALL=fr_FR.utf8 date mercredi 14 octobre 2015, 12:35:07 (UTC+0300) $ LC_ALL=pt_PT.utf8 date Qua Out 14 12:35:11 EEST 2015
但是,特定程序是否能夠在所選語言環境中列印輸出將取決於它是否已被翻譯;關於軟體包是否附帶相關的
.mo
翻譯文件。在 的情況下netstat
,這是/usr/share/locale/${LANG%_*}/LC_MESSAGES/net-tools.mo
。在我的 Debian 上,法語語言環境有它,但葡萄牙語語言環境沒有:$ ls /usr/share/locale/{fr,pt}/LC_MESSAGES/net* ls: cannot access /usr/share/locale/pt/LC_MESSAGES/net*: No such file or directory /usr/share/locale/fr/LC_MESSAGES/net-tools.mo
這就是我可以
netstat
用法語跑步的原因:$ LC_ALL=fr_FR.utf8 netstat -apn | head -n2 (Tous les processus ne peuvent être identifiés, les infos sur les processus non possédés ne seront pas affichées, vous devez être root pour les voir toutes.) Connexions Internet actives (serveurs et établies) Proto Recv-Q Send-Q Adresse locale Adresse distante Etat PID/Program name
但不是葡萄牙語:
$ LC_ALL=pt_PT.utf8 netstat -apn | head -n2 (Not all processes could be identified, non-owned process info will not be shown, you would have to be root to see it all.) Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name