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方法只能在 element.' + NO_SUCH_KEY_ = 'There is no button: {}' + NO_NEW_TAB = 'Failed to wait for new tab.' + NO_SUCH_TAB = 'The specified tab was not found.' + NEED_DOMAIN = 'You need to set a domain or url value. If the url value is set, it must start with http.' + NEED_DOMAIN2 = 'The cookie must have a "domain" or "url" field.' + NEED_ARG_ = '{} must be set.' + SAVE_PATH_MUST_BE_FOLDER = 'save_path must be a folder.' + GET_PDF_FAILED = 'The save fails because the browser version may not support it.' + GET_BLOB_FAILED = 'The resource cannot be retrieved.' + NO_SRC_ATTR = 'The element does not have a src value or the value is empty.' + D_MODE_ONLY = 'The url, domain, and path parameters are valid only in d mode.' + S_MODE_ONLY = 'The following parameters take effect only in s mode:' + STATUS_CODE_ = 'Status Code: {}' + TAB_OBJ_EXISTS = ('There is already a non-mixtab version of this tab. If multiple objects are common, ' + 'use Settings.set_singleton_tab_obj(False).') + ONLY_ENGLISH = 'Only English path and file name are supported when converting to video.' + SELECT_ONLY = 'The select method can only be used on