标准库汉化清单
ChinesePython 的标准库汉化到哪一步了、报错正文和异常类名都落在哪些库里。数字都是实测的。
由
tools/生成标准库汉化清单.py生成,不要手改。
先分清两件事
「库汉化了」在这个项目里指的是两件完全不同的事,别混:
| 汉化了什么 | 你能怎么写 | |
|---|---|---|
| 报错正文 | 库自己 raise 的那些句子,显示的时候换中文 | API 一个字没变:import zipfile 还是 import zipfile,ZipFile(...) 还是 ZipFile(...),方法名还是英文 |
| 模块异常类名 | zipfile.BadZipFile 这种显示名 | 也一样:类名本身(type(e).__name__)还是英文,只有屏幕上是中文 |
换句话说:这两件事都只在「屏幕上」生效,不会让你用中文写库调用。 能用中文写的只有名字层那几样(关键字、内置名、形参名、类型方法名),见 中文关键字表 等几篇。
一、报错正文:2808 条,落在 294 个库文件里
下表「已译 / 该库自己 raise 的」是这个文件自己的数字;分母 0 表示这个文件没有提取器看得见的正文。
| 库文件 | 已译 | 该库自己 raise 的 |
|---|---|---|
_pyio.py | 80 | 80 |
zipfile/__init__.py | 67 | 67 |
_pydatetime.py | 64 | 64 |
asyncio/base_events.py | 64 | 64 |
typing.py | 57 | 57 |
TAR压缩包.py | 56 | 56 |
IP地址.py | 55 | 55 |
re/_parser.py | 52 | 52 |
pickle.py | 49 | 49 |
argparse.py | 46 | 46 |
inspect.py | 46 | 46 |
email/_header_value_parser.py | 45 | 45 |
pdb.py | 45 | 45 |
statistics.py | 45 | 45 |
enum.py | 44 | 44 |
ssl.py | 42 | 42 |
unittest/mock.py | 42 | 42 |
_pydecimal.py | 40 | 40 |
pickletools.py | 40 | 40 |
subprocess.py | 35 | 35 |
optparse.py | 34 | 34 |
IMAP客户端.py | 32 | 32 |
threading.py | 32 | 32 |
multiprocessing/connection.py | 31 | 31 |
tomllib/_parser.py | 30 | 30 |
xml/dom/minidom.py | 28 | 28 |
functools.py | 27 | 27 |
mailbox.py | 26 | 26 |
urllib/parse.py | 26 | 26 |
WAV音频.py | 25 | 25 |
dataclasses.py | 25 | 25 |
random.py | 25 | 25 |
configparser.py | 24 | 24 |
logging/config.py | 24 | 24 |
shutil.py | 24 | 24 |
xml/etree/ElementTree.py | 24 | 24 |
_py_warnings.py | 23 | 23 |
importlib/_bootstrap.py | 23 | 23 |
importlib/_bootstrap_external.py | 23 | 23 |
zipimport.py | 23 | 23 |
urllib/request.py | 21 | 21 |
http/client.py | 20 | 20 |
logging/__init__.py | 20 | 20 |
socket.py | 20 | 20 |
doctest.py | 19 | 19 |
pathlib/__init__.py | 18 | 18 |
unittest/case.py | 18 | 18 |
zoneinfo/_zoneinfo.py | 18 | 18 |
gzip.py | 17 | 17 |
xmlrpc/client.py | 16 | 16 |
asyncio/tasks.py | 15 | 15 |
asyncio/unix_events.py | 15 | 15 |
base64.py | 15 | 15 |
turtle.py | 15 | 15 |
uuid.py | 15 | 15 |
_strptime.py | 14 | 14 |
annotationlib.py | 14 | 14 |
asyncio/streams.py | 14 | 14 |
concurrent/futures/process.py | 14 | 15 |
multiprocessing/managers.py | 14 | 14 |
(只列前 60 个文件;完整 291 个见 Lib/zh_errmessages_lib.py 的 对照 表,每条都带英文原文。)
二、模块自带的异常类名:184 个
显示成 模块.中文名(前缀留着 —— 中文名里有 13 组会撞车)。
tarfile(18 个)
| 显示名(英文) | 显示成 |
|---|---|
tarfile.AbsoluteLinkError | tarfile.绝对链接错误 |
tarfile.AbsolutePathError | tarfile.绝对路径错误 |
tarfile.CompressionError | tarfile.压缩错误 |
tarfile.EOFHeaderError | tarfile.文件结束头错误 |
tarfile.EmptyHeaderError | tarfile.空头错误 |
tarfile.ExtractError | tarfile.提取错误 |
tarfile.FilterError | tarfile.筛选错误 |
tarfile.HeaderError | tarfile.头错误 |
tarfile.InvalidHeaderError | tarfile.非法头错误 |
tarfile.LinkFallbackError | tarfile.链接回退错误 |
tarfile.LinkOutsideDestinationError | tarfile.链接指向目标之外错误 |
tarfile.OutsideDestinationError | tarfile.目标之外错误 |
tarfile.ReadError | tarfile.读错误 |
tarfile.SpecialFileError | tarfile.特殊文件错误 |
tarfile.StreamError | tarfile.流错误 |
tarfile.SubsequentHeaderError | tarfile.后续头错误 |
tarfile.TarError | tarfile.Tar错误 |
tarfile.TruncatedHeaderError | tarfile.被截断头错误 |
configparser(14 个)
| 显示名(英文) | 显示成 |
|---|---|
configparser.DuplicateOptionError | configparser.重复选项错误 |
configparser.DuplicateSectionError | configparser.重复节错误 |
configparser.Error | configparser.错误 |
configparser.InterpolationDepthError | configparser.插值深度错误 |
configparser.InterpolationError | configparser.插值错误 |
configparser.InterpolationMissingOptionError | configparser.插值缺少选项错误 |
configparser.InterpolationSyntaxError | configparser.插值语法错误 |
configparser.InvalidWriteError | configparser.非法写错误 |
configparser.MissingSectionHeaderError | configparser.缺少节头错误 |
configparser.MultilineContinuationError | configparser.多行续行错误 |
configparser.NoOptionError | configparser.没有选项错误 |
configparser.NoSectionError | configparser.没有节错误 |
configparser.ParsingError | configparser.解析错误 |
configparser.UnnamedSectionDisabledError | configparser.未命名节已停用错误 |
xml(9 个)
| 显示名(英文) | 显示成 |
|---|---|
xml.dom.DOMException | xml.dom.DOM异常 |
xml.etree.ElementInclude.FatalIncludeError | xml.etree.ElementInclude.致命包含错误 |
xml.etree.ElementInclude.LimitedRecursiveIncludeError | xml.etree.ElementInclude.受限递归包含错误 |
xml.etree.ElementTree.ParseError | xml.etree.ElementTree.解析错误 |
xml.parsers.expat.ExpatError | xml.parsers.expat.Expat错误 |
xml.sax._exceptions.SAXException | xml.sax._exceptions.SAX异常 |
xml.sax._exceptions.SAXNotRecognizedException | xml.sax._exceptions.SAX 无法识别异常 |
xml.sax._exceptions.SAXNotSupportedException | xml.sax._exceptions.SAX不支持异常 |
xml.sax._exceptions.SAXParseException | xml.sax._exceptions.SAX解析异常 |
email(8 个)
| 显示名(英文) | 显示成 |
|---|---|
email._header_value_parser._InvalidEwError | email._header_value_parser.非法编码字错误 |
email.errors.BoundaryError | email.errors.边界错误 |
email.errors.CharsetError | email.errors.字符集错误 |
email.errors.HeaderParseError | email.errors.头解析错误 |
email.errors.HeaderWriteError | email.errors.头写错误 |
email.errors.MessageError | email.errors.消息错误 |
email.errors.MessageParseError | email.errors.消息解析错误 |
email.errors.MultipartConversionError | email.errors.多部分转换错误 |
asyncio(7 个)
| 显示名(英文) | 显示成 |
|---|---|
asyncio.exceptions.BrokenBarrierError | asyncio.exceptions.屏障破裂错误 |
asyncio.exceptions.CancelledError | asyncio.exceptions.已取消错误 |
asyncio.exceptions.IncompleteReadError | asyncio.exceptions.不完整读错误 |
asyncio.exceptions.InvalidStateError | asyncio.exceptions.非法状态错误 |
asyncio.exceptions.LimitOverrunError | asyncio.exceptions.上限越界错误 |
asyncio.exceptions.SendfileNotAvailableError | asyncio.exceptions.发送文件不可用错误 |
asyncio.tools.CycleFoundException | asyncio.tools.发现成环异常 |
smtplib(7 个)
| 显示名(英文) | 显示成 |
|---|---|
smtplib.SMTPAuthenticationError | smtplib.SMTP认证错误 |
smtplib.SMTPConnectError | smtplib.SMTP连接错误 |
smtplib.SMTPDataError | smtplib.SMTP数据错误 |
smtplib.SMTPException | smtplib.SMTP异常 |
smtplib.SMTPHeloError | smtplib.SMTP问候错误 |
smtplib.SMTPNotSupportedError | smtplib.SMTP不支持错误 |
smtplib.SMTPResponseException | smtplib.SMTP响应异常 |
multiprocessing(6 个)
| 显示名(英文) | 显示成 |
|---|---|
multiprocessing.context.AuthenticationError | multiprocessing.context.认证错误 |
multiprocessing.context.ProcessError | multiprocessing.context.进程错误 |
multiprocessing.context.TimeoutError | multiprocessing.context.超时错误 |
multiprocessing.managers.RemoteError | multiprocessing.managers.远程错误 |
multiprocessing.pool.MaybeEncodingError | multiprocessing.pool.可能编码错误 |
multiprocessing.resource_tracker.ReentrantCallError | multiprocessing.resource_tracker.可重入调用错误 |
optparse(6 个)
| 显示名(英文) | 显示成 |
|---|---|
optparse.AmbiguousOptionError | optparse.有歧义选项错误 |
optparse.BadOptionError | optparse.坏选项错误 |
optparse.OptParseError | optparse.选项解析错误 |
optparse.OptionConflictError | optparse.选项冲突错误 |
optparse.OptionError | optparse.选项错误 |
optparse.OptionValueError | optparse.选项值错误 |
mailbox(5 个)
| 显示名(英文) | 显示成 |
|---|---|
mailbox.Error | mailbox.错误 |
mailbox.ExternalClashError | mailbox.外部冲突错误 |
mailbox.FormatError | mailbox.格式错误 |
mailbox.NoSuchMailboxError | mailbox.没有这个信箱错误 |
mailbox.NotEmptyError | mailbox.非空错误 |
shutil(5 个)
| 显示名(英文) | 显示成 |
|---|---|
shutil.Error | shutil.错误 |
shutil.ReadError | shutil.读错误 |
shutil.RegistryError | shutil.注册错误 |
shutil.SameFileError | shutil.同一个文件错误 |
shutil.SpecialFileError | shutil.特殊文件错误 |
_pickle(3 个)
| 显示名(英文) | 显示成 |
|---|---|
_pickle.PickleError | _pickle.序列化错误 |
_pickle.PicklingError | _pickle.序列化错误 |
_pickle.UnpicklingError | _pickle.反序列化错误 |
_pyrepl(3 个)
| 显示名(英文) | 显示成 |
|---|---|
_pyrepl._module_completer.ParseError | _pyrepl._module_completer.解析错误 |
_pyrepl.keymap.KeySpecError | _pyrepl.keymap.键规格错误 |
_pyrepl.windows_console.WinError | _pyrepl.windows_console.Windows错误 |
concurrent(3 个)
| 显示名(英文) | 显示成 |
|---|---|
concurrent.futures._base.CancelledError | concurrent.futures._base.已取消错误 |
concurrent.futures._base.Error | concurrent.futures._base.错误 |
concurrent.futures._base.InvalidStateError | concurrent.futures._base.非法状态错误 |
http(3 个)
| 显示名(英文) | 显示成 |
|---|---|
http.client.HTTPException | http.client.HTTP异常 |
http.cookiejar.LoadError | http.cookiejar.加载错误 |
http.cookies.CookieError | http.cookies.Cookie错误 |
importlib(3 个)
| 显示名(英文) | 显示成 |
|---|---|
importlib._bootstrap._DeadlockError | importlib._bootstrap.死锁错误 |
importlib.metadata.PackageNotFoundError | importlib.metadata.包未找到错误 |
importlib.resources.abc.TraversalError | importlib.resources.abc.遍历错误 |
pickle(3 个)
| 显示名(英文) | 显示成 |
|---|---|
pickle.PickleError | pickle.序列化错误 |
pickle.PicklingError | pickle.序列化错误 |
pickle.UnpicklingError | pickle.反序列化错误 |
socket(3 个)
| 显示名(英文) | 显示成 |
|---|---|
socket._GiveupOnSendfile | socket.放弃发送文件 |
socket.gaierror | socket.地址信息错误 |
socket.herror | socket.主机信息错误 |
urllib(3 个)
| 显示名(英文) | 显示成 |
|---|---|
urllib.error.ContentTooShortError | urllib.error.内容太短错误 |
urllib.error.HTTPError | urllib.error.HTTP错误 |
urllib.error.URLError | urllib.error.URL错误 |
xmlrpc(3 个)
| 显示名(英文) | 显示成 |
|---|---|
xmlrpc.client.Error | xmlrpc.client.错误 |
xmlrpc.client.ProtocolError | xmlrpc.client.协议错误 |
xmlrpc.client.ResponseError | xmlrpc.client.响应错误 |
腌制(3 个)
| 显示名(英文) | 显示成 |
|---|---|
腌制.PickleError | 腌制.序列化错误 |
腌制.PicklingError | 腌制.序列化错误 |
腌制.UnpicklingError | 腌制.反序列化错误 |
argparse(2 个)
| 显示名(英文) | 显示成 |
|---|---|
argparse.ArgumentError | argparse.参数错误 |
argparse.ArgumentTypeError | argparse.参数类型错误 |
binascii(2 个)
| 显示名(英文) | 显示成 |
|---|---|
binascii.Error | binascii.错误 |
binascii.Incomplete | binascii.不完整 |
calendar(2 个)
| 显示名(英文) | 显示成 |
|---|---|
calendar.IllegalMonthError | calendar.非法月错误 |
calendar.IllegalWeekdayError | calendar.非法星期错误 |
ipaddress(2 个)
| 显示名(英文) | 显示成 |
|---|---|
ipaddress.AddressValueError | ipaddress.地址值错误 |
ipaddress.NetmaskValueError | ipaddress.网络掩码值错误 |
subprocess(2 个)
| 显示名(英文) | 显示成 |
|---|---|
subprocess.CalledProcessError | subprocess.被调用进程错误 |
subprocess.SubprocessError | subprocess.子进程错误 |
zoneinfo(2 个)
| 显示名(英文) | 显示成 |
|---|---|
zoneinfo._common.ZoneInfoNotFoundError | zoneinfo._common.时区未找到错误 |
zoneinfo._tzpath.InvalidTZPathWarning | zoneinfo._tzpath.非法时区路径警告 |
FTP传输(1 个)
| 显示名(英文) | 显示成 |
|---|---|
FTP传输.Error | FTP传输.错误 |
XML工具(1 个)
| 显示名(英文) | 显示成 |
|---|---|
XML工具.dom.DOMException | XML工具.dom.DOM异常 |
_csv(1 个)
| 显示名(英文) | 显示成 |
|---|---|
_csv.Error | _csv.错误 |
_curses(1 个)
| 显示名(英文) | 显示成 |
|---|---|
_curses.error | _curses.错误 |
_curses_panel(1 个)
| 显示名(英文) | 显示成 |
|---|---|
_curses_panel.error | _curses_panel.错误 |
_dbm(1 个)
| 显示名(英文) | 显示成 |
|---|---|
_dbm.error | _dbm.错误 |
_gdbm(1 个)
| 显示名(英文) | 显示成 |
|---|---|
_gdbm.error | _gdbm.错误 |
_hashlib(1 个)
| 显示名(英文) | 显示成 |
|---|---|
_hashlib.UnsupportedDigestmodError | _hashlib.不支持摘要算法错误 |
_lzma(1 个)
| 显示名(英文) | 显示成 |
|---|---|
_lzma.LZMAError | _lzma.LZMA错误 |
_py_warnings(1 个)
| 显示名(英文) | 显示成 |
|---|---|
_py_warnings._OptionError | _py_warnings.选项错误 |
_pydecimal(1 个)
| 显示名(英文) | 显示成 |
|---|---|
_pydecimal.DecimalException | _pydecimal.十进制异常 |
_queue(1 个)
| 显示名(英文) | 显示成 |
|---|---|
_queue.Empty | _queue.空 |
_tkinter(1 个)
| 显示名(英文) | 显示成 |
|---|---|
_tkinter.TclError | _tkinter.Tcl错误 |
compression(1 个)
| 显示名(英文) | 显示成 |
|---|---|
compression.zstd.ZstdError | compression.zstd.Zstd错误 |
copy(1 个)
| 显示名(英文) | 显示成 |
|---|---|
copy.Error | copy.错误 |
ctypes(1 个)
| 显示名(英文) | 显示成 |
|---|---|
ctypes.ArgumentError | ctypes.参数错误 |
dataclasses(1 个)
| 显示名(英文) | 显示成 |
|---|---|
dataclasses.FrozenInstanceError | dataclasses.冻结实例错误 |
decimal(1 个)
| 显示名(英文) | 显示成 |
|---|---|
decimal.DecimalException | decimal.十进制异常 |
doctest(1 个)
| 显示名(英文) | 显示成 |
|---|---|
doctest.UnexpectedException | doctest.意料之外异常 |
encodings(1 个)
| 显示名(英文) | 显示成 |
|---|---|
encodings.CodecRegistryError | encodings.编解码器注册错误 |
ftplib(1 个)
| 显示名(英文) | 显示成 |
|---|---|
ftplib.Error | ftplib.错误 |
getopt(1 个)
| 显示名(英文) | 显示成 |
|---|---|
getopt.GetoptError | getopt.选项解析错误 |
getpass(1 个)
| 显示名(英文) | 显示成 |
|---|---|
getpass.GetPassWarning | getpass.口令警告 |
graphlib(1 个)
| 显示名(英文) | 显示成 |
|---|---|
graphlib.CycleError | graphlib.成环错误 |
idlelib(1 个)
| 显示名(英文) | 显示成 |
|---|---|
idlelib.zoomheight.WmInfoGatheringError | idlelib.zoomheight.窗口管理信息收集错误 |
inspect(1 个)
| 显示名(英文) | 显示成 |
|---|---|
inspect.ClassFoundException | inspect.发现类型异常 |
json(1 个)
| 显示名(英文) | 显示成 |
|---|---|
json.decoder.JSONDecodeError | json.decoder.JSON解码错误 |
locale(1 个)
| 显示名(英文) | 显示成 |
|---|---|
locale.Error | locale.错误 |
netrc(1 个)
| 显示名(英文) | 显示成 |
|---|---|
netrc.NetrcParseError | netrc.netrc解析错误 |
plistlib(1 个)
| 显示名(英文) | 显示成 |
|---|---|
plistlib.InvalidFileException | plistlib.非法文件异常 |
py_compile(1 个)
| 显示名(英文) | 显示成 |
|---|---|
py_compile.PyCompileError | py_compile.Py编译错误 |
re(1 个)
| 显示名(英文) | 显示成 |
|---|---|
re.PatternError | re.模式错误 |
runpy(1 个)
| 显示名(英文) | 显示成 |
|---|---|
runpy._Error | runpy.错误 |
signal(1 个)
| 显示名(英文) | 显示成 |
|---|---|
signal.ItimerError | signal.间隔计时器错误 |
statistics(1 个)
| 显示名(英文) | 显示成 |
|---|---|
statistics.StatisticsError | statistics.统计错误 |
struct(1 个)
| 显示名(英文) | 显示成 |
|---|---|
struct.error | struct.错误 |
termios(1 个)
| 显示名(英文) | 显示成 |
|---|---|
termios.error | termios.错误 |
threading(1 个)
| 显示名(英文) | 显示成 |
|---|---|
threading.BrokenBarrierError | threading.屏障破裂错误 |
tokenize(1 个)
| 显示名(英文) | 显示成 |
|---|---|
tokenize.TokenError | tokenize.记号错误 |
tomllib(1 个)
| 显示名(英文) | 显示成 |
|---|---|
tomllib._parser.TOMLDecodeError | tomllib._parser.TOML解码错误 |
traceback(1 个)
| 显示名(英文) | 显示成 |
|---|---|
traceback.TracebackException | traceback.回溯异常 |
turtle(1 个)
| 显示名(英文) | 显示成 |
|---|---|
turtle.TurtleGraphicsError | turtle.Turtle图形错误 |
unittest(1 个)
| 显示名(英文) | 显示成 |
|---|---|
unittest.mock.InvalidSpecError | unittest.mock.非法规格错误 |
wave(1 个)
| 显示名(英文) | 显示成 |
|---|---|
wave.Error | wave.错误 |
webbrowser(1 个)
| 显示名(英文) | 显示成 |
|---|---|
webbrowser.Error | webbrowser.错误 |
wsgiref(1 个)
| 显示名(英文) | 显示成 |
|---|---|
wsgiref.validate.WSGIWarning | wsgiref.validate.WSGI警告 |
xx(1 个)
| 显示名(英文) | 显示成 |
|---|---|
xx.error | xx.错误 |
xxlimited(1 个)
| 显示名(英文) | 显示成 |
|---|---|
xxlimited.Error | xxlimited.错误 |
xxlimited_35(1 个)
| 显示名(英文) | 显示成 |
|---|---|
xxlimited_35.error | xxlimited_35.错误 |
zipapp(1 个)
| 显示名(英文) | 显示成 |
|---|---|
zipapp.ZipAppError | zipapp.Zip应用错误 |
zipimport(1 个)
| 显示名(英文) | 显示成 |
|---|---|
zipimport.ZipImportError | zipimport.Zip导入错误 |
zlib(1 个)
| 显示名(英文) | 显示成 |
|---|---|
zlib.error | zlib.错误 |
单元测试(1 个)
| 显示名(英文) | 显示成 |
|---|---|
单元测试.mock.InvalidSpecError | 单元测试.mock.非法规格错误 |
多进程(1 个)
| 显示名(英文) | 显示成 |
|---|---|
多进程.context.TimeoutError | 多进程.context.超时错误 |
海龟绘图(1 个)
| 显示名(英文) | 显示成 |
|---|---|
海龟绘图.TurtleGraphicsError | 海龟绘图.Turtle图形错误 |
电子邮件(1 个)
| 显示名(英文) | 显示成 |
|---|---|
电子邮件._邮件头值解析._InvalidEwError | 电子邮件._邮件头值解析.非法编码字错误 |
运行库(1 个)
| 显示名(英文) | 显示成 |
|---|---|
运行库._Error | 运行库.错误 |
三、怎么自己查
python
# 1. 某个异常显示成什么(只看显示层,对象本身没变)
import traceback, re
try: re.compile('(?P<1>a)')
except Exception as e:
print(traceback.format_exception_only(type(e), e)[-1].strip())
print(type(e).__name__, type(e).__module__) # 还是英文
# 2. 三张对照表就在 Lib/ 里,都是普通的 Python 字典/列表
import zh_errmessages as 手写 # 手写:异常名 + 高频正文 + 框架行
import zh_errmessages_gen as C层 # 解释器 C 层长尾
import zh_errmessages_lib as 库层 # 标准库自己 raise 的
import zh_excnames as 模块异常名