diff --git a/ipfilter/lang/zh b/ipfilter/lang/zh
new file mode 100644
index 000000000..e69de29bb
diff --git a/ipfilter/lang/zh.auto b/ipfilter/lang/zh.auto
new file mode 100644
index 000000000..c8d7cbaee
--- /dev/null
+++ b/ipfilter/lang/zh.auto
@@ -0,0 +1,303 @@
+index_title=IPFilter防火墙
+index_ecmd=在系统上找不到IPFilter防火墙命令 $1。可能未安装,或者模块配置不正确。
+index_version=IPFilter版本 $1
+index_apply=应用配置
+index_applydesc=单击此按钮可激活上面列出的防火墙配置。当前有效的所有防火墙规则都将被刷新并替换
+index_applydesc2=单击此按钮可在群集中的所有服务器上激活上面列出的防火墙配置。当前有效的所有防火墙规则都将被刷新并替换
+index_unapply=还原配置
+index_unapplydesc=单击此按钮可将上面列出的配置重置为当前处于活动状态的配置。
警告-任何不活动的规则,规则注释和主机名都将丢失。
+index_boot=启动时激活
+index_bootdesc=更改此选项可控制是否在引导时激活防火墙。
+index_setup=您的系统上尚未设置IPFilter防火墙。 Webmin可以为您设置一个文件,并将其存储在文件 $1中,其初始设置基于您在下面选择的防火墙类型。
+index_rsetup=您系统上的IPFilter防火墙配置将被重置。 Webmin将设置新的默认规则,并将其存储在文件 $1中,其初始设置基于您在下面选择的防火墙类型。
+index_auto0=允许所有流量
+index_auto1=在外部接口上进行网络地址转换:
+index_auto2=阻止外部接口上的所有传入连接:
+index_auto3=在外部接口上阻止除SSH和IDENT以外的所有内容:
+index_auto4=阻止除接口上的SSH,IDENT,Ping和高端口以外的所有端口:
+index_auto=设置防火墙
+index_atboot=在启动时启用防火墙?
+index_count1=包数
+index_count2=数据
+index_reset=重置防火墙
+index_resetdesc=单击此按钮以清除所有现有的防火墙规则,并为基本的初始配置设置新规则。
+index_return=模块索引
+index_existing=Webmin已检测到当前正在使用的 $1 IPfilter防火墙规则,这些规则未记录在保存文件 $2中。这些规则可能是通过脚本设置的,该模块不知道如何读取和编辑。
如果要使用此模块来管理IPtables防火墙,请单击下面的按钮将现有规则转换为保存文件。 ,然后禁用现有的防火墙脚本。
+index_saveex=保存防火墙规则
+index_headerex=现有防火墙配置
+index_dir=方向
+index_active=活性?
+index_action=行动
+index_desc=条件
+index_cmt=评论
+index_move=移动
+index_radd=加
+index_add=添加新的防火墙规则。
+index_add2=添加防火墙规则
+index_add3=添加NAT映射
+index_add4=添加NAT重定向
+index_delete=删除所选
+index_cluster=集群服务器
+index_clusterdesc=单击此按钮可以设置其他Webmin服务器,防火墙配置将自动复制到这些Webmin服务器。
+index_natnone=尚未定义网络地址转换规则。
+index_nataction=NAT模式
+index_natfrom=匹配的数据包
+index_natto=翻译
+dir_in=传入
+dir_out=外向
+action_pass=通过
+action_block=阻止
+action_skip=跳跃
+action_log=记录
+action_count=计数
+action_auth=授权
+action_preauth=预认证
+action_call=通话功能
+action_map=制图
+action_rdr=重新导向
+action_bimap=双向映射
+action_map-block=块映射
+laction_pass=通行证包
+laction_block=带有ICMP代码的封包
+laction_log=日志包,级别
+laction_count=更新计数器
+laction_skip=跳过下一个规则
+laction_auth=用户空间授权
+laction_preauth=检查以前的授权
+laction_call=调用内核函数
+edit_title1=建立规则
+edit_title2=编辑规则
+edit_header1=规则动作
+edit_none=<无>
+edit_rst=TCP重置
+edit_return_dest=伪造的ICMP源地址
+edit_cmt=规则注释
+edit_active=规则活跃吗?
+edit_active1=是
+edit_active0=否(已注释)
+edit_action=采取的行动
+edit_log_body=原木
+edit_log_first=只记录第一个数据包
+edit_log_orblock=如果记录失败则阻止
+edit_log_level=记录级别
+edit_fac=有设施
+edit_callnow=现在打电话
+edit_header2=来源和目的地
+edit_all=匹配的数据包
+edit_all1=所有包
+edit_all0=在下面匹配源和目标
+edit_from=封包来源
+edit_to=数据包目的地
+edit_any=任何地址
+edit_thishost=该服务器
+edit_host=主机名或地址
+edit_mask=网络掩码
+edit_nummask=前缀长度
+edit_opt=(可选的)
+edit_portfrom=源端口
+edit_portto=目的端口
+edit_anyport=任何端口
+edit_portcomp=端口为 $1 $2
+edit_portrange=端口在 $1和 $2之间
+edit_portrangenot=端口不在 $1和 $2之间
+edit_header3=其他符合条件
+edit_proto=协议
+edit_protoany=<任何协议>
+edit_prototcpudp=
+edit_tos=服务种类
+edit_ttl=生存时间
+edit_tosany=匹配任何
+edit_dir=包方向
+edit_header4=规则动作
+edit_quick=如果此规则匹配,请不要检查其他规则
+edit_tag=带有ID的标签
+edit_on=在界面上
+edit_dupto=接口上的重复数据包
+edit_duptoip=到目标IP
+edit_olog=还记录级别的数据包
+edit_oifc=其他 ..
+edit_fastroute=在界面上发送
+edit_fastrouteip=到目标IP
+edit_replyto=在界面上回复
+edit_anyiface=<任何界面>
+edit_keep=保留数据包的历史记录
+edit_keepstate=流状态
+edit_keepfrags=碎片化
+edit_flags=TCP标志
+edit_flagsany=任何
+edit_flags2=在......之外
+edit_icmp=ICMP类型
+edit_icmpany=<任何类型>
+edit_icmpcode=和代码
+edit_codeany=<任何代码>
+save_err=保存规则失败
+save_ehostfrom=源主机名缺失或无效
+save_ehostto=目标主机名缺失或无效
+save_emaskfrom=缺少或无效的源网络掩码
+save_emaskto=目的地网络掩码缺失或无效
+save_enummaskfrom=数字源前缀长度缺失或无效
+save_enummaskto=数字目的地前缀长度丢失或无效
+save_ecall=缺少或无效的呼叫函数
+save_eskip=缺少或无效的要跳过的规则数量
+save_eportnumfrom=源端口号缺失或无效
+save_eportnumto=目的地端口号缺失或无效
+save_eportstartfrom=源端口范围丢失或启动无效
+save_eportstartto=目标端口范围丢失或无效启动
+save_eportendfrom=源端口范围丢失或无效
+save_eportendto=目的地端口范围丢失或无效
+save_etos=服务编号缺少或无效的十进制或十六进制类型
+save_ettl=缺少或无效的小数或十六进制生存时间数字
+save_eon=接口缺失或无效
+save_eflags1=第一组TCP标志缺失或无效
+save_eflags2=无效的第二组TCP标志
+save_eicmp=只能为ICMP协议选择ICMP类型
+save_etag=标签ID编号缺失或无效
+save_edupto=重复数据包的接口丢失或无效
+save_eduptoip=重复数据包的无效IP地址
+save_eto=缺少或无效的接口继续发送
+save_etoip=要发送的IP地址无效
+save_ereplyto=缺少或无效的界面以进行回复
+save_ereplytoip=无效的IP位址回覆
+apply_err=应用配置失败
+apply_remote=来自 $1的错误: $2
+unapply_err=还原配置失败
+unapply_ein=无法获取输入规则
+unapply_eout=无法获取输出规则
+desc_if=如果是 $1
+desc_and=和
+desc_always=总是
+desc_proto=协议为 $1
+desc_on=介面为 $1
+desc_from_thishost=来源是此主机
+desc_to_thishost=目的地是这个主机
+desc_fromto_thishost=目的地是这个主机
+desc_from=来源是 $1
+desc_to=目的地是 $1
+desc_fromto=目的地是 $1
+desc_portcomp_from=源端口 $1 $2
+desc_portcomp_fromto=目标端口 $1 $2
+desc_portcomp_to=目标端口 $1 $2
+desc_portrange_from=源端口在 $1和 $2之间
+desc_portrange_fromto=目标端口在 $1和 $2之间
+desc_portrange_to=目标端口在 $1和 $2之间
+desc_portrangenot_from=源端口不在 $1和 $2之间
+desc_portrangenot_fromto=目标端口不在 $1和 $2之间
+desc_portrangenot_to=目标端口不在 $1和 $2之间
+desc_where=其中 $1
+desc_all=对于所有数据包
+desc_natfrom=来自网络 $1网络掩码 $2
+desc_natfromh=来自主机 $1
+desc_natto=地址 $1网络掩码 $2
+desc_nattoh=主机 $1
+desc_natrange=范围从 $1到 $2
+desc_touc=至 $1
+desc_tolc=至 $1
+desc_rdr=IP地址 $1端口 $2
+desc_dport1=端口为 $1
+desc_dport2=端口在 $1和 $2之间
+desc_nattoiface=接口地址
+log_create_rule=已创建 $1规则
+log_delete_rule=已删除 $1规则
+log_modify_rule=修改的 $1规则
+log_move_rule=已移动 $1规则
+log_create_rule_l=已创建 $1规则 $2
+log_delete_rule_l=已删除 $1规则 $2
+log_modify_rule_l=修改的 $1规则 $2
+log_move_rule_l=已移动 $1规则 $2
+log_create_nat=已创建 $1 NAT规则
+log_delete_nat=已删除 $1 NAT规则
+log_modify_nat=修改的 $1 NAT规则
+log_move_nat=已移动 $1 NAT规则
+log_create_nat_l=已创建 $1 NAT规则 $2 $3
+log_delete_nat_l=已删除 $1 NAT规则 $2 $3
+log_modify_nat_l=修改后的 $1 NAT规则 $2 $3
+log_move_nat_l=已将 $1 NAT规则移至 $2 $3
+log_apply=应用的防火墙配置
+log_bootup=启动时启用防火墙
+log_bootdown=引导时禁用防火墙
+log_convert=转换后的活动防火墙规则
+log_setup=执行初始防火墙设置
+log_unapply=恢复防火墙配置
+log_delsel=已删除 $1条规则
+log_delselnat=已删除 $1 NAT规则
+log_add_host=添加了群集服务器 $1
+log_add_group=从组 $1添加了群集服务器
+log_delete_host=删除了群集服务器 $1
+log_delete_group=删除了 $1个群集服务器
+cluster_title=群集防火墙服务器
+cluster_none=尚未将任何服务器添加到防火墙群集。
+cluster_host=主机名
+cluster_desc=描述
+cluster_os=操作系统
+cluster_add=添加服务器
+cluster_gadd=在组中添加服务器
+cluster_need=您必须先在Webmin服务器索引模块中添加具有登录名和密码的服务器,然后才能在此处对其进行管理。
+cluster_return=集群服务器
+cluster_delete=删除选定
+add_title=添加服务器
+add_msg=正在添加 $1 ..
+add_gmsg=在组 $1中添加服务器 ..
+add_err=添加服务器失败
+add_gerr=添加群组失败
+add_echeck=服务器 $1没有IPFilter防火墙模块
+add_emissing=服务器 $1缺少防火墙命令 $2
+add_ok=添加了 $1,其中有 $2有效的防火墙规则。
+nat_title1=创建NAT规则
+nat_title2=编辑NAT规则
+nat_action=NAT模式
+nat_header1=规则类型
+nat_header2=数据包匹配选项
+nat_iface=在其上执行NAT的接口
+nat_frommode=匹配的数据包
+nat_frommode0=使用IP和网络掩码 $1
+nat_frommode1=配套条件如下 ..
+nat_header3=数据包转换选项
+nat_tomode=翻译成
+nat_tomode0=IP和网络掩码 $1
+nat_tomode1=IP范围从 $1到 $2
+nat_tomode2=接口地址
+nat_portmap=端口映射
+nat_portmap0=默认
+nat_portmap1=对于协议 $1(端口 $3至 $4的 $2)
+nat_proxy=使用应用程序代理
+nat_proxy0=没有代理
+nat_proxy1=使用协议 $3从端口 $1到端口 $2的代理
+nat_header4=其他选择
+nat_proto=仅在协议上执行NAT
+nat_frag=NAT分段数据包
+nat_clampmss=强制最大数据包大小为
+nat_bytes=个字节
+nat_oproxy=使用应用程序代理
+nat_oproxy1=使用协议 $3从端口 $1到端口 $2
+nat_err=保存NAT规则失败
+nat_efromip=缺少或无效的匹配IP地址
+nat_efrommask=缺少或无效的匹配网络掩码或CIDR
+nat_etoip=转换后的IP地址丢失或无效
+nat_etomask=缺少或无效的转换后的网络掩码或CIDR
+nat_eiface=NAT缺少或无效的接口
+nat_eportmapfrom=映射的起始端口丢失或无效
+nat_eportmapto=缺少或无效的映射结束端口
+nat_eproxyport=应用程序代理缺少或无效的源端口
+nat_eoproxyname=应用程序代理选项的目标端口丢失或无效
+nat_eoproxyport=应用程序代理选项的源端口丢失或无效
+nat_eproxyname=应用程序代理的目标端口丢失或无效
+nat_emss=最大数据包大小丢失或无效
+nat_emapblock1=使用“块映射”模式时,只能使用IP和网络掩码来选择要匹配的数据包
+nat_emapblock2=使用“块映射”模式时,只能将IP和网络掩码用于转换
+nat_header5=数据包重定向
+nat_redir=数据包的IP和网络掩码
+nat_dports=原始端口
+nat_dports0=单端口 $1
+nat_dports1=从 $1到 $2的端口
+nat_header6=重定向目标
+nat_rdrip=目的IP地址
+nat_rdrport=目的端口
+nat_rdrproto=重定向协议
+nat_robin=循环映射到目标IP
+nat_edport=原始端口缺失或无效
+nat_edport1=起始端口丢失或无效
+nat_edport2=末尾原始端口丢失或无效
+net_erdrip=“$1”不是有效的目标IP地址
+nat_erdrips=没有输入目标IP
+nat_erdrport=目标端口丢失或无效
+boot_esmf=SMF服务 $1不存在或处于未知状态