加入收藏 | 设为首页 | 会员中心 | 我要投稿 衡阳站长网 (https://www.0734zz.cn/)- 数据集成、设备管理、备份、数据加密、智能搜索!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP项目多语言配置平台实现过程解析

发布时间:2022-06-17 03:01:09 所属栏目:PHP教程 来源:互联网
导读:这个月用ant design的方式重构了我在15年的时候写的一个给主端项目写的多语言配置后台,发现当时的设计很深,深到有些功能根本就没用过,根据这几年的使用情况,重构了这一版本,无论是体验上还是实用性上都有所提高,今天抽时间把当时的一些想当然的需求拿
  这个月用ant design的方式重构了我在15年的时候写的一个给主端项目写的多语言配置后台,发现当时的设计很“深”,深到有些功能根本就没用过,根据这几年的使用情况,重构了这一版本,无论是体验上还是实用性上都有所提高,今天抽时间把当时的一些想当然的需求拿出来总结下吧:
 
  使用的技术
 
  我们的项目主要是PHP为主要开发语言,使用gettext扩展实现国际化的,即通过人工的方式按照规则写入.po文件,然后调用某函数生成.mo 文件,放到生产环境的文件夹下,然后在代码里初始化一些内容进行引用。
 
  gettext
 
  gettext是php实现国际化的基本方式。使用方法如下:
 
  安装php扩展gettext,这个同php其他扩展一样,这里就不详细介绍了。
 
  linux环境安装msgfmt,安好后可用此命令将po文件生成.mo文件。
 
  基本使用
 
  建立文件如:zh_CN.po (.po是个文本文件),内容如下:
 
  msgid "repeat content!"
 
  msgstr "文本内容相同"
 
  利用msgfmt将.po文件生成.mo文件。
 
  msgfmt -o {$lang_path}/zh_CN.mo {$lang_path}/zh_CN.po
 
  将生成的.po文件拷贝到你指定的文件夹 target_dir 下。
 
  在php代码里面初始化。
 
  $lang = 'zh_CN'; //
 
  setlocale(LC_MESSAGES, 'en_US.UTF-8'); // 函数设置地区信息(地域信息)
 
  bindtextdomain($lang, {$pofile_path})); // 用来设置文本域目录
 
  textdomain($lang); // 设置默认域
 
  bind_textdomain_codeset($lang, 'UTF-8');
 
  在php的请求里面使用如下方法即可得到语境下对应词组的内容:
 
  gettext("repeat content!") // 文本内容必须与1中的内容一致。
 
  或者
 
  _("repeat content!"); // 与上面函数相同
 
  管理后台
 
  以前都是开发人员自己上传,后来为了解放开发者,让产品自己操作,我们进行了如下改进:
 
  做成可配置后台,产品自己根据内容填写。
 
  配置后台分成入口(权限控制),展示列表页,即每个词组key对应各种语言下的内容。
 
  详情页,详情页支持批量添加。
 
  点击按钮触发发布。
 
  发布高级功能:生成列表和支持比对,对历史版本发布(拷贝历史版本到对应的文件夹下)。
 
  改进
 
  经过一段时间的使用,我决定根据实际使用情况重构一版。
 
  页面全部采用ant design pro为基础的框架,采用前后端分离的样式,我特别推崇ant design的设计思想,和人机交互的开发方法,是后端开发者的福音。
 
  淡化历史版本的记录。虽然有个好些,但是这个确实看的人少,基本没有。
 
  重新发布,如果有时间就做,没时间就不做。
 
  对于一些特殊内容的规定,如如果一个词组key在某种语言环境下显示为空,该怎么处理等等。
 
 

(编辑:衡阳站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读