Для пользователей, которые регистрируются. Если Вам не приходит письмо с подтверждением email, пишите на admin[at]quizful[dot]net - будем подтверждать вручную. Просим прощения за доставленные неудобства.

С уважением,
команда Quizful
Знаете ли Вы, что

Свои вопросы для тестов можно добавлять на странице с информацией о тесте. При этом для некоторых тестов добавление вопросов закрыто

Топ контрибуторов
loading
loading
Лента обновлений
ссылка 18:56:00
Комментарий от vasilchenko:
Это не трудно, но мало кто мыслит в отличной от деся...
ссылка 18:28:37
Добавлен вопрос в тест Java - Основы
ссылка 18:14:25
Комментарий от asker:
молоток, возьми с полки пирожок.
ссылка 17:36:28
Комментарий от alex_skn:
korniltsev, Вы правы. Ответ к задаче исправил, спасибо ...
ссылка 17:26:36
Комментарий от Petr0:
Аналогично
Статистика

Тестов: 130, вопросов: 5785. Пройдено: 113087 / 461682.

Общие понятия интернационализации в PHP

head tail Информация о статье
категория
PHP
дата17.07.2009
авторacespace
голосов15

[Disclaimer: Данная статья была переведена в рамках "Конкурса на лучший перевод статьи" на сервисе Quizful. Ссылка на оригинал находится внизу страницы.]

При разработке веб-приложений, ориентированных на международную аудиторию, возникает проблема интернационализации – отображения выводимых данных в привычном для пользователя формате и на соответствующем языке, что является хорошим тоном по отношению к пользователям, особенно когда речь идет о коммерческих приложениях.

PHP включает различные расширения (т. н. PEAR – PHP Extension and Repository), поддерживающие интернационализацию в той или иной степени. В этой статье рассматривается библиотека I18N, обеспечивающая базовую поддержку интернационализации PHP-приложений Вы узнаете, как:

  • загрузить и установить библиотеку I18N
  • интернационализировать числовые данные
  • интернационализировать денежные значения
  • интернационализировать даты и время

Краткое введение в интернационализацию интернет-приложений

Интернационализация – это способ программирования, позволяющий адаптировать приложение для пользователей из различных стран. В интернационализированном приложении такие виды информации, как денежные и числовые значения, времена и даты, специальные символы, символы местного алфавита и так далее, выводятся в привычном для пользователя формате. Интернационализированное приложение пытается определить региональные установки пользователя (страну местонахождения и язык по умолчанию), запрашивая у браузера соответствующий этим параметрам код. Список возможных кодов стандартизирован ISO. Например, браузер пользователя из США выдаст код en_US (English, United States), в то время как браузер пользователя из Франции вернет код fr_FR. Коды передаются браузерами в виде строки из двух двухбуквенных значений, объединенных знаком подчеркивания. Приложение разделяет эти значения и на основе их анализа применяет соответствующий формат для вывода данных. Перечень возможных обозначений для страны и языка можно найти в стандарте ISO-639.

Как альтернативу, интернационализированное приложение может предложить сменить режим отображения вручную, выбрав необходимые страну и язык из списка, либо, что используется чаще, щелкнув по флагу страны.

Одним из способов интернационализировать приложение является сохранение языковых ресурсов во внешних файлах. Приложение загружает необходимые данные, базируясь на полученном от браузера коде либо выборе пользователя. Однако если нет необходимости изменять язык вывода, а нужно лишь скорректировать форматы вывода чисел, даты/времени и денежных единиц, разработчик может использовать упрощенный метод интернационализирования, при котором выводимые значения вместе с кодом передаются некоторой библиотеке, форматирующей вывод в соответствии с этим кодом. В этой статье мы рассмотрим второй способ, применительно к библиотеке I18N.

Загрузка и установка пакета I18N

Загрузить и установить библиотеку I18N для PHP можно следующей командой (на текущий момент последняя версия 0.8.6):

   >> pear install I18N-0.8.6

Библиотека содержит следующие классы:

  • Root class I18N_Common
  •     I18N_Common
  •     I18N_Country
  •     I18N_Language
  • Root class I18N_Format
  •     I18N_Format
  •     I18N_DateTime
  •     I18N_Number
  •     I18N_Currency

Далее в статье будет объяснено, как использовать эти классы.

Использование класса I18N_Country.

Класс используется для определения названия страны по коду страны. Класс включает два метода:

void getName([: $code = '']) – возвращает имя страны на основе ее кода, переданного строковым аргументом $code.

void isValidCode(mixed $code) – определяет правильность кода, переданного аргументом $code.

Пример использования методов класса I18N_Country:

   <?php

require_once 'I18N/Country.php';

$countries_codes = array('AF','AQ','BD',
'MB','DE','FR','HR','JP','IS','IT','MU',
'RO','US','JA');

print '<font face style="Arial" color="000076">';
print '<h4><u>Countries codes</u></h4>';

foreach( $countries_codes as $code )
{
//Создаем экземпляр класса I18N_Country
$country = new I18N_Country ();

print '<font face style="Arial" color="000076" size="3"><b>'.$code.' -->';

//Проверяем правильность $code
if($country->isValidCode($code))
{
//По переданному коду определяем название страны
print ( $country->getName($code) ).'<br />';
}
else
{
print '<font face style="Arial" color="red" size="3">';
print ( '<b> This is not a valid code!!! </b><br />' );
}
}
?>

Вывод скрипта будет выглядеть так:

   Countries codes
AF -->AFGHANISTAN
AQ -->ANTARCTICA
BD -->BANGLADESH
MB --> This is not a valid code!!!
DE -->GERMANY
FR -->FRANCE
HR -->CROATIA (local name: Hrvatska)
JP -->JAPAN
IS -->ICELAND
IT -->ITALY
MU -->MAURITIUS
RO -->ROMANIA
US -->UNITED STATES
JA --> This is not a valid code!!!

Использование класса I18N_Language.

Класс используется для определения названия языка по его коду с помощью метода getName: void getName([: $code = ''], : 1) – возвращает название языка, определяемое по коду языка, переданному через строковый аргумент $code. Через параметр 1 передается строка – код языка. Пример использования класса I18N_Language:

   <?php

require_once 'I18N/Language.php';

$language_codes = array('af','da','es','de','fr','ja',
'it','mn','ro','en');

print '<font face style="Arial" color="000076">';
print '<h4><u>Language codes</u></h4>';


foreach( $language_codes as $code )
{
//Создаем экземпляр класса I18N_Language
$language = new I18N_Language ();

print '<font face style="Arial" color="000076" size="3"><b>'.
$code.'</b> -->';
//По переданному коду получаем название языка
print ($language->getName($code)).'<br />';
}
?>

Вывод скрипта:

   Language codes
af -->Afrikaans
da -->Danish
es -->Spanish
de -->German
fr -->French
ja -->Japanese
it -->Italian
mn -->Mongolian
ro -->Romanian
en -->English

Использование класса I18N_Number.

Этот класс отвечает за вывод чисел в формате по умолчанию или в заданном формате. Вызов функции осуществляется в следующем формате: string format(mixed $number, [mixed $format = null]) – возвращает число $number в формате, определяемом аргументом $format, который может принимать следующие значения: I18N_NUMBER_FLOAT, I18N_NUMBER_INTEGER или название пользовательского формата, созданного с помощью метода setFormat, который будет описан ниже. Если аргумент $format опущен, значением по умолчанию будет I18N_NUMBER_FLOAT. Класс I18N_Number наследует две функции из класса I18N_Format:

int setFormat(string $format) – определяет пользовательский формат по образцу в аргументе $format.

void getFormat() – возвращает идентификатор формата, который может быть передан методу format для задания формата вывода числовых данных.

В следующем примере мы определим свой формат и выведем в нем числовые данные, а также идентификатор формата:

   <?php

require_once 'I18N/Number.php';

//Создадим экземпляр класса I18N_Number
$number = new I18N_Number( 'en_US' );

//Выведем число Фейнмана в формате с плавающей запятой
print( 'float --> '. $number->format( 999999,1 ) ).'<br />';

//Выведем число Фейнмана в своем формате
print( 'custom --> '.$number->format(
999999,$number->setFormat(
array(5,'$','#'))) ).'<br />';

//Выведем идентификатор нашего формата
print ( 'custom format id --> '.$number->getFormat() ).'<br />';

//Выведем число Фейнмана в целом формате
print( 'integer --> '.$number->format( 999999,2 ) ).'<br />';
?>

Результатом будет:

   float --> 999,999.000
custom --> 999#999$00000
custom format id --> 100
integer --> 999,999

Приведем пример программы, форматирующей выводимые числа для разных региональных установок. Скрипт использует простой интерфейс ввода, в котором можно ввести число, после чего это число будет выведено в разных форматах.

<html>
<head>
</head>
<body>
<form method="get" action="<?php echo $PHP_SELF ?>">
<table border="1" width="20%" height="20%" bgcolor="#000076">
<tr><td colspan="2" align="center"><font face style="Arial"
color="99eeff" size="3">Introduce the number :</td></tr>
<tr><td colspan="2" align="center"><input type="text"
name="number"></td></tr>
<tr><td align="center"><input type="submit" name="submit"
value="Send"></td><td align="center"><input type="reset"
value="Reset"></td></tr>
</table>
</form>

<?php
require_once 'I18N/Number.php';
if(isset($_GET['number'])) {

$get_number = $_GET['number'];

$languages = array('es_ES','nl_NL','de_DE','fr_FR','it_IT','en_US');

print '<font face style="Arial" color="000076">';
print '<h2><u>Number format</u></h2>';
print '<h4><u>Float format</u></h4>';

foreach( $languages as $lang )
{
//Создаем экземпляр класса I18N_Number
$number = new I18N_Number( $lang );

print '<font face style="Arial" color="000076"
size="3"><b>'.$lang.' --> </b>';

//Выводим переменную $number в формате с плавающей запятой
print $number->format($get_number).'<br />';

}

//Получаем идентификатор формата
print '<br /> The <b>float</b> format id is : '.$number->
getFormat($get_number).'<br />';

print '<h4><u>Integer format</u></h4>';

foreach( $languages as $lang )
{

//Создаем экземпляр класса I18N_Number
$number = new I18N_Number( $lang );

//Устанавливаем формат переменной $number целым
$number->setFormat(I18N_NUMBER_INTEGER);

print '<font face style="Arial" color="000076" size="3"><b>'.
$lang.' --> </b>';

//Выводим переменную $number в целом формате
print $number->format($get_number).'<br />';
}

//Получаем идентификатор целого формата
print '<br /> The <b>integer</b> format id is : '.$number->
getFormat($get_number).'<br />';

print '<h4><u>Custom format</u></h4>';

foreach( $languages as $lang )
{
//Создаем экземпляр I18N_Number
$number = new I18N_Number( $lang );

//Создаем свой формат :
//2 – количество цифр дробной части
//& - разделитель целой и дробной частей
//* - разделитель тысяч
$number->setFormat(array(2,'&','*'));

print '<font face style="Arial" color="000076" size="3"><b>'.
$lang.' --> </b>';

//Выводим переменную $number в своем формате
print $number->format($get_number).'<br />';

}

//Получаем идентификатор своего формата
print '<br /> The <b>custom</b> format id is : '.
$number-> getFormat($get_number).'<br />';
}

?>

</body>
</html>

Например, если пользователь наберет 123456, результат работы программы будет выглядеть так:

Float format: 
es_ES --> 123.456,000
nl_NL --> 123 456,000
de_DE --> 123.456,000
fr_FR --> 123 456,000
it_IT --> 123.456,000
en_US --> 123,456.000

The float format id is : 1
Integer format:
es_ES --> 123.456
nl_NL --> 123 456
de_DE --> 123.456
fr_FR --> 123 456
it_IT --> 123.456
en_US --> 123,456

The integer format id is : 2
Custom format:
es_ES --> 123*456&00
nl_NL --> 123*456&00
de_DE --> 123*456&00
fr_FR --> 123*456&00
it_IT --> 123*456&00
en_US --> 123*456&00

The custom format id is : 100

Использование класса I18N_Currency

Класс I18N_Currency используется для вывода денежных величин в формате по умолчанию или в заданном пользователем формате. Функция форматирования имеет следующий вид: void format(mixed $amount, [mixed $format = I18N_CURRENCY_LOCAL]) – возвращает денежную величину $amount в указанном формате. В качестве аргумента для задания формата можно использовать значения I18N_CURRENCY_LOCAL, I18N_CURRENCY_INTERNATIONAL или имя своего формата, созданного с помощью метода setFormat. Если аргумент $format опущен, значением по умолчанию для формата будет I18N_CURRENCY_LOCAL. Класс I18N_Currency наследует от класса I18N_Format методы setFormat и getFormat (см. ранее - "Использование класса I18N_Number").

Приведем пример скрипта, форматирующего денежные величины для различных стран. В этом примере используется простой интерфейс ввода данных, аналогичный использованному в предыдущем примере.

<html>
<head>
</head>
<body>

<form method="get" action="<?php echo $PHP_SELF ?>">
<table border="1" width="20%" height="20%" bgcolor="#000076">
<tr><td colspan="2" align="center">
<font face style="Arial" color="99eeff" size="3">Introduce the amount :</td></tr>
<tr><td colspan="2" align="center"><input type="text" name="currency"></td></tr>
<tr><td align="center"><input type="submit" name="submit" value="Send"></td>
<td align="center"><input type="reset" value="Reset"></td></tr>
</table>
</form>

<?php
require_once 'I18N/Currency.php';

if(isset($_GET['currency'])) {

$get_sum = $_GET['currency'];
$languages = array('es_ES','nl_NL','de_DE','fr_FR','it_IT','en_US');

print '<font face style="Arial" color="000076">';
print '<h4><u>Currency format</u></h4>';

foreach( $languages as $lang )
 {
//Создаем экземпляр классаI18N_Currency
$currency = new I18N_Currency( $lang );

print '<font face style="Arial" color="000076" size="3"><b>'.$lang.'</b><br />';

//Выводим переменную $currency в местном формате
print 'Currency Local --> '.$currency->format($get_sum).'<br />';
//Выводим переменную $currency в международном формате
print 'Currency International --> '.$currency->format($get_sum,2).'<br /><br />';
}
}
?>
</body>
</html>

Результатом работы скрипта будет:

Currency format

es_ES
Currency Local --> 123.456,00 €
Currency International --> 123.456,00 Eur

nl_NL
Currency Local --> 123.456,00 €
Currency International --> 123.456,00 Eur

de_DE
Currency Local --> 123.456,00 €
Currency International --> 123.456,00 Eur

fr_FR
Currency Local --> 123.456,00 €
Currency International --> 123.456,00 Eur

it_IT
Currency Local --> 123.456,00 €
Currency International --> 123.456,00 Eur

en_US
Currency Local --> $123,456.00
Currency International --> $US 123,456.00

Использование класса I18N_DateTime.

Преобразование даты и времени осуществляется похожим образом, при этом используется класс I18N_DateTime. Методы класса используют заданный регион и формат вывода – готовый или созданный пользователем: string format([int $timestamp = null], [int $format = null]) – возвращает отформатированное значение даты/времени. Формат задается аргументом $format, который может принимать следующие значения: I18N_DATETIME_SHORT, I18N_DATETIME_DEFAULT, I18N_DATETIME_MEDIUM, I18N_DATETIME_LONG, I18N_DATETIME_FULL.

string formatFull([int $timestamp = null]) – эквивалентно вызову format($timestamp , I18N_DATETIME_FULL). 
string formatLong([int $timestamp = null]) – эквивалентно вызову format($timestamp , I18N_DATETIME_LONG).
string formatShort([int $timestamp = null]) – эквивалентно вызову format($timestamp , I18N_DATETIME_SHORT).
string formatDate([int $timestamp = null], [int $format = null]) – возвращает только дату.
Если аргумент $format опущен, используется формат по умолчанию для текущей региональной установки.

Класс также включает в себя методы formatDateFull, formatDateLong и formatDateShort. Суть этих методов ясна уже из названия и подробно рассматривать их мы не будем.

Для вывода только времени можно использовать метод formatTime:

string formatTime([int $timestamp = null], [int $format = null]) – возвращает только отформатированное время. Если аргумент $format опущен, используется формат по умолчанию для текущей региональной установки.

Так же как и для вывода даты, доступны методы для вывода времени – formatTimeFull, formatTimeLong и formatTimeShort.

В следующем примере мы выведем дату/время в различных форматах.

<html>
<head>
</head>
<body>

<form method="get" action="<?php echo $PHP_SELF ?>">
<table border="1" width="30%" height="30%" bgcolor="#000076">
<tr><td colspan="6" align="center"><font face style="Arial"
color="99eeff" size="5">Choose a date :</td></tr>
<tr><td><font face style="Arial" color="99eeff" size="3">Day: </td>
<td><select name="day" size="1">
<?php
for ($i=1;$i<=31;$i++)
{
echo '<option value="'.$i.'">'.$i;
}
?>

</select></td>
<td><font face style="Arial" color="99eeff" size="3">Month:</td>
<td><select name="month" size="1">
<option value="January">January
<option value="February">February
<option value="March">March
<option value="April">April
<option value="May">May
<option value="June">June
<option value="July">July
<option value="August">August
<option value="September">September
<option value="October">October
<option value="November">November
<option value="December">December
</select></td>
<td><font face style="Arial" color="99eeff" size="3">Year: </td>
<td><select name="year" size="1">
<?php
for ($i=1980;$i<=2008;$i++)
{
echo '<option value="'.$i.'">'.$i;}
?>
</select></td>
</tr>
<tr></tr>
<tr></tr>
<tr><td><font face style="Arial" color="99eeff" size="3">Hour: </td>
<td><select name="hour" size="1">
<?php
for ($i=1;$i<=24;$i++)
{
echo '<option value="'.$i.'">'.$i;}
?>
</select></td>
<td><font face style="Arial" color="99eeff" size="3">Minutes: </td>
<td><select name="minutes" size="1">
<?php
for ($i=1;$i<=60;$i++)
{
echo '<option value="'.$i.'">'.$i;}
?>
</select></td>
<td><font face style="Arial" color="99eeff" size="3">Seconds: </td>
<td><select name="seconds" size="1">
<?php
for ($i=1;$i<=60;$i++)
{
echo '<option value="'.$i.'">'.$i;}
?>
</select></td></tr>
<tr><td colspan="3"><input type="submit" name="submit" value="Send"></td>
<td colspan="3"><input type="reset" value="Reset"></td></tr>

</table>
</form>

<?php
require_once 'I18N/DateTime.php';

if((isset($_GET['day']))&&(isset($_GET['month'])) &&
(isset($_GET['year']))&& (isset($_GET['hour']))&&
(isset($_GET['minutes']))&&(isset($_GET['seconds'])))
{

//Получаем дату и время из HTML-формы
$string_date = $_GET['day'].' '.$_GET['month'].' '.$_GET['year'].' '.
$_GET['hour'].':'.$_GET['minutes'].':'.$_GET['seconds'];

//Конвертируем текстовое представление даты/времени в Unix-формат
$timestamp = strtotime($string_date);

$languages = array('es_ES','nl_NL','de_DE','fr_FR','it_IT','en_US');

foreach( $languages as $lang )
{
//Создаем экземпляр класса I18N_DateTime
$dateTime = new I18N_DateTime( $lang );

print '<font face style="Arial" color="000076" size="3">';
print '<h1>'.$lang.'</h1>';

print '<h3><u>Date and Time format</u></h3>';

//Выводим переменную $dateTime в формате по умолчанию
print '<br /> format: '.$dateTime->format($timestamp).'<br />';

//Выводим переменную $dateTime в формате full
print '<br /> formatFull: '.$dateTime->formatFull($timestamp).'<br />';

//Выводим переменную $dateTime в формате long
print '<br />formatLong: '.$dateTime->formatLong($timestamp).'<br />';

// Выводим переменную $dateTime в формате short
print '<br />formatShort: '.$dateTime->formatShort($timestamp).'<br />';

print '<h3><u>Only Date format</u></h3>';

//Выводим переменную $dateTime в формате по умолчанию
print '<br />formatDate: '.$dateTime->formatDate($timestamp).'<br />';

//Выводим только дату в формате full
print '<br />formatDateFull: '.$dateTime->formatDateFull($timestamp).'<br />';

//Выводим только дату в формате long
print '<br />formatDateLong: '.$dateTime->formatDateLong($timestamp).'<br />';

//Выводим только дату в формате short
print '<br />formatDateShort: '.$dateTime->formatDateShort($timestamp).'<br />';

print '<h3><u>Only Time format</u></h3>';

//Выводим только время в формате по умолчанию
print '<br />formatTime: '.$dateTime->formatTime($timestamp).'<br />';

//Выводим только фремя в формате full
print '<br />formatTimeFull: '.$dateTime->formatTimeFull($timestamp).'<br />';

//Выводим только время в формате long
print '<br />formatTimeLong: '.$dateTime->formatTimeLong($timestamp).'<br />';

//Выводим только время в формате short
print '<br />formatTimeLong: '.$dateTime->formatTimeShort($timestamp).'<br />';

print '<br />'.
'============================================================='.'<br />';
}
}
?>
</body>
</html>

Результат работы программы:

   es_ES
Date and Time format
format: 07-sep-1980 11:20:30
formatFull: domingo, 07 de septiembre de 1980 11:20 EET +0200
formatLong: 07 septiembre 1980 11:20:30 EET +0200
formatShort: 07/09/80 11:20

Only Date format
formatDate: 07-sep-1980
formatDateFull: domingo, 07 de septiembre de 1980
formatDateLong: 07 septiembre 1980
formatDateShort: 07/09/80

Only Time format
formatTime: 11:20:30
formatTimeFull: 11:20 EET +0200
formatTimeLong: 11:20:30 EET +0200
formatTimeLong: 11:20
===============================================================

fr_FR
Date and Time format
format: 07-sep-1980 11:20:30
formatFull: dimanche, 07 de septembre de 1980 11:20 EET +0200
formatLong: 07 septembre 1980 11:20:30 EET +0200
formatShort: 07/09/80 11:20

Only Date format
formatDate: 07-sep-1980
formatDateFull: dimanche, 07 de septembre de 1980
formatDateLong: 07 septembre 1980
formatDateShort: 07/09/80

Only Time format
formatTime: 11:20:30
formatTimeFull: 11:20 EET +0200
formatTimeLong: 11:20:30 EET +0200
formatTimeLong: 11:20
===============================================================

it_IT
Date and Time format
format: 07 Set 1980 11:20:30
formatFull: Domenica 07 Settembre 1980 11:20
formatLong: 07 Settembre 1980 11:20:30 EET +0200
formatShort: 07/09/80 11:20

Only Date format
formatDate: 07 Set 1980
formatDateFull: Domenica 07 Settembre 1980
formatDateLong: 07 Settembre 1980
formatDateShort: 07/09/80

Only Time format
formatTime: 11:20:30
formatTimeFull: 11:20
formatTimeLong: 11:20:30 EET +0200
formatTimeLong: 11:20
===============================================================

en_US
Date and Time format
format: 07-Sep-1980 11:20:30
formatFull: Sunday, 07 September 1980 11:20 o'clock EET +0200
formatLong: 07 September 1980 11:20:30 EET +0200
formatShort: 07/09/80 11:20

Only Date format
formatDate: 07-Sep-1980
formatDateFull: Sunday, 07 September 1980
formatDateLong: 07 September 1980
formatDateShort: 07/09/80

Only Time format
formatTime: 11:20:30
formatTimeFull: 11:20 o'clock EET +0200
formatTimeLong: 11:20:30 EET +0200
formatTimeLong: 11:20
===============================================================

Создание пользовательских форматов.

Чтобы создать свой формат для даты и/или времени, можно использовать следующие методы:

  • int setFormat([string $format = I18N_DATETIME_DEFAULT]) – определяет пользовательский формат даты и времени с помощью аргумента $format.
  • int setDateFormat([string $format = I18N_DATETIME_DEFAULT]) – определяет пользовательский формат даты с помощью аргумента $format.
  • int setTimeFormat([string $format = I18N_DATETIME_DEFAULT]) – определяет пользовательский формат времени с помощью аргумента $format.

Пример создания своего формата отображения даты/времени:

   <?php
require_once 'I18N/DateTime.php';

//Создаем экземпляр класса I18N_DateTime
$dateTime = new I18N_DateTime( 'en_US' );

//Узнаем формат по умолчанию
print 'The default current date and time is: ';
$dateTime->setFormat();
print( $dateTime->format() ).'<br />';

//Выводим текущие дату и время в своем формате
print 'A custom format for current date and time is: ';
$myFormat = $dateTime->setFormat('d.m.Y , l H:i:s');
print $dateTime->format().'<br />';

//Выводим только дату в своем формате
print 'A custom format only for the date is: ';
$myDateFormat = $dateTime->setDateFormat(
'\T\o\d\a\y \i\s l \, d \* m \* y ');
print( $dateTime->formatDate() ).'<br />';

//Выводим только время в своем формате
print 'A custom format only for the time is: ';
$myTimeFormat = $dateTime->setTimeFormat(
'\T\h\e \f\o\r\m\a\t\e\d \c\u\r\r\e\n\t
\t\i\m\e \i\s \: H \H\o\u\r\s i \M\i\n\u\t\e\s \a\n\d s \S\e\c\o\n\d\s');
print( $dateTime->formatTime() ).'<br />';
?>

Выводимые данные будут выглядеть так:

   The default current date and time is: 
26-Jun-2008 10:40:11
A custom format for current date and time is:
26.06.2008 , Thursday 10:40:11
A custom format only for the date is:
Today is Thursday , 26 * 06 * 08
A custom format only for the time is:
The formatted current time is :
10 Hours 40 Minutes and 11 Seconds

Итак, мы рассмотрели базовые способы интернационализации приложений с помощью пакета I18N. Используя его функции для форматирования вывода числовых и денежных величин, а также даты/времени, вы можете создавать сайты, корректно отображающие эти данные для пользователей из разных стран.

----------
Оригинальный текст статьи: Base Concepts of Internationalization in PHP

Если Вам понравилась статья, проголосуйте за нее

Голосов: 15  loading...
acespace   googperson   googman   googler   admin   c0nst   globus   Istamendil   romaroid   VanRey   KV1128   mipa   alexpts   qu1ze   Tymkiv_Tolia