简介
最近经常有客户询问如何给 3CX 后台新增语言,今天我们介绍一下如何给 3CX 新增自定义语言。
在开始前需要声明一下:
修改后台文件无法得到 3CX 支持。修改后的文件在系统更新后会被覆盖。
先介绍一下我们的环境(环境不同文件名和方法会有差异):
- Linux Debian 9.12
- 3CX V16 Update 5
后台翻译文件目录在/var/lib/3cxpbx/Data/Http/wwwroot/l10n
,目录下有个 language.xml
文件,我们打开看一下可以发现,有三种语言被注释了,其中有两种是有翻译文件的。这三种语言分别是:
- 丹麦语
- 希腊语(没有翻译文件)
- 日语
准备工作
需要提前两个文件:
- 翻译文件
- 可以参考其它语言的 json 文件为例进行翻译。这里我们使用丹麦语为例子。
- 地区图标。
- 地区图标大小为 24×24,需要是 base64 格式。
翻译文件需要放在 /var/lib/3cxpbx/Data/Http/wwwroot/l10n
目录下,命名方式请参考 ISO 639 的定义。这里我们以丹麦语为例,文件名是 da_DA.json
网上搜索图片转 base64 有很多网站能转换。这里我们以丹麦语为例子,base64 码如下:
data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABCklEQVRIiWMYBYQA4zEeg6cMDAy86Op+fHnMIOrkzaCzdyGYf7+oneFefxsDF48KKYH6mYWBgUGKhtHAywSyhYYWfGaioeFgMPQtYPn+5QFWie8MHxh+Pn4O5/9+9Y7hG8MXBkYc6nFaIOEdilXi1/fXDPyG5nA+n7Uhg/RzbwYOTtISHeP///8/YcsHVAK0T0UsNyOLsEr8+vGGgV/PhEGuMQ/Mfzl/LcPLTWsY2DkkSbKAcS8DH9Yg+sbwiUFS2YXB+M5uMP9WdDHDjWV9DDwMfKSY/5mFk0cJu81fHjOwyyMilFVchIGbgYcBl3pcYDQnE2UBrfIACPCC6oNntMxoNDJ32AAGBgYAjq1BQ1CKxtEAAAAASUVORK5CYII=
步骤
编辑 language.xml 文件
准备好文件以后就让我们开始自定义语言吧。
首先编辑 /var/lib/3cxpbx/Data/Http/wwwroot/l10n
下的 language.xml
文件。我们这里将丹麦语的注释去掉即可,如下图。
这里需要记住文件名和 culture 里的参数。
修改后保存。
修改 js 文件
接下来修改 main 的 js 文件。在 /var/lib/3cxpbx/Data/Http/wwwroot
目录下,文件名不同 3CX 版本会有不同。基本文件格式为 main.*.chunk.js
。我这里的文件名为 main.29bed22b.chunk.js
。
打开这个文件后,代码被放到一行中,不利于我们编辑,我们可以使用格式化的软件。比如:https://beautifier.io/。
修改后的文件如下:
在这个文件中,中文的函数名是 “ZRT+”,我们搜索这个有两个结果,先使用 function 模块的结果。在这个 function 下添加一行新的function,这里的名称可以自定义。我们使用 Zada,并在 t.exports
里放入地区图标的 base64 代码,即是上面准备的。
要使用地区标准还需要修改下面几个地方。跳转到搜索 ZRT+ 的另外一个结果。我们这里第一个参数命名为 pq,第二个命名为 uq。如下图新增这三个参数。
接着搜索 t.langs
,还需要修改几个参数。
到这里文件的修改就算是结束了。
设置 gz 文件
我们还需要设置 gz 文件。输入下列的命令将原来的 gz 文件做备份:
mv main.*.chunk.js.gz main.chunk.js.gz.bak
输入下面的命令重新生成 gz 文件:
gzip -k main.*.chunk.js
修改完后重载一下 nginx 服务器就可以看到效果了!
nginx -s reload