Я всегда был поклонником подхода Rocky Lhotka в платформа CSLA (как упомянуто Charles). В целом, ли это управляется методом set, или путем вызова явного Проверяют метод, набор объектов BrokenRule сохраняется внутренне бизнес-объектом. UI просто должен проверить метод IsValid на объекте, который в свою очередь проверяет число BrokenRules, и обработайте его соответственно. С другой стороны, у Вас мог легко быть Проверить метод, генерируют событие, которое UI мог обработать (вероятно, более чистый подход). Можно также использовать список BrokenRules для отображения сообщений об ошибках к использованию или в сводной форме или рядом с соответствующим полем. Хотя платформа CSLA записана в.NET, общий подход может использоваться на любом языке.
я не думаю, выдавая Исключение, лучшая идея в этом случае. Я определенно следую за философской школой, которая говорит, что Исключения должны быть для исключительных обстоятельств, которые не простая ошибка проверки. Генерирование события OnValidationFailed было бы более чистым выбором, по-моему.
Между прочим, мне никогда не нравилась идея не разрешения пользовательскому отпуску поле, когда это находится в недопустимом состоянии. Существует столько ситуаций, где Вы, возможно, должны были бы покинуть поле временно (возможно, для установки некоторого другого поля сначала) перед возвращением и фиксацией недопустимого поля. Я думаю, что это - просто ненужное неудобство.
Это зависит от ОС.
Чтобы получить список локальных доступных, вы можете использовать locale -a
в оболочке
Я думаю, что вам нужен локальный что-то вроде Windows-1252
Загляните в словарь locale.locale_alias
.
>>> import locale
>>> len(locale.locale_alias)
789
>>> locale.locale_alias.keys()[:5]
['ko_kr.euc', 'is_is', 'ja_jp.mscode', 'kw_gb@euro', 'yi_us.cp1255']
>>>
(В моей установке 2.6.2 имеется 789 имен локалей.)