PEAR Manual
Prev |  | Next

# Examples

Examples -- Usage example for I18Nv2

## API Documentation

Please see PEARs API Documentation for details on the API provided by I18Nv2.

## Setting a locale

Because Un*x and Windows use different locale codes, PHPs setLocale() is not easily portable - I18Nv2::setLocale() attempts to provide this portability.

With I18Nv2 you can use standard locale codes like 'en_US' on both, Linux and Windows, though the list is far not complete yet, so if you stumble over a not covered locale (I18Nv2::$locales in I18Nv2::_main()), just drop a mail to the maintainer with the missing locale and its corresponding Win32 code.

Example 44-1. I18Nv2::setLocale()
    require_once 'I18Nv2.php';

    foreach (array('en_US', 'de', 'fr_CN') as $locale) {
        if (!$syslocale = I18Nv2::setLocale($locale)) {
            echo "Locale '$locale' not available!\n";
        } else {
            echo "Systems locale for '$locale': '$syslocale'\n";
        }
    }

## Retrieving locale conventions

I18Nv2 holds locale conventions returned by localeConv() stored statically, so they are easily accessible through I18Nv2::getInfo(). Have a look at the documentation of PHPs localeConv() for all available information.

Example 44-2. I18Nv2::getInfo()
    require_once 'I18Nv2.php';

    I18Nv2::setLocale('fr');

    $dec_point = I18Nv2::getInfo('decimal_point');
    echo "The decimal point for the french locale is '$dec_point'.\n";
    echo "I18Nv2::getInfo() called without parameter returns all available information:\n";
    print_r(I18Nv2::getInfo());

## Automatically transform output character set

I18Nv2 provides an easy way to utilize the ob_iconv_handler() through I18Nv2::autoConv().

Example 44-3. I18Nv2::autoConv()
    require_once 'I18Nv2.php';

    // Writing a shell app that should also display nicely in a DOS box
    if (I18Nv2_WIN) {
        I18Nv2::autoConv('CP850');
    }

    // output some latin1 stuff
    echo "δόφί\n";

## Using I18Nv2_Locale

I18Nv2_Locale is a formatter object that provides functionality to format dates, times, numbers and currencies in locale dependent conventions.

Example 44-4. I18Nv2_Locale
    require_once 'I18Nv2.php';

    $locale = &I18Nv2::createLocale('de_AT');

    echo "Format a currency value of 2000: ",
        $locale->formatCurrency(2000, I18Nv2_CURRENCY_INTERNATIONAL), "\n";

    echo "Format todays date:              ",
        $locale->formatDate(null, I18Nv2_DATETIME_FULL), "\n";

    echo "Format current time:             ",
        $locale->formatTime(null, I18Nv2_DATETIME_SHORT), "\n";

## Using I18Nv2_Negotiator

I18Nv2 provides a language, charset and locale negotiator for HTTP.

Example 44-5. I18Nv2_Negotiator
    require_once 'I18Nv2/Negotiator.php';

    $_SERVER['HTTP_ACCEPT_LANGUAGE'] = 'en-US,en-GB,en;q=0.5,de';
    $_SERVER['HTTP_ACCEPT_CHARSET']  = 'utf-8,iso-8859-1;q=0.5';

    $neg = &new I18Nv2_Negotiator;

    echo "User agents preferred language:                  ",
        $lang = $neg->getLanguageMatch(), "\n";

    echo "User agents preferred country for language '$lang': ",
        $neg->getCountryMatch($lang), "\n";

    echo "User agents preferred locale:                    ",
        $neg->getLocaleMatch(), "\n";

    echo "User agents preferred charset:                   ",
        $neg->getCharsetMatch(), "\n";

## Using I18Nv2_Language

I18Nv2 provides translated lists of ISO language names.

Example 44-6. I18Nv2_Language
    require_once 'I18Nv2/Language.php';

    $lang = &new I18Nv2_Language('it', 'iso-8859-1');

    echo "Italian name for English: ",
        $lang->getName('en'), "\n";

    echo "Italian name for French:  ",
        $lang->getName('fr'), "\n";

## Using I18Nv2_Country

I18Nv2 provides translated lists of ISO country names.

Example 44-7. I18Nv2_Country
    require_once 'I18Nv2/Country.php';

    $country = &new I18Nv2_Country('de', 'iso-8859-1');

    echo "German name for United States: ",
        $country->getName('us'), "\n";

    echo "German name for Italia:        ",
        $country->getName('it'), "\n";

## Using I18Nv2_Country

I18Nv2 provides decorated classes for country and language lists.

Example 44-8. I18Nv2_DecoratedList
    require_once 'I18Nv2/Country.php';
    require_once 'I18Nv2/DecoratedList/HtmlSelect.php';
    require_once 'I18Nv2/DecoratedList/HtmlEntities.php';

    $c = &new I18Nv2_Country('it', 'iso-8859-1');
    $e = &new I18Nv2_DecoratedList_HtmlEntities($c);
    $s = &new I18Nv2_DecoratedList_HtmlSelect($e);

    // set some attributes
    $s->attributes['select']['name'] = 'CountrySelect';
    $s->attributes['select']['onchange'] = 'this.form.submit()';

    // set a selected entry
    $s->selected['DE'] = true;

    // print a HTML safe select box
    echo $s->getAllCodes();

Example 44-9. I18Nv2_CommonList::toDecoratedList()
    require_once 'I18Nv2/Country.php';

    $c = &new I18Nv2_Country('it', 'iso-8859-1');
    $s = &$c->toDecoratedList('HtmlSelect');

    // set some attributes
    $s->attributes['select']['name'] = 'CountrySelect';
    $s->attributes['select']['onchange'] = 'this.form.submit()';

    // set a selected entry
    $s->selected['IT'] = true;

    // print a HTML select box
    echo $s->getAllCodes();

Prev | Home | Next
Intro | Up | I18Nv2 Constants