Анимация
JavaScript


Главная  Библионтека 

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 [ 73 ] 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145

Глава 17

Средства интернационализации

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

locale Использование национальных особенностей. gettext Выдача сообщений на родном языке.

17.1 locale - использование национальных особенностей

Модуль locale позволяет работать с различными языками, не зная национальных и культурных особенностей каждой страны. Изначально система использует стандартные национальные установки (с именем С ).

Error

Исключения этого класса генерируются функцией setlocale() , если установки не могут быть изменены.

setlocale (category [, locale])

Если задан аргумент locale, изменяет текущие национальные установки категории category. Аргумент locale является именем, характеризующим национальную принадлежность (locale). Если аргумент locale равен пустой строке, используются пользовательские установки по умолчанию. Начиная с версии 2.0, Вы можете использовать в качестве locale кортеж из двух строк: кода языка и кодировки. В случае успешного изменения установок, возвращает новое имя, в противном случае генерирует исключение Error.

Если аргумент locale опущен или равен None, возвращает текущие установки для категории category.

На большинстве платформ использование функции setlocale() небезопасно в многопоточных программах. Обычно приложения начинаются со следующих строк:

import locale

locale.setlocale(locale.LC ALL,) Это позволяет использовать пользовательские установки по умолчанию для всех



17.1. locale - использование национальных особенностей 237

категорий1. Если национальные установки после этого не меняются, у Вас не должно возникнуть проблем с использованием нескольких потоков.

localeconv ()

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

decimal point (категория LC NUMERIC)

Символ, используемый в качестве десятичной точки.

grouping (категория LC NUMERIC)

Список чисел, указывающих, в каких относительных позициях ожидается использование группирующего разделителя localeconv()[thousands sep]. Если последовательность заканчивается символом CHAR MAX, разделитель далее не используется. Если последовательность заканчивается нулем, далее повторно используется последний размер группы .

thousands sep (категория LC NUMERIC)

Символ, используемый в качестве разделителя между группами.

int curr symbol (категория LC M0NETARY)

Международное обозначение национальной валюты (в соответствии со стандартом ISO 4217).

currency symbol (категория LC M0NETARY)

Местное обозначение национальной валюты.

mon decimal point (категория LC M0NETARY)

Символ, используемый в качестве десятичной точки в денежных суммах.

mon grouping (категория LC M0NETARY)

Имеет такой же формат, как и localeconv()[ grouping ] . Используется для денежных сумм.

mon thousands sep (категория LC M0NETARY) Символ, используемый в качестве разделителя между группами в денежных суммах.

positive sign (категория LC M0NETARY)

negative sign (категория LC M0NETARY)

Символы, используемые для обозначения положительных и отрицательных денежных сумм.

int frac digits (категория LC M0NETARY)

rac digits (категория LC M0NETARY)

Число цифр после десятичной точки для международных и местных сумм.

p cs precedes (категория LC M0NETARy)

n cs precedes (категория LC M0NETARy)

0, если символ валюты указывается после суммы, и 1, если символ валюты

1В ОС Windows используются разные кодировки для консольных и графических приложений, для русского языка это cp866 и Unicode. Однако установки по умолчанию подразумевают кодировку, которая использовалась в старых версиях Windows в графическом режиме - cp1251. Поэтому использование национальных установок по умолчанию в Windows, к сожалению, не имеет смысла.



указывается перед суммой, для положительных и отрицательных денежных сумм соответственно.

p sep by space (категория LC MONETARy)

n sep by space (категория LC MONETARy)

1 , если сумма и символ валюты должны быть разделены пробелом, иначе 0 , для положительных и отрицательных денежных сумм соответственно.

p sign posn (категория LC MONETARy)

n sign posn (категория LC MONETARy)

Указывает, в каком формате должна быть выведена денежная сумма со знаком (соответственно положительным и отрицательным): 0 - сумма и символ валюты заключаются в скобки, 1 - знак указывается перед суммой и символом валюты, 2 - после суммы и символа валюты, 3 - непосредственно перед символом валюты, 4 - непосредственно после символа валюты и CHAR MAX - формат не установлен.

CHAR MAX

Символическая константа, обычно используется в словаре, возвращаемом функцией localeconv(), если формат не установлен.

getdefaultlocale ([envvars])

Пытается определить пользовательские национальные установки по умолчанию для данной категории и возвращает их в виде кортежа из строк с кодом языка и кодировкой (вместо строки может быть None, если значение не может быть опре-делено)2. Если установки по умолчанию не могут быть определены с помощью системного вызова, используются переменные окружения с именами, приведенными в списке envvars (по умолчанию используется [LANGUAGE, LC ALL, codeLC CTYPE, LANG]). Функция доступна, начиная с версии 2.0.

getlocale ([category])

Возвращает текущие установки для категории category в виде кортежа из строк с кодом языка и кодировкой (вместо строки может быть None, если значение не может быть определено). Аргумент category может быть любой константой вида LC *, кроме LC ALL; по умолчанию используется LC CTYPE. Функция доступна, начиная с версии 2.0.

normalize( locale)

Возвращает нормализованное имя национальных установок. Если имя locale не может быть нормализовано, оно возвращается без изменений. Если в исходном имени не указана кодировка, используется кодировка по умолчанию для данного языка (ISO8859-5 для русского). Функция доступна, начиная с версии 2.0.

resetlocale( [category])

Изменяет текущие национальные установки для категории category (по умолчанию LC ALl) на пользовательские установки по умолчанию3. Функция доступна,

2 В Windows NT getdefaultlocale() возвращает верное значение, которое, однако, не может быть использовано в качестве аргумента функции setlocale() , так как последняя требует имя национальных установок в своем (не стандартном) виде. Ситуация возможно изменится в будущих версиях языка.

3Не работает в Windows NT из-за несовместимости функций getdefaultlocale() и setlocale() (см. также сноску 2).



0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 [ 73 ] 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145