* 检查文本内容是否属于不应翻译的特殊内容 * 比如:URLs、邮箱地址、用户名、代码片段等
(text: string)
| 116 | * 比如:URLs、邮箱地址、用户名、代码片段等 |
| 117 | */ |
| 118 | function isSpecialContent(text: string): boolean { |
| 119 | if (!text) return false; |
| 120 | |
| 121 | const trimmedText = text.trim(); |
| 122 | |
| 123 | // 检查是否为URL |
| 124 | if (/^https?:\/\/\S+/i.test(trimmedText)) return true; |
| 125 | |
| 126 | // 检查是否为邮箱地址 |
| 127 | if (/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/.test(trimmedText)) return true; |
| 128 | |
| 129 | // 检查是否为社交媒体用户名格式 |
| 130 | if (/^@\w+$/.test(trimmedText)) return true; // Twitter格式:@username |
| 131 | if (/^u\/\w+$/.test(trimmedText)) return true; // Reddit格式:u/username |
| 132 | |
| 133 | // 检查是否为x.com或twitter.com的ID格式 |
| 134 | if (/^id@https?:\/\/(x\.com|twitter\.com)\/[\w-]+\/status\/\d+/.test(trimmedText)) return true; |
| 135 | |
| 136 | // 检查是否为GitHub相关特殊内容 |
| 137 | // GitHub Issue或PR编号 |
| 138 | if (/^#\d+$/.test(trimmedText)) return true; |
| 139 | // GitHub仓库引用 user/repo#123 |
| 140 | if (/^[A-Za-z0-9_-]+\/[A-Za-z0-9_-]+#\d+$/.test(trimmedText)) return true; |
| 141 | // GitHub 文件路径 |
| 142 | if (/^[a-zA-Z0-9_.-]+\/[a-zA-Z0-9_.-]+\/(blob|tree)\/[a-zA-Z0-9_.-]+\/[a-zA-Z0-9_.-\/]+$/.test(trimmedText)) return true; |
| 143 | // GitHub提交哈希 |
| 144 | if (/^[a-f0-9]{7,40}$/.test(trimmedText)) return true; |
| 145 | // 以.开头的文件名 |
| 146 | if (/^\.[a-zA-Z0-9_.-]+$/.test(trimmedText)) return true; |
| 147 | // 以通过文件后缀结尾的 |
| 148 | if (/^[a-zA-Z0-9_.-]+\.[a-zA-Z0-9_.-]+$/.test(trimmedText)) return true; |
| 149 | |
| 150 | // 检查是否为代码片段(简单判断,可能会有误判) |
| 151 | if (/^[a-zA-Z0-9_]+\([^)]*\)/.test(trimmedText)) return true; // 函数调用 |
| 152 | if (/^import\s+|^from\s+|^require\(/.test(trimmedText)) return true; // 导入语句 |
| 153 | if (/^const\s+|^let\s+|^var\s+|^function\s+/.test(trimmedText)) return true; // 变量/函数声明 |
| 154 | |
| 155 | // 检查是否为哈希值或其他特殊标识符 |
| 156 | if (/^[a-f0-9]{8,}$/i.test(trimmedText)) return true; |
| 157 | |
| 158 | return false; |
| 159 | } |
| 160 | |
| 161 | // 文本替换环节的兼容函数,主域名 : 兼容函数 |
| 162 | export const replaceCompatFn: ReplaceCompatFn = { |
no outgoing calls
no test coverage detected