pybabel или другие библиотеки l10n для PHP - PullRequest
4 голосов
/ 04 марта 2010

Babel или Pybabel - это интерфейс к CLDR (Common Locale Data Repository) в Python. Таким образом, он обладает теми же «знаниями», что и функции и классы 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 Ответ

2 голосов
/ 04 марта 2010

PHP 5.3 поставляется с intl расширением:

Расширение интернационализации (далее упоминается как Intl) является оболочка для библиотеки 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 class:

    echo Locale::getRegion('de-CH-1901');
    

Кроме того, существует Сортировка и MessageFormatter классов.

...