免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2236 | 回复: 5

再来个高难度问题,请教如何实现类似gettext的功能? [复制链接]

论坛徽章:
0
发表于 2010-12-03 15:14 |显示全部楼层
如果我想实现gettext($string)的全部功能,函数名譬如叫做G2,要求如下:
1.G2('world')返回"世界"
2.G2("hi,$user"),返回"你好,某某"


假设所有的语言映射都坐在sqlite或者mysql里
"world"映射到"世界"
"hi,%s"映射到"你好,%s"


第一点实现没什么难度,简单查询就可以实现。
但第二点就有不知如何解决了,因为G2函数拿到"hi,$user"时候,$user已经被转换成了一个字符串,这时候再去db里找事根本找不到的。

如何解决?

(别让我在G2()里使用单引号或者直接把G2定义成和sprintf类似的形式,这样等于要全部重写代码了,工程量太大)

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:58:11
发表于 2010-12-24 16:05 |显示全部楼层
不明白你的意思,$user已经被转换,字符串在数据库查找不行吗?那原来你想在数据库查找什么的?

论坛徽章:
0
发表于 2010-12-24 18:30 |显示全部楼层
举个例子:
$user='aaa';
G2("Hi,$user");

查询数据库中[Hi,%s]
G2返回'Hi,aaa'



而当$user='bbb'时,

也查询数据库中的[Hi,%s]

但要将%s替换成$user的实际值,也就是bbb,最终返回'Hi,bbb'

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:58:11
发表于 2010-12-24 20:40 |显示全部楼层
查询“hi”得到“你好”就行了,$user既然知道了,还查询干吗?

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:58:11
发表于 2010-12-24 20:42 |显示全部楼层
G2("Hi,$user");变为G2("Hi",$user); 就是用两个参数,没规定只能一个参数。

论坛徽章:
0
发表于 2010-12-26 14:02 |显示全部楼层
定义多个语言文件,每个语言文件里面的 界面语言都放到变量里面。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP