Locale

netstat 輸出中的語言

  • October 14, 2015

我這裡有一個程序,它取決於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 的發行版,則需要手動執行此操作:

  1. 將相關的語言環境名稱添加到/etc/locale.gen. 例如:
pt_PT.UTF-8 UTF-8
  1. 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

引用自:https://unix.stackexchange.com/questions/236028