smarty模板的问题,在网上找到的资料只是说:
1.在模板里面把需要国际化的串加上{t}标签,
2.然后用smarty2c.php生成.c的文件,
3.再用linux的xgettext编译成.op的文件,
可是我不知到如何生成.c的文件,smarty是否需要添加插件,如何添加。
还有在我的smarty模板里加入t标签,smarty无法辨认。越详细越好。
小弟新手,急死人了,帮帮忙,T_T含泪谢过........
1.在模板里面把需要国际化的串加上{t}标签,
2.然后用smarty2c.php生成.c的文件,
3.再用linux的xgettext编译成.op的文件,
可是我不知到如何生成.c的文件,smarty是否需要添加插件,如何添加。
还有在我的smarty模板里加入t标签,smarty无法辨认。越详细越好。
小弟新手,急死人了,帮帮忙,T_T含泪谢过........
解决方案 »
- 有没有支持php4的web代理程序
- 有才的捧个才场,没才的捧个人场!!!
- 怎么登录用http头的401 Unauthorized进行身份验证的服务器?
- php 如何获得当前页面地址
- 字符编码问题
- 初学,请大家请教,顺便问问php学习方法!
- 关于PHP5+MYSQL5+APACHE2的配置文档谁有?
- 如何创建一个txt的文件?
- 现在在一个不大的公司工作,用php作网站,自我感觉天天在重复编写着一样的代码,觉得很无聊,想进一步学习php但不知该学什么,请高手指教
- 类似问卷的HTML中js获取了用户选择答案,如何传值到PHP
- 我就是一个php菜鸟,什么基础都没有,想学php,如何起步?
- TOM招聘php页面开发程序员
我的框架是Ajax的,总不能什么都是后台穿过来的吧,太多了,
smarty的就是直接把国际化之后的字符串直接替换的模板里,省事多了,可就是不会-_-!!!
php的国际化我会做,这个也是用语言包的,只不过是在后台指定语言项后由smarty直接替换到模板里面了闷了,在百度里只有这一篇文章被转来转去的,http://blog.163.com/qj_l12@126/blog/static/3593082620092324259451/
这里说的比较详细,帮我看看,谢谢了
1 生成语言包.
将不同的语言串保存成数组或者xml的形式,注意数组的键值或者xml的节点值要一致.
2 在程序中,每次根据当前请求的语言获取语言包,然后直接传给smarty就行了.
至于编译什么的,就交给smarty来做了.你帖的这个文章,利用smarty插件,生成.c什么文件等等,优势在哪里,我没有看出来,呵呵.
你是说只要传给smarty就行了嘛?
可页面好多都是js生成的,js里的smarty也能编译吗?
其实主要就是这个问题,js生成的太多了,
这篇文章的方法好就好在直接在模板里替换了,能说的详细些吗,怎么传给smarty,又是怎么编译的,
你所说的方法,也应该是用js向后台请求数据,然后局部更新或者全部更新当前页面以显示数据吧.如果是一样的话,哪由你所指的插件返回数据,和由smarty或者只是由php程序返回数据,有什么不一样吗?
不解.
define('PACKAGE', 'hello'); // 定义要用的mo文件名称, 常规来说, 我们都把PACKAGE
// 的名称定义和程序名称相同。
putenv('LANG=zh_CN'); //指定当前操作系统环境为简体中文
setlocale(LC_ALL, 'zh_CN'); // 指定要用的语系, 如:en_US、zh_CN、zh_TW
bindtextdomain(PACKAGE, '/apache/htdocs/locale');
textdomain(PACKAGE);
/* gettext扩展将从 /usr/local/apache/htdocs/locale/en/LC_MESSAGES/
中查找hello.mo文件*/
echo gettext("Hello World!"); //按照mo文件中的转译显示相关语言
?>
然后使用两条命令:
1.xgettext -d hello hello.php 生成点hello.po文件
2.msgfmt -o hello.mo hello.po 生成点hello.mo文件xgettext 和 msgfmt 自己去网上下载!!!这个基本可以完成所有软件的国际化!!《二.......》
在使用SMARTY 时将语言显示设置为变量,读入是设置全局configure语言包,然后根据不同的国家设计部同的语言就是了!!此方法最实用!!
我的认为是在php执行构造函数是制定语言,是不经过后台的,至少不需要后台向前台输出数据,而是smarty的gettext直接替换模板中的字符。
乱了乱了,可能是我想错了,不过我看smarty的官方网站(http://smarty.incutio.com/?page=SmartyGettext)上是这个意思,
1.我的框架是Ajax的,页面在onload的时候发送请求,js得到数据生成页面,按照上面的方法此时也得到传过来的语言,整个网站都需要国际化的,也就是说网页全是要js生成。
2.再次提交的时候,局部生成的页面就没有国际化了。
3.太多了,现在这个网站只有我一个人,这样太慢了。
4.其实只要页面不由js生成也就没有这些问题,不过我只有这一个办法。或者说谁有个思路,把模板里面替换成国际化之后的语言这一步说的详细一些,我已经决定晚上研究ecshop的国际化了.....
我可以这样理解吗:
smarty在生成缓存模板时,里面已经是国际化之后的语言,这时js里的需要国际化的语言也是国际化之后的,
比如:$('user').innerHTML='<div>Name'+name+'</div>';
这里的“Name”是国际化之后的了
所以在js再次生成局部页面时已经是国际化好的语言了????