Php多语言日期:howto?

前端之家收集整理的这篇文章主要介绍了Php多语言日期:howto?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
Nota:这不是 Translating PHP date() for Multilingual Site的重复.我看过了!

对不起,我首先要解释一下我的框架是如何工作的,这样你才能准确理解我的问题所在:

这是我的PHP代码的工作原理(粗略原则).让我们使用一个想要查看URL http://myweb.com/valid.PHP的人:

>在文件valid.PHP中,代码包含正确的类定义,然后创建一个对象并调用显示页面函数display().
>在文件valid.PHP中,当创建对象时,它会分析主机,而在主机中则有语言(http://us.myweb.com/,http://cn.myweb.com/,http ://fr.myweb.com / …)和默认语言(如果没有找到)是英语
>然后我加载一个缓存的PHP文件,其中是翻译.这是一个翻译对象,我简称为$t
>从现在开始,每当我想要翻译时,我只会做一些事情,比如$t-> get(‘my_string’).

让我们以2种语言文件为例:

> 2种语言文件:cache.us.PHP和cache.fr.PHP
>在cache.us.PHP中你有这样的一行:$thanks_for_the_fish =“谢谢鱼”.
>在cache.fr.PHP中你有这样一行:$thanks_for_the_fish =“Merci pour le poisson”.
>我构建我的页面,包含正确的语言文件,然后调用$t-> get(‘thanks_for_the_fish’)并将其翻译.

现在我的问题是日期格式化.
使用短日期格式不是问题:

>在cache.us.PHP中:$short_date_format =“m / d / Y,H:i”.
>在cache.fr.PHP中:$short_date_format =“d / m /YàH:i”.

但是对于长日期格式,我只是在研究法语,我开始使用类似的东西:

>在cache.fr.PHP中:$long_date_format =“%s,%d%s%d”.
>那么所有的日子:$sunday =“dimanche”,$monday =“lundi”等等
>然后在我的翻译代码中:

像这样的东西(仔细阅读代码中的注释,我的问题就在其中!):

static private $_TabStrDaysOfWeek = array(
    0 => 'sunday',1 => 'monday',...,6 => 'saturday'
);
public function translateDate($date_time)
{
    $long_day = $this->tr->get(
        $this->_TabStrDaysOfWeek[ $date_time->format('w') ]
    );
    /*

    here's where I'm stuck:
    what could be the code to be able to display:
    - english:
      Monday,1st September 2006
      Tuesday,2nd September 2006
      Wednesday,3rd September 2006
      Thursday,4th September 2006

    - french:
      Lundi,1 septembre 2006
      Mardi,2 septembre 2006
      Mercredi,3 septembre 2006
      Jeudi,4 septembre 2006

    - arabian!!:
      1 - Don't know
      2 - Don't know
      3 - Don't know
      4 - Don't know
    */
}

…我说阿拉伯语因为我迟早需要它,对普通话来说也是如此.
我所有的其他翻译问题都解决了但是这个问题!!

任何想法?

对于国际化任务,我强烈建议使用PHP intl扩展.它包含几个用于常见国际化任务的类,例如日期/时间格式,数字格式,字符串音译等.具体来说,IntlDateFormatter类 能够格式化(和解析)任何可用语言环境的日期时间.

猜你在找的PHP相关文章