PHP 板


LINE

看板 PHP  RSS
今天我在开另一个专案时,老是对ci的 $lang['NAME'] = '姓名'; $lang['ADDRESS'] = '地址'; 或是 $lang = array( 'NAME' => '姓名', 'ADDRESS' => '地址' ); 这种写法觉得不是那麽的方便。 尤其是在同时要搞二、三个语系档的情况下。 (通常习惯也是会让他分属不同的资料夹。) 总是觉得说换成 [base] NAME = 姓名 ADDRESS = 地址 这样的INI写法会让人觉得方便性高吧! 所以就索性把lang档给他整个改写了。 流程如下: 1.先在ci的根目录下建一个放ini的目录,我是设定叫language。 2.在application的language内建立你的语系目录和lang档。 (例如chinese_tw目录和chinese_tw_lang.php) 3.修改chinese_tw_lang.php(或其他语系)的内容如下: ------未经chris_QQ提醒前的做法------(效能评估:0.02~0.05秒间) <?php $lang_ini = file('language/chinese_tw.ini'); foreach($lang_ini as $value){ $value_arr = trim(str_replace(" ","",$value)); if(empty($value_arr) || substr($value_arr,0,1) == '[' || !strpos($value_arr,'=')) continue; list($source,$target) = explode("=",$value_arr); $lang[$source] = $target; } ?> ------修正後------(效能评估:0.001~0.003左右) <?php $lang = parse_ini_file('language/chinese_tw.ini'); ?> ($lang = array()的效能评估约莫也是在0.001~0.003,略低於上述修正後) 以上单位:秒 4.在你的language中建立ini档(这里档名叫chinese_tw.ini) 5.ini的格式就是: [base] <==你的分类说明 NAME = 姓名 ADDRESS = 地址 [button] CONFIRM = 确认送出 RESET = 清除 6.记得要把.htaccess中加上language目录权限,否则会无法读取。 7.到你的程式用view呼叫样板测试<?=lang("NAME")?>吧!别忘了config/autoload.php 中的$autoload['helper']要加上language。 这样以後就可以轻轻松松用ini档来设定语系了。 --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 59.104.130.243
1F:→ chrisQQ:感觉比较适合在有开 page cache、loading 较低的系统上~ 12/03 11:10
2F:→ chrisQQ:如果只是习惯 ini 的写法的话,在考量效能的情况下,我 12/03 11:11
3F:→ chrisQQ:觉得可以在写一只程式来将 ini 格式 complie 成 php array 12/03 11:11
4F:→ chrisQQ: 再 12/03 11:11
5F:→ tkdmaf:所以楼上没注意到这只程式就是载入到$lang吗? 12/03 11:17
6F:→ chrisQQ:所以载入一次到 $lang 里面之後 CI 会自动 cache 起来? 12/03 11:19
7F:→ mesak:绕一圈 读取? 12/03 14:10
8F:→ mesak: 原PO是 想用一个INI 把全部语言都设定出来吗? 12/03 14:14
9F:→ tkdmaf:一个ini读取全部的语系?如果我有那麽行就好了。 12/03 14:38
10F:→ tkdmaf:chrisQQ的讲法我了解了。正在想如何处理做一次读取。 12/03 14:39
11F:→ chrisQQ:如果没记错架构的话,这样变成读取一次页面就要重新parse 12/03 14:39
12F:→ chrisQQ:一次 lang 档… 我想CI直接用 array 也是想降低loading吧 12/03 14:39
13F:→ tkdmaf:另外这并不是什麽绕一圈读取。而是尽可能不要去改到程式端 12/03 14:40
14F:→ chrisQQ:想写成自动化的话,就是产生一个 lang 的 cache 档, 12/03 14:40
15F:→ chrisQQ:里面就是将你 parse 过後的 ini 写成 php array 格式 12/03 14:40
16F:→ chrisQQ:如果这个 cache 档不存在就重新从 ini parse 一份 12/03 14:42
17F:→ chrisQQ:lang load 的时候就去读这个 cache 过後的 php array 就好 12/03 14:42
18F:→ chrisQQ:不改 server 架构的话就是写在你的 chinese_tw.php 前头 12/03 14:43
19F:→ chrisQQ:if (file_exists('cached_lang.php')) {include xxx;} 12/03 14:44
20F:→ chrisQQ:else {regenerate_cache_lang();} 这样的方法吧@@ 12/03 14:45
21F:→ chrisQQ:辜到的第一篇 http://blog.twix.idv.tw/myblog/view/189 12/03 14:46
22F:→ chrisQQ:疑,我错了,他是用 serialize ... 请忽略上篇 12/03 14:52
23F:→ tkdmaf:没关系!因为我没发现到有parse_ini_file 12/03 14:58
24F:→ tkdmaf:我做过效能评估了。用parse_ini_file的速度和array相当。 12/03 14:59
25F:→ tkdmaf:所以我待会会修正本文。 12/03 14:59
※ 编辑: tkdmaf 来自: 218.167.139.27 (12/03 15:06)
26F:→ chrisQQ:以下是推测:量大的话可能就不会这麽接近了,我猜ˇˇ 12/03 15:03
27F:→ chrisQQ:不过如果 loading 在可接受范围,就没什麽关系,反正 12/03 15:03
28F:→ chrisQQ:很多机器cpu大部分的时间都在 idle … 不差这几毫秒 12/03 15:03
29F:→ chrisQQ:题外话,如果只是要加 [base] 比较好分别的话,那考不考虑 12/03 15:07
30F:→ chrisQQ:$array = array( 12/03 15:07
31F:→ chrisQQ:/* base */ 12/03 15:07
32F:→ chrisQQ:'name' => '姓名', 12/03 15:07
33F:→ chrisQQ:/* other */ 12/03 15:07
34F:→ chrisQQ:'test' => '测试' 12/03 15:07
35F:→ chrisQQ:); 12/03 15:07
36F:→ chrisQQ:这样来写啊@@? 12/03 15:07
37F:→ tkdmaf:parse_ini_file会自动解析ini的[base]所以倒是无所谓。 12/03 15:13
38F:→ tkdmaf:我现在是在测两种方式一样都给10000笔语系时的时间差。 12/03 15:14
39F:→ tkdmaf:任何程式的效能量测还是跑过几次测试值比较实在。 12/03 15:16
40F:→ tkdmaf:测1万笔时却测出了出乎意料之外的结果。 12/03 15:30
41F:→ tkdmaf:使用INI的时间为0.13~0.2,但用$lang=array()则是0.23~0.33 12/03 15:30
42F:→ tkdmaf:反而是纯读INI的速度变快了。 12/03 15:31
43F:→ tkdmaf:使用未修正parse_ini_file前的则是0.75左右 12/03 15:32







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:iOS站内搜寻

TOP