Поскольку Guido van Rossum, создатель Python и других разработчиков, на самом деле не нравится стиль форматирования кода с запятой и фигурными скобками.
Для краткого взгляда на то, как они относятся к этим вещи, попробуйте:
from __future__ import braces
Заявления в Python должны быть разделены пустыми строками, а составные операторы в Python должны быть ограничены отступом.
Существование ;
и однострочные составные утверждения (например, for i in x: print i
) предназначены только для очень ограниченных уступок ... и вы не можете их комбинировать.
При развертывании локализованного веб-сайта Вы собираетесь хотеть удостовериться Вы setlocale (). Для пения в припеве прочь yaauie's выше сообщения, я добавил бы что-то как следующий фрагмент кода в коде инициализации:
$locale = ( isset($_COOKIE['locale']) ) ?
$_COOKIE['locale'] :
$_SERVER['HTTP_ACCEPT_LANGUAGE'];
setlocale(LC_ALL, $locale);
Затем мы изменяем вышеупомянутую функцию number_format_locale()
, быть похожими так:
function number_format_locale($number,$decimals=2) {
$locale = localeconv();
return number_format($number,$decimals,
$locale['decimal_point'],
$locale['thousands_sep']);
}
Конечно, это находится в идеальном мире, в зависимости от платформы, которую Вы развертываете на, и какую версию файлов локали Вы установили, Вам, возможно, придется кодировать вокруг некоторых неисправностей. Но установка локали собирается помочь с деньгами, числами и датами.
string number_format (float $number, int $decimals, string $dec_point, string $thousands_sep)
видят php doku для number_format
, которым Другая полезная ссылка может быть Zend_Locale от Платформы Зенда - это может обнаружить язык Вашего пользователя и также помочь с числом/валютой, форматирующим
От http://us3.php.net/manual/en/function.number-format.php#76448 :
<?php
function strtonumber( $str, $dec_point=null, $thousands_sep=null )
{
if( is_null($dec_point) || is_null($thousands_sep) ) {
$locale = localeconv();
if( is_null($dec_point) ) {
$dec_point = $locale['decimal_point'];
}
if( is_null($thousands_sep) ) {
$thousands_sep = $locale['thousands_sep'];
}
}
$number = (float) str_replace($dec_point, '.', str_replace($thousands_sep, '', $str));
if( $number == (int) $number ) {
return (int) $number;
} else {
return $number;
}
}
?>
, Который, кажется, точно, что Вы ищете. :)
Вы могли использовать серверную переменную HTTP_ACCEPT_LANGUAGE для предположения их локали и ожидаемого числового формата.
Если бы я должен был реализовать это, то я позволил бы пользователю устанавливать предпочтение для переопределения предполагаемого, и моя функция будет похожа на это:
function number_format_locale($number,$decimals=2) {
$locale = ( isset($_COOKIE['locale']) ?
$_COOKIE['locale'] :
$_SERVER['HTTP_ACCEPT_LANGUAGE']
)
switch($locale) {
case 'en-us':
case 'en-ca':
$decimal = '.';
$thousands = ',';
break;
case 'fr':
case 'ca':
case 'de':
case 'en-gb':
$decimal = ',';
$thousands = ' ';
break;
case 'es':
case 'es-mx':
default:
$decimal = ',';
$thousands = ' ';
}
return $number_format($number,$decimals,$decimal,$thousands);
}