Please see PEARs API Documentation for details on the API provided by I18Nv2.
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.
I18Nv2::setLocale()
<?php
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";
}
}
?>
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.
I18Nv2::getInfo()
<?php
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());
?>
I18Nv2 provides an easy way to utilize the ob_iconv_handler() through I18Nv2::autoConv().
I18Nv2::autoConv()
<?php
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";
?>
I18Nv2_Locale is a formatter object that provides functionality to format dates, times, numbers and currencies in locale dependent conventions.
I18Nv2_Locale
<?php
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";
?>
I18Nv2 provides a language, charset and locale negotiator for HTTP.
I18Nv2_Negotiator
<?php
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";
?>
I18Nv2 provides translated lists of ISO language names.
I18Nv2_Language
<?php
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";
?>
I18Nv2 provides translated lists of ISO country names.
I18Nv2_Country
<?php
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";
?>
I18Nv2 provides decorated classes for country and language lists.
I18Nv2_DecoratedList
<?php
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();
?>
I18Nv2_CommonList::toDecoratedList()
<?php
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();
?>