最近測試Zabbix 5.0,去修改語言時發現不能選擇「Chinese(zh_CN)」,這個選項在下拉框中是灰色的(沒法選擇)。提示「You are not able to choose some of the languages, because locales for them are not installed on the web server.」, 操做系統爲CentOS Linux release 8.1.1911 (Core) php
從旁邊的提示信息判斷,多是Web服務器沒有安裝中文包,可是也有可能Zabbix把對中文的支持給關閉了,因此咱們先檢查一下php代碼,找到/usr/share/zabbix/include/下的locales.inc.php文件linux
如上所示,Zabbix是容許你選擇「Chinese(zh_CN)」選項的,那麼多是沒有安裝中文包,那麼接下來,咱們來檢查一下這臺服務器是否安裝中文包。web
# locale -a | grep "zh_CN"
輸出爲空,那麼能夠判斷這臺服務器沒有安裝中文包,下面來安裝。服務器
查找有哪些語言安裝包app
#yum search langpacks
安裝中文語言包有下面兩種方式less
#yum install langpacks-zh_CN.noarch
#dnf install langpacks-zh_CN.noarch
我使用yum安裝成功後,檢查發現下面輸出依然爲空,這個是由於這裏沒有安裝glibc-common包,須要安裝glibc-common實現對已安裝語言包的識別。測試
# locale -a | grep "zh_CN"字體
# dnf install glibc-commonthis
安裝完glibc-common包,驗證測試langpacks-zh_CN.noarch已經安裝成功了。spa
# locale -a | grep zh_CN
zh_CN
zh_CN.gb18030
zh_CN.gbk
zh_CN.utf8
完成上面步驟後,回到Zabbix界面刷新後,就能夠選擇「Chinese(zh_CN)」了。問題解決。
Zabbix圖片文字亂碼
在後續的使用過程當中,發現一些界面中文顯示爲亂碼.以下截圖所示:
在/usr/share/zabbix/include/下,檢查defines.inc.php,能夠發現代碼裏面定義了下面字體相關常量
define('ZBX_FONTPATH', realpath('assets/fonts')); // where to search for font (GD > 2.0.18)
define('ZBX_GRAPH_FONT_NAME', 'graphfont'); // font file name
define('ZBX_FONT_NAME', 'graphfont');
define('ZBX_PREG_DEF_FONT_STRING', '/^[0-9\.:% ]+$/')
define('ZBX_STYLE_MONOSPACE_FONT', 'monospace-font');
能夠看出zabbix使用了/usr/share/zabbix/assets/fonts下面定義的字體文件,而沒有使用linux的系統字體,從網上搜索的資料來看,能夠將Windows下的一些字體文件上傳到這個目錄來解決亂碼問題。
方案1:使用Windows中的字體替換graphfont.ttf
從C:\Windows\Fonts中找到微軟雅黑字體上傳到/usr/share/zabbix/assets/fonts下面後,將雅黑字體MSYH.TTF更名爲graphfont.ttf
# mv graphfont.ttf graphfont.ttf.bak
# mv MSYH.TTF graphfont.ttf
完整上面操做後,刷新頁面,發現亂碼確實解決了
方案2:修改代碼中的字體相關常量
sftp> cd /usr/share/zabbix/assets/fonts
sftp> put -r "C:\Windows\Fonts\STFANGSO.TTF"
Uploading STFANGSO.TTF to /usr/share/zabbix/assets/fonts/STFANGSO.TTF
100% 11096KB 11096KB/s 00:00:00
# mv STFANGSO.TTF STFANGSO.ttf #這裏必須將文件後綴類型從TTF改成ttf,不然沒法識別,或者說必須修改代碼才能識別。
define('ZBX_FONTPATH', realpath('assets/fonts')); // where to search for font (GD > 2.0.18)
#define('ZBX_GRAPH_FONT_NAME', 'graphfont'); // font file name
define('ZBX_GRAPH_FONT_NAME', 'STFANGSO'); // font file name
define('ZBX_GRAPH_LEGEND_HEIGHT', 120); // when graph height is less then this value, some legend will not show up
#define('ZBX_FONT_NAME', 'graphfont');
define('ZBX_FONT_NAME', '華文仿宋');
完成後刷新頁面,問題也能夠解決。固然你也能夠選擇一個你喜歡的字體。