- 浏览: 1779261 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (641)
- vb2005xu自己动手系列 (174)
- vb2005xu开发文章转摘 (47)
- vb2005xu发发牢骚 (99)
- vb2005xu新技术灌水 (12)
- vb2005xu网络资源集锦 (21)
- vb2005xu软件学习 (60)
- 英语学习 (3)
- JavaScript 学习 (54)
- JAVA OOP 巩固 之 CustomDatabase 的开发 (5)
- 2013年9月之前所在公司 记事 (7)
- FleaPHP/QEEPHP 资料 (87)
- JAVA MAIL 学习篇 (4)
- Python turbogears (5)
- Rails 个人开发四部曲 (3)
- 名人传 (8)
- iwp framework (5)
- 高考零分作文 (5)
- startos (8)
- lua (0)
- 职场 (1)
最新评论
-
hellotieye:
自己 评论 自己 挺嗨呀
Mysql sql查询时 if 的用法 -
igevin:
转载请标明出处,转自Gevin的博客http://blog.i ...
RESTful API 编写指南 -
Theobob:
...
实现简单的ACL -
vb2005xu:
比如 对于 curl 调用就不再需要 加各种if 判断了,
$ ...
搞一个简单的数据打印工具AsDebug の Laravel -
vb2005xu:
http://geekplux.com/wiki/
YII2 模块内自定义错误页
先发个demo .....
需求 能够在前台下载 语言文件进行编辑再上传 ....
配置选项如下:
'i18n_multi_languages' => array( 'enabled' => true , // 指示是否启用多语言支持 'writer' => 'Core_Helper_Translate', 'Core_Helper_Translate' => array( 'file_dir' => APPPATH . '/lang', 'default' => 'zh_cn', ), ),
<?php /** * 多语言翻译函数 * * @return string 消息内容 */ function __() { $args = func_get_args(); if (is_object(Core_App::$defaultMultiLanguages)){ $msgid = array_shift($args); return Core_App::$defaultMultiLanguages->translate($msgid,$args); } return call_user_func_array('sprintf', $args); } /** * Core_Helper_Translate类 提供多语言翻译支持 * * 依赖 session 支持 * * 开发者不应直接构造此类的实例对象,应该使用 Core_App::$defaultMultiLanguages 来引用此对象 * * 构造函数的参数数组中必须带着键: file_dir | default * * 所有的语言文件必须满足以下条件: * 1. UTF-8编码 * 2. 标准的 ini 文件格式 * 3. 以 .dc.ini 结尾 * 4. 内容按如下标记 * * <code> * [meta] * description = 文件说明 * * [trans] * * </code> * * @package core.helper * @author 色色 */ class Core_Helper_Translate { /** * 当前语言指示标识 * * @var string */ private static $queryLangAccessor = '--core:lang:d--'; private static $hasConstruct = false; /** * 数据字典 * * @var array */ private $dc = array(); function __construct(array $d){ if (self::$hasConstruct){ throw new Core_Helper_Translate_Exception("系统中仅允许 一个 Core_Helper_Translate 实例对象"); } self::$hasConstruct = true; $this->dcDir = $d['file_dir']; $this->defaultLang = $d['default']; $this->currentLang = Core_App::$defaultSessionWriter->get(self::$queryLangAccessor,null); if (empty($this->currentLang)){ $this->currentLang = $this->defaultLang; } $this->changeLanguage($this->currentLang,false); $this->dcNoget = true;// 数据字典是否被加载,用于懒惰加载 } /** * 导入翻译文件 * * 对 多个翻译文件进行合并,并将结果进行缓存 * 如果翻译文件被修改,则自动同步缓存 * */ private function dcImport(){ $this->dcNoget = false; $cache_id = self::$queryLangAccessor; $cache_vcid = self::$queryLangAccessor . 'vc'; $dcFiles = $this->getDcFiles(); if (empty($dcFiles)) { Core_App::$defaultCacheWriter->remove($cache_id); Core_App::$defaultCacheWriter->remove($cache_vcid); return; } $last_vc = Core_App::$defaultCacheWriter->get($cache_vcid); $new_vc = Core_App::$currentTimeStamp; foreach ($dcFiles as $file){ $new_vc .= filemtime($file); } if ($last_vc == $new_vc){ $data = Core_App::$defaultCacheWriter->get($cache_id); if (!empty($data)){ $this->dc = json_decode($data,true); } unset($data); return ; } $data = array(); foreach ($dcFiles as $file){ $d = parse_ini_file($file,true); if (is_array($d) && isset($d['trans']) && is_array($d['trans'])){ $data = array_merge($data,$d['trans']); } unset($d); } $this->dc = $data; Core_App::$defaultCacheWriter->set($cache_vcid,$new_vc); Core_App::$defaultCacheWriter->set($cache_id,json_encode($data)); } /** * 获取 字典文件列表 * * @return array */ function getDcFiles(){ return glob("{$this->dcDir}/{$this->currentLang}/*.dc.ini"); } /** * 获取 字典文件信息列表 * * array( * '文件路径' => '文件描述' * ) * * @return array */ function getDcFilesInfo(){ $dcFiles = $this->getDcFiles(); $data = array(); foreach ($dcFiles as $file){ $d = parse_ini_file($file,true); $meta = Core_AppUtils::val($d,'meta',array()); $data[$file] = Core_AppUtils::val($meta,'description',''); unset($meta); unset($d); } unset($dcFiles); return $data; } /** * 检测语言支持情况 * * @param string $lang * @param bool $throw * * @return bool */ private function checkSupport($lang,$throw=false){ $lang_dir = "{$this->dcDir}/{$lang}"; if (is_dir($lang_dir) && is_readable($lang_dir)){ return true; } if ($throw){ throw new Core_Helper_Translate_Exception("指定语言'{$lang}'并不被支持: ($lang_dir) 非有效目录"); } return false; } /** * 翻译消息 * * @param string $msgid * @param array $args * * @return string 消息内容 */ function translate($msgid,array $args){ if ($this->dcNoget) $this->dcImport(); if (isset($this->dc[$msgid])) { $msgid = $this->dc[$msgid]; } array_unshift($args, $msgid); return call_user_func_array('sprintf', $args); } /** * 切换访问者语言环境 * * 如果指定的语言不被支持 将抛出 Core_Helper_Translate_Exception 异常 * * @param string $lang 要切换的语言 * @param bool $reload 是否立即重新加载语言文件 */ function changeLanguage($lang, $reload=false){ if ($this->checkSupport($lang,true)){ $this->currentLang = $lang; Core_App::$defaultSessionWriter->set(self::$queryLangAccessor,$lang); if ($reload){ $this->dcImport(); } } } } class Core_Helper_Translate_Exception extends Exception {}
发表评论
-
ws-http 最简单轻量的PHP CURL工具库
2016-07-29 20:44 2629欢迎大家拍砖 https://github.com/to ... -
Facade 包装类 -- 解决视图里面长长的命名空间调用问题
2016-04-20 10:48 1748有时候模版里面定义 ... -
PHP单例模式面试注意事项
2015-10-20 09:57 1955最近面了不少PHP从业者,有实习生也有5/6年以上的开发者 ... -
NGINX 配置 SSL 证书 搭建 HTTPS 网站
2015-10-19 19:19 2919下面是详细的配置过程: 1、在服务器上使用 Open ... -
关于php cron任务管理的实现假想
2015-10-17 21:25 1901之前每开发一个计划任务功能均需要在线上操作crontab来新 ... -
修改一些PHP工具
2014-10-24 19:27 1802原来的代码 在非框架下是木有问题的,但是用在框架下就报错, ... -
sublime text linux上中文输入问题的终极解决方案
2014-10-13 11:07 8567我一直在使用sublime text ... -
qeephp3.0 发布了
2014-10-07 17:21 1703QeePHP 是一个快速、灵活的开发框架。应用各种成熟的架构 ... -
swiftmailer 的快捷助手 qser-mailer
2014-09-09 23:52 3593近日在对charsen的修改版上进行了再次的修改与调整,对 ... -
PHP 中简单的伪造IP刷票实现
2014-05-15 17:06 2761一般而言,我们的获取用户真实ip的代码大致是这样... / ... -
PHP5.5 htmlspecialchars 返回null的坑
2014-04-25 12:23 2612昨天在写 PDO数据库封装类的 测试代码时遇到这个问题,取 ... -
PHP 5.5 empty + 魔术变量 的坑
2014-04-16 15:53 1603今天在测试代码时遇到这么一个疑问? dump((in ... -
Aert_Log: 设计一个精简易用的日志
2014-04-13 18:28 2483日志记录对于应用的 ... -
创建一个简单的短链服务类
2013-07-01 18:20 1368整理一个简单的短链算法,整理到自己的代码库中: &l ... -
收集常用的PHP简单代码
2013-06-30 17:53 2055对于日常工作中整理出来的某些功能做个简单梳理: 1 ... -
简易PHP路由,支持正反向url解析支持
2013-06-21 22:23 8229几年前实现了一个简单的正向路由,那时候不会写反向路由解析, ... -
系统学习のCACHE 学习
2012-11-21 13:58 1908http://www.phpfans.net/article/ ... -
YY 下 sql查询封装类 不知道好不好使
2012-07-18 16:44 1333<?php class Pkg_Db_Actor { ... -
生成后台管理菜单 admin_menu 类
2012-05-05 18:27 4652<?php /** * 管理菜单 * */ ... -
抽取个sql生成器工具 -- 摘自 fuelphp1.1 版本
2012-04-25 20:17 1230<?php /** * Sql 创造者类 * ...
相关推荐
在前端开发中,实现网页的多语言支持...它适合快速原型开发和小型项目,让开发者可以快速为网站添加多语言支持。同时,这个例子也展示了如何手动管理语言资源和响应用户语言选择,对于学习前端多语言处理是很有帮助的。
【web前端demo】是一个关于前端开发的示例项目,它主要展示了如何构建一个简单的博客网站。这个demo旨在帮助初学者理解和实践Web前端开发的基本技术,同时也适用于有一定经验的开发者进行快速原型设计。在这个项目中...
下面我们将深入探讨与“app demo”相关的多个知识点。 一、应用程序开发 1. 开发环境:创建app demo需要集成开发环境(IDE),如Android Studio或Xcode,它们提供了编写代码、调试和测试应用的平台。 2. 编程语言:...
综上所述,"demo-源码.rar"(或"demo-源码.zip")是一个潜在的学习资源,包含了关于源代码管理、编程语言、软件架构和开发流程等多个方面的知识。无论是对新手还是经验丰富的开发者,都能从中受益。不过,要充分利用...
【标题】"meituan-website-demo-master.rar"是一个压缩包文件,其中包含了仿照美团网站设计的源代码。这个项目可能是某位开发者或学生在期末时完成的,现在他愿意分享出来帮助其他有需要的人。 【描述】描述中提到...
博客演示(Blog Demo)是一个常见的在线平台,用于展示博客文章、功能和技术实现。在这个特定的“blog_demo”项目中,我们可以假设它是一个用于测试、学习或教学目的的博客系统实例。这个压缩包可能包含了实现这样一...
Django SNS的灵感来自于,OSF是一个的开放、自由、分享的内容社区类网站原型。拥有绝大多数的社交类网站、内容分享类、社区类、兴趣垂直类网站共同的特性,如多用户,内容的发布、评论、喜欢,消息传递,Feed流,...
在IT行业中,静态网页模板是开发人员常用的工具,尤其对于快速构建原型或小型Web应用程序非常有用。本资源提供了8个不同的静态网页模板,涵盖了后台和前台设计,适用于创建普通的Web演示项目。这些模板通常包括HTML...
HTML(HyperText Markup Language)是构建网页的标准标记语言,它定义了网页的结构和内容。...这样的项目对于初学者来说是学习网页开发的好起点,而对于有经验的开发者来说,也是一个快速创建原型或演示功能的工具。
了解需求分析、原型设计、编码、测试、部署和后期维护整个过程对于成为一个全面的网站开发者非常重要。 7. **学习资源**:“网站学习论坛-从学习计划开始,逐步深入,适合初学者的学习论坛.url”可能是提供学习资料...
总的来说,这个压缩包提供了一套完整的网站模板,涵盖了网页设计的基础和进阶元素,适用于初学者学习网页开发,或者专业人士快速构建原型或网站。通过深入理解和修改这些源码,我们可以了解到网页开发的实际流程,...
- **多语言支持**:对于多语言网站,需要处理不同语言的自动补全。 7. **注意事项**: - 安全性:防止XSS攻击,对用户输入进行过滤和转义。 - 可访问性:确保自动补全功能对屏幕阅读器和其他辅助技术友好。 ...
7. **多语言支持** - 支持WPML,便于创建多语言网站,拓展全球市场。 8. **自定义选项** - 丰富的自定义选项允许用户根据品牌风格调整配色、字体等元素。 **文档与许可** “documentation”文件夹中包含了Arangi...
网页模板是用于快速构建网站页面的设计框架,它们通常包含了HTML、CSS和JavaScript代码,以便开发者可以轻松地定制和实现自己的网站设计。在这个压缩包中,提供了三个完整的网页模板,这将极大地节省开发者的时间和...
JavaScript 是一种解释型的、基于原型的、多范式的编程语言,它允许开发者在客户端实现复杂的网页交互逻辑。在 foodween.com 模板中,JavaScript 可能被用于以下几个方面: 1. **DOM 操作**:通过 Document Object ...
PHP是一种广泛使用的开源脚本语言,特别适合于Web开发,并可嵌入到HTML中,常用于构建动态网站和服务器端的数据处理。 【文件结构分析】: 由于仅给出了压缩包的一个主要文件夹名"crud-php-demo-main",我们可以...
3. JavaScript: 作为客户端的主要脚本语言,JavaScript负责实现动态效果、表单验证、以及在无后台的情况下处理用户交互。 4. 响应式设计原理: 包括流式布局、弹性图片、媒体查询等技术,确保网站在不同设备上都能...
"Demo"通常指的是演示版本,意味着这个压缩包可能包含了一个软件的试用版、一个应用的原型或者是一组用于展示特定功能的代码或数据。 【标签】由于没有给出具体的标签,我们无法确定此压缩包的具体内容。标签通常...
在当今数字化的世界中,Web前端开发扮演着至关重要的角色,它连接了用户与网站之间的桥梁。本文将深入探讨前端开发的基础概念,关键技术,以及如何通过个人学习笔记和实际项目来提升技能。我们将重点关注Node.js、...
在这个“通知系列演示”中,我们可以推测开发者可能创建了多个通知样式或类型的实例,用于展示如何在网页上优雅地呈现各种通知信息。 通知是用户界面中的一个重要元素,它用来传达系统状态的改变、提示用户执行某些...