Функциональный подход
сначала определяет вспомогательный метод frac
, который каким-то образом совпадает с math.modf
>>> def frac(n):
... i = int(n)
... f = round((n - int(n)), 4)
... return (i, f)
...
>>> frac(53.45)
(53, 0.45) #a tuple
, затем функция для форматирования часы десятичные
>>> def frmt(hour): #you can rewrite it with while if you wish
... hours, _min = frac(hour)
... minutes, _sec = frac(_min*60)
... seconds, _msec = frac(_sec*60)
... return "%s:%s:%s"%(hours, minutes, seconds)
...
>>> frmt(72.345)
'72:20:42'
>>> l = [72.345, 72.629, 71.327]
>>> map(frmt, l)
['72:20:42', '72:37:44', '71:19:37']
input { font-family: Verdana, Raavi, sans-serif; font-size: 14px;}
Это должно работа в Ваших целях:
, я не положителен, если все браузеры будут вести себя правильно, но это - то, что они должны сделать согласно спецификации CSS.
Чистое решение CSS могло бы быть столь же легким как:
input[lang=en] {
font-family:Verdana;
font-size:12px;
}
input[lang=pa] {
font-family:Raavi;
font-size:14px;
}
, Но все еще ваше дело устанавливать lang
атрибут входного элемента.
, К сожалению, как с большинством воображение функции CSS, селекторы атрибута не составляют 100%, работающих через массив браузеров сегодня. Ваш лучший выбор, по-моему, состоит в том, чтобы использовать класс на язык и присвоить его входному элементу.
Обновление:
На Ваш запрос, вот пример наивного способа сделать это с ванильным JavaScript. Существуют, конечно, улучшения, которые будут сделаны, но это "работает".
<style type="text/css">
.lang-en {
font-family:Verdana;
font-size:12px;
}
.lang-pa {
font-family:Raavi;
font-size:14px;
}
</style>
<form>
<input type="text" onkeyup="assignLanguage(this);" />
</form>
<script type="text/javascript">
function assignLanguage(inputElement) {
var firstGlyph = inputElement.value.charCodeAt(0);
if((firstGlyph >= 65 && firstGlyph <= 90) || (firstGlyph >= 97 && firstGlyph <= 122)) {
inputElement.setAttribute('lang', 'en');
inputElement.setAttribute('xml:lang', 'en');
inputElement.setAttribute('class', 'lang-en');
} else {
inputElement.setAttribute('lang', 'pa');
inputElement.setAttribute('xml:lang', 'pa');
inputElement.setAttribute('class', 'lang-pa');
}
}
</script>
Этот пример огни после символ был введен. Это затем проверяет, падает ли это между диапазоном, который рассматривают "английским языком", и присваивает атрибуты соответственно. Это устанавливает lang
, xml:lang
, и class
атрибуты.
Это - обычная практика при поддержании многоязычных веб-сайтов для использования отдельных файлов CSS для каждого языка. Это желательно, потому что необходимо будет скорректировать больше, чем шрифт. Необходимо будет часто корректировать интервал для соответствия длине строк на языке. Кроме того, Вы, возможно, должны скорректировать часть основного форматирования страницы для создания этого более естественным для пользователей языка.
устойчивый ответ должен интернационализировать а не просто соглашаться на другой шрифт, потому что в конечном счете Вы найдете, что выбор шрифта будет недостаточен.
Как CSS мог знать о входном языке?
я боюсь, что единственное решение состоит в том, чтобы найти шрифт юникода, который довольно ищет оба набора символов. Который совсем не прекрасен, если Ваш удаленный читатель не установил его. Возможно, Arial Unicode MS.
Единственное надежное решение на данный момент состоит в том, чтобы перечислить шрифты в желаемом порядке, как Miles указал.
, Надо надеяться, (корректное) решение, обозначенное Zack, могло бы правильно поддерживаться большим количеством браузеров.
, Но даже затем это будет Ваша обязанность отметить различные разделы с надлежащим атрибутом Ленга.
Ничто не может надежно обнаружить язык никакого текста.