diff --git a/DrissionPage/_functions/texts.py b/DrissionPage/_functions/texts.py
new file mode 100644
index 0000000..eb2d603
--- /dev/null
+++ b/DrissionPage/_functions/texts.py
@@ -0,0 +1,393 @@
+# -*- coding:utf-8 -*-
+"""
+@Author : g1879
+@Contact : g1879@qq.com
+@Website : https://DrissionPage.cn
+@Copyright: (c) 2020 by g1879, Inc. All Rights Reserved.
+"""
+from locale import getlocale
+
+from ..version import __version__
+
+
+def get_txt_class(lang=None):
+ languages = {
+ 'zh_cn': Texts,
+ 'cn': Texts,
+ 'en': English,
+ }
+ if lang is None:
+ locale = str(getlocale()[0]).lower()
+ if locale.startswith('zh') or 'chinese' in locale:
+ lang = 'zh_cn'
+ elif locale.startswith('en') or 'english' in locale:
+ lang = 'en'
+ else:
+ lang = 'zh_cn'
+ else:
+ lang = lang.lower()
+ lang = languages.get(lang, None)
+ if lang is None:
+ raise ValueError(f'lang must be one of {languages.keys()}')
+ return lang
+
+
+class Texts(object):
+ # --------- 参数名 ---------
+ VERSION = '版本'
+ INFO = '详情'
+ METHOD = '方法'
+ ARGS = '参数'
+ ARG = '参数'
+ BROWSER_VER = '浏览器版本'
+ PATH = '路径'
+ VALUE = '值'
+ ALLOW_VAL = '允许值'
+ CURR_VAL = '当前值'
+ ALLOW_TYPE = '允许类型'
+ CURR_TYPE = '当前类型'
+ TIP = '提示'
+ ADDRESS = '地址'
+ LOCATOR = '定位符'
+ ALL_TABS = '所有标签页'
+
+ # --------- 异常默认文本 ---------
+ ELEMENTNOTFOUNDERROR = '没有找到元素。'
+ ALERTEXISTSERROR = '存在未处理的提示框。'
+ CONTEXTLOSTERROR = '页面被刷新,请操作前尝试等待页面刷新或加载完成。'
+ ELEMENTLOSTERROR = '元素对象已失效。可能是页面整体刷新,或js局部刷新把元素替换或去除了。'
+ CDPERROR = '方法调用错误。'
+ PAGEDISCONNECTEDERROR = '与页面的连接已断开。'
+ JAVASCRIPTERROR = 'JavaScript运行错误。'
+ NORECTERROR = '该元素没有位置及大小。'
+ BROWSERCONNECTERROR = '浏览器连接失败。'
+ NORESOURCEERROR = '该元素无可保存的内容或保存失败。'
+ CANNOTCLICKERROR = '该元素无法滚动到视口或被遮挡,无法点击。'
+ GETDOCUMENTERROR = '获取文档失败。'
+ WAITTIMEOUTERROR = '等待失败。'
+ INCORRECTURLERROR = '无效的url。'
+ LOCATORERROR = '定位符格式不正确。',
+ STORAGEERROR = '无法操作当前存储数据。'
+ COOKIEFORMATERROR = 'cookie格式不正确。'
+ TARGETNOTFOUNDERROR = '找不到指定页面。'
+
+ # --------- 异常信息 ---------
+ NO_AVAILABLE_PORT_FOUND = '未找到可用端口。'
+ WIN_SYS_ONLY = '该方法只能在Windows系统使用。'
+ NEED_LIB_ = '请先安装{}。'
+ INVALID_URL = '无效的url,也许要加上"http://"?'
+ INVALID_HEADER_NAME = '无效的header项名。'
+ NOT_A_FUNCTION = '传入的js无法解析成函数。'
+ METHOD_NOT_FOUND = '没有找到对应功能,方法错误或你的浏览器太旧。'
+ NO_RESPONSE = '超时,可能是浏览器卡了。'
+ UNKNOWN_ERR = '出现未知错误。'
+ FEEDBACK = ('出现这个错误可能意味着程序有bug,请把错误信息和重现方法告知作者,谢谢。\n'
+ '报告网站: https://gitee.com/g1879/DrissionPage/issues')
+ INI_NOT_FOUND = 'ini文件不存在。'
+ EXT_NOT_FOUND = '插件路径不存在。'
+ WAITING_FAILED_ = '等待{}失败(等待{}秒)。'
+ GET_OBJ_FAILED = '获取对象失败。'
+ INCORRECT_VAL_ = '{}参数值错误。'
+ INCORRECT_TYPE_ = '{}参数类型错误。'
+ CONNECT_ERR = '连接异常。'
+ BROWSER_CONNECT_ERR1_ = '浏览器连接失败,请检查{}端口是否浏览器,且已添加"--remote-debugging-port={}"启动项。'
+ BROWSER_CONNECT_ERR2 = '浏览器连接失败,请确认浏览器已启动。'
+ BROWSER_EXE_NOT_FOUND = '无法找到浏览器可执行文件路径,请手动配置。'
+ BROWSER_NOT_FOUND = '未找到浏览器。'
+ BROWSER_NOT_EXIST = '浏览器未开启或已关闭。'
+ BROWSER_DISCONNECTED = '浏览器已关闭或链接已断开。'
+ BROWSER_NOT_FOR_CONTROL = '浏览器版本太旧或此浏览器不支持接管。'
+ UNSUPPORTED_CSS_SYNTAX = '此css selector语法不受支持,请换成xpath。'
+ UNSUPPORTED_ARG_TYPE_ = '不支持参数{}的类型: {}。'
+ UPGRADE_WS = '请升级websocket-client库。'
+ INI_NOT_SET = 'ini_path未设置。'
+ INVALID_XPATH_ = '无效的xpath语句: {}'
+ INVALID_CSS_ = '无效的css selector语句: {}'
+ INDEX_FORMAT = '序号必须是数字或切片。'
+ LOC_NOT_FOR_FRAME = '该定位符不是指向frame元素。'
+ NEED_DOWNLOAD_PATH = '此功能需显式设置下载路径。'
+ GET_WINDOW_SIZE_FAILED = '获取窗口信息失败。'
+ SET_FAILED_ = '{}设置失败。'
+ NOT_LISTENING = '监听未启动或已停止。'
+ NOT_BLOB = '该链接非blob类型。'
+ CANNOT_INPUT_FILE = '该输入框无法接管,请改用对元素输入路径的方法设置。'
+ NO_SUCH_KEY_ = '没有这个按键: {}'
+ NO_NEW_TAB = '没有等到新标签页。'
+ NO_SUCH_TAB = '没有找到指定标签页。'
+ NEED_DOMAIN = '需设置domain或url值。如设置url值,需以http开头。'
+ NEED_DOMAIN2 = 'cookie必须带有"domain"或"url"字段。'
+ NEED_ARG_ = '{}必须设置。'
+ SAVE_PATH_MUST_BE_FOLDER = 'save_path必须为文件夹。'
+ GET_PDF_FAILED = '保存失败,可能浏览器版本不支持。'
+ GET_BLOB_FAILED = '无法获取该资源。'
+ NO_SRC_ATTR = '元素没有src值或该值为空。'
+ D_MODE_ONLY = 'url、domain、path参数只有d模式下有效。'
+ S_MODE_ONLY = '以下参数在s模式下才会生效:'
+ STATUS_CODE_ = '状态码: {}'
+ TAB_OBJ_EXISTS = '该标签页已有非MixTab版本,如需多对象共用标签页请设置Settings.set_singleton_tab_obj(False)。'
+ ONLY_ENGLISH = '转换成视频仅支持英文路径和文件名。'
+ SELECT_ONLY = 'select方法只能在