php:用数组实现多语言(PHP 7.4.2)
2023-09-14 09:01:15 时间
一,适用的场景:
旧系统需要增加多语言,不想改变原有的运行环境,
所以没有使用gettext,选择简单的用数组来实现
说明:刘宏缔的架构森林是一个专注架构的博客,地址:https://www.cnblogs.com/architectforest
对应的源码可以访问这里获取: https://github.com/liuhongdi/
或: https://gitee.com/liuhongdi
说明:作者:刘宏缔 邮箱: 371125307@qq.com
二,php代码:
1,定义一个功能类
<?php /* 简单实现i18n功能的类, 可适用于旧网站的改造 */ class locale { //日文 var $arr_ja = [ "top"=>[ "magazine"=>"雑誌管理", "source"=>"素材管理", "user"=>"ユーザー管理", "system"=>"システム管理", ],]; //英文 var $arr_en = [ "top"=>[ "magazine"=>"magazine", "source"=>"source", "user"=>"user", "system"=>"system", ],]; //简中 var $arr_zh = [ "top"=>[ "magazine"=>"杂志管理", "source"=>"资源管理", "user"=>"用户管理", "system"=>"系统管理", ],]; //语言数组 var $arr_lang = [ "zh","en","ja" ]; /* 得到当前要显示的语言名字, 先判断是否已保存在cookie 如果cookie中不存在, 则取浏览器的语言 如果都没有,则选择中文 */ public function getLocale(){ $default = "zh"; //判断有无cookie if (isset($_COOKIE['locale'])) { if (in_array($_COOKIE['locale'], $this->arr_lang)){ return $_COOKIE['locale']; } else { //无cookie取浏览器的语言 $lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2); if (in_array($lang, $this->arr_lang)){ return $lang; } else { return $default; } } } else { //无cookie取浏览器的语言 $lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2); if (in_array($lang, $this->arr_lang)){ return $lang; } else { return $default; } } } /* 得到语言的数据 */ public function getLanguage($lang){ if ($lang == 'zh') { return $this->arr_zh; } else if ($lang == 'en') { return $this->arr_en; } else if ($lang == 'ja') { return $this->arr_ja; } else { return $this->arr_zh; } } } ?>
2,在通用的controller当中调用locale类
$localeObj = new locale(); $lang = $localeObj->getLocale(); $arr = $localeObj->getLanguage($lang); $smarty->assign("lang", $arr);
3,smarty模板中调用:
<ul class="nav" id="mobile-nav"> <li class="dropdown"> <a id="linkMaga" href="/v/index/"><i id="iconMaga" class="icon-file icon-white"></i> {$lang.top.magazine} </a> </li> <li class="dropdown"> <a id="linkSource" href="/v/imagecenter/"><i id="iconSource" class="icon-th icon-white"></i> {$lang.top.source} </a> </li> <li class="dropdown"> <a id="iconUser" href="/v/usercenter/"><i id="iconUser" class="icon-book icon-white"></i> {$lang.top.user} </a> </li> <li class="dropdown"> <a id="linkSystem" href="/v/syscenter/"><i id="iconSystem" class="icon-th icon-white"></i> {$lang.top.system} </a> </li> </ul>
三,测试效果:
日文
英文
四,查看php的版本:
[lhdop@blog ~]$ /usr/local/soft/php7/bin/php --version PHP 7.4.2 (cli) (built: Apr 20 2022 16:49:58) ( NTS ) Copyright (c) The PHP Group Zend Engine v3.4.0, Copyright (c) Zend Technologies
相关文章
- php+js实现极验,拖动滑块验证码验证表单
- Sublime Text3 PHP开发环境配置攻略
- [PHP] B2B2C商品模块数据库设计详解编程语言
- 加速Linux驱动下的PHP后端性能提升(linux让php后台)
- 网站利用 PHP 与 MySQL 构建网站.(php和mysql开发)
- Linux下构建高性能PHP环境(linux下的php)
- 实现【使用Redis实现PHP抢红包迅速拿奖励】(php抢红包redis)
- 初探Linux中的PHP文件之旅(linux创建php文件)
- PHP启用Redis:轻松灵活的缓存服务(php开启redis)
- PHP使用Redis扩展连接Redis服务(php开启redis)
- PHP语言终于有了正式的规范
- PHP中的Redis类:快速高效地管理数据(redis类php)
- 深入剖析PHP MySQL 驱动:打造高效的数据库操作体验(phpmysql驱动)
- 测试PHP连接MS SQL 数据库的结果(php链接mssql测试)
- 简便快捷:在PHP服务器上使用MSSQL(php服务器 mssql)
- PHP如何访问MS SQL服务器(php怎么访问mssql)
- 用Redis和PHP构建强大的商城(商城redis php)
- 以原生PHP类库操作Redis数据库(原生php操作redis)
- 中的应用使用Redis,提升PHP程序效率(redis缓存在php)
- PHP脚本的10个技巧(4)
- PHP中输出转义JavaScript代码的实现代码
- php入门学习知识点二PHP简单的分页过程与原理
- 理解和运用PHP中的多态性[译]
- php中获取远程客户端的真实ip地址的方法
- PHP中“简单工厂模式”实例代码讲解
- 修改php.ini以达到屏蔽错误信息并记录日志
- PHP+AJAX无刷新实现返回天气预报数据
- php生成图形(Libchart)实例
- php导入excel文件到mysql数据库的方法