Аргерих Л. О языке РНР. Часть 5. Страница 61


указателя index, html , en, французский - index, html, fг, и т. д.

PHPWeather: практический пример

PHP Weather (http://sourceforge.net/projects/phpweat"> http://sourceforge.net/projects/phpweat - это сценарий, который показывает на веб-сайте погоду в данный момент. Поскольку этот сценарий переведен более чем на десять языков, проблемы il8n будут возни­кать постоянно.

PHP Weather получает сводку погоды в файле, закодированном в специ­альном формате. Эти файлы данных, METAR, как их называют (http://weat- her.noaa.gov/weather /лгегаг.вЛШОсоздаются один или два раза в час в аэро­портах всего мира. РНР Weather может получать METAR из примерно 3000 аэропортов через FTP или HTTP с центрального сервера. В результате раско­дирования получается много информации. Мы узнаем, что ветер ду­

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

После извлечения информации из METAR помещаем ее в примерно такие предложения:

echo("The temperature is $temp_f degrees Fahrenheit ($temp_c degrees Celsius).");

В данном примере в переменных $temp_f и $temp_c уже содержится значение температуры, измеренное в градусах Фаренгейта и Цельсия.

Конечно, некоторые строки в METAR сложнее. Если взять, например, ин­формацию о ветре, то там много необязательных сведений. Там могут быть данные о шквалах или перемене направления ветра, поэтому строки стано­вятся меньше или операторы if могут стать больше. Здесь мы просто постро­им логику, необходимую для помещения строк на английском языке в сце­нарий. Код будет выглядеть так:

if(isset($cloud_layer1_altitude_ft)) {

$sky_str = "There were <b>$cloud_layer1_condition</b> at a height of " . "<b>$cloud_layer1_altitude_fTi</b> meters" . "(<b>$cloud_layer1_altitude_ft</b> feet)";

} else {

Jsky_str = "The sky was <b>clear</b>";

}

Этот маленький фрагмент кода создает строку:

There were scattered clouds at a height of 2438 meters (8000 feet)

Слово «scattered» входило в данные, возвращенные функцией, декодировав­шей METAR.

Теперь, если пользователь попробует перевести этот код на датский язык, то поскольку на il8n не было обращено никакого внимания, придется просто просмотреть файл и заменить все английские строки эквивалентными дат­скими. Хотя сценарий создан для того, чтобы генерировать сообщения на английском, он будет также работать с прямой заменой на датский, возмож­но, благодаря тому, что словарь метеосводок достаточно ограничен.