smarty模板的问题,在网上找到的资料只是说:
1.在模板里面把需要国际化的串加上{t}标签,
2.然后用smarty2c.php生成.c的文件,
3.再用linux的xgettext编译成.op的文件,
可是我不知到如何生成.c的文件,smarty是否需要添加插件,如何添加。
还有在我的smarty模板里加入t标签,smarty无法辨认。越详细越好。
小弟新手,急死人了,帮帮忙,T_T含泪谢过........

解决方案 »

  1.   

    网站是欧洲的,需要做英语,法语,德语,俄语....一堆的语的国际化,
    我的框架是Ajax的,总不能什么都是后台穿过来的吧,太多了,
    smarty的就是直接把国际化之后的字符串直接替换的模板里,省事多了,可就是不会-_-!!!
      

  2.   

    用语言包可能更好些.后台根据所选语言读取不同的语言包,取出来直接传给smarty.
      

  3.   

    I know.
    php的国际化我会做,这个也是用语言包的,只不过是在后台指定语言项后由smarty直接替换到模板里面了闷了,在百度里只有这一篇文章被转来转去的,http://blog.163.com/qj_l12@126/blog/static/3593082620092324259451/
    这里说的比较详细,帮我看看,谢谢了
      

  4.   

    搞这么复杂做啥.
    1 生成语言包.
      将不同的语言串保存成数组或者xml的形式,注意数组的键值或者xml的节点值要一致.
    2 在程序中,每次根据当前请求的语言获取语言包,然后直接传给smarty就行了.
    至于编译什么的,就交给smarty来做了.你帖的这个文章,利用smarty插件,生成.c什么文件等等,优势在哪里,我没有看出来,呵呵.
      

  5.   

    谢谢
    你是说只要传给smarty就行了嘛?
    可页面好多都是js生成的,js里的smarty也能编译吗?
    其实主要就是这个问题,js生成的太多了,
    这篇文章的方法好就好在直接在模板里替换了,能说的详细些吗,怎么传给smarty,又是怎么编译的,
      

  6.   

    你好像不太理解smarty是用来做什么的?smarty就是一个PHP模板类,用来实现模板与数据的分离,最终生成页面返回给浏览器.
    你所说的方法,也应该是用js向后台请求数据,然后局部更新或者全部更新当前页面以显示数据吧.如果是一样的话,哪由你所指的插件返回数据,和由smarty或者只是由php程序返回数据,有什么不一样吗?
    不解.
      

  7.   

    《一》<?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语言包,然后根据不同的国家设计部同的语言就是了!!此方法最实用!!
      

  8.   

    也对,是没什么不一样的,
    我的认为是在php执行构造函数是制定语言,是不经过后台的,至少不需要后台向前台输出数据,而是smarty的gettext直接替换模板中的字符。
    乱了乱了,可能是我想错了,不过我看smarty的官方网站(http://smarty.incutio.com/?page=SmartyGettext)上是这个意思,
      

  9.   

    大哥们啊,php的国际化我会的啊,结合smarty模板的我也可以搞出来个Demo的,9楼谢谢了,你那个我知道可是我现在面对这几个问题:
    1.我的框架是Ajax的,页面在onload的时候发送请求,js得到数据生成页面,按照上面的方法此时也得到传过来的语言,整个网站都需要国际化的,也就是说网页全是要js生成。
    2.再次提交的时候,局部生成的页面就没有国际化了。
    3.太多了,现在这个网站只有我一个人,这样太慢了。
    4.其实只要页面不由js生成也就没有这些问题,不过我只有这一个办法。或者说谁有个思路,把模板里面替换成国际化之后的语言这一步说的详细一些,我已经决定晚上研究ecshop的国际化了.....
      

  10.   

    jakey9826
    我可以这样理解吗:
    smarty在生成缓存模板时,里面已经是国际化之后的语言,这时js里的需要国际化的语言也是国际化之后的,
    比如:$('user').innerHTML='<div>Name'+name+'</div>';
    这里的“Name”是国际化之后的了
    所以在js再次生成局部页面时已经是国际化好的语言了????