pybabel或其他用于PHP的l10n库

时间:2010-03-04 07:59:15

标签: php internationalization locale babel cldr

Babel or pybabel是Python中CLDR(公共区域设置数据存储库)的接口。因此,它具有与PHP的i18n函数和类相同的“知识”(如果在主机上安装了适当的语言环境),但没有使用像setlocale()这样的进程范围设置的麻烦。

PHP是否有类似的库或工具包?特别要实现:

  1. 将数字转换为特定于语言和区域的格式

  2. 同样转换日期

  3. 访问特定区域设置中的名称,货币和其他信息(例如,

    >>> from babel import Locale
    >>> locale = Locale('en', 'US')
    >>> locale.territories['US']
    u'United States'
    >>> locale = Locale('es', 'MX')
    >>> locale.territories['US']
    u'Estados Unidos'
    

1 个答案:

答案 0 :(得分:2)

PHP 5.3带有intl扩展名:

  

国际化扩展   (进一步称为Intl)是a   ICU库的包装器,启用PHP   程序员执行符合UCA的程序   整理和   日期/时间/数字/货币格式   在他们的剧本中。

  1. NumberFormatter 类可以转换数字:

    $fmt = new NumberFormatter("de_DE", NumberFormatter::DECIMAL);
    echo $fmt->format(1234567.891234567890000);
    
  2. 使用 IntlDateFormatter 类可以转换日期:

    $fmt = new IntlDateFormatter("en_US", IntlDateFormatter::FULL, IntlDateFormatter::FULL, 'America/Los_Angeles', IntlDateFormatter::GREGORIAN);
    echo $fmt->format(0);
    
  3. 使用 Locale 类可以访问特定区域设置中的名称,货币和其他信息:

    echo Locale::getRegion('de-CH-1901');
    
  4. 此外,还有排序规则 MessageFormatter 类。