feat: highlight fav words && split long paragraph

This commit is contained in:
Gabe
2025-10-19 00:19:47 +08:00
parent b6ff4aae6a
commit 2325155b1e
7 changed files with 402 additions and 7 deletions

View File

@@ -719,6 +719,11 @@ export const I18N = {
en: `Terms Style`,
zh_TW: `專業術語樣式`,
},
highlight_style: {
zh: `词汇高亮样式`,
en: `Fav Words highlight style`,
zh_TW: `詞彙高亮樣式`,
},
selector_style_helper: {
zh: `开启翻译时注入。`,
en: `It is injected when translation is turned on.`,
@@ -1669,6 +1674,52 @@ export const I18N = {
en: `Click to view [Custom Interface Example]`,
zh_TW: `點選查看【自訂介面範例】`,
},
split_paragraph: {
zh: `切分长段落`,
en: `Split long paragraph`,
zh_TW: `切分長段落`,
},
split_length: {
zh: `切分长度 (0-10000)`,
en: `Segmentation length(0-10000)`,
zh_TW: `切分長度(0-10000)`,
},
highlight_words: {
zh: `高亮收藏词汇`,
en: `Highlight favorite words`,
zh_TW: `高亮收藏詞彙`,
},
split_disable: {
zh: `禁用`,
en: `Disable`,
zh_TW: `停用`,
},
split_textlength: {
zh: `按照长度切分`,
en: `Split by length`,
zh_TW: `依長度切分`,
},
split_punctuation: {
zh: `按照句子切分`,
en: `Split by sentence`,
zh_TW: `按照句子切分`,
},
highlight_disable: {
zh: `禁用`,
en: `Disable`,
zh_TW: `停用`,
},
highlight_beforetrans: {
zh: `翻译前高亮`,
en: `Highlight before translation`,
zh_TW: `翻譯前高亮`,
},
highlight_aftertrans: {
zh: `翻译后高亮`,
en: `Highlight after translation`,
zh_TW: `翻譯後高亮`,
},
};
export const i18n = (lang) => (key) => I18N[key]?.[lang] || "";

View File

@@ -63,6 +63,24 @@ export const OPT_TIMING_ALL = [
OPT_TIMING_ALT,
];
export const OPT_SPLIT_PARAGRAPH_DISABLE = "split_disable";
export const OPT_SPLIT_PARAGRAPH_TEXTLENGTH = "split_textlength";
export const OPT_SPLIT_PARAGRAPH_PUNCTUATION = "split_punctuation";
export const OPT_SPLIT_PARAGRAPH_ALL = [
OPT_SPLIT_PARAGRAPH_DISABLE,
OPT_SPLIT_PARAGRAPH_PUNCTUATION,
OPT_SPLIT_PARAGRAPH_TEXTLENGTH,
];
export const OPT_HIGHLIGHT_WORDS_DISABLE = "highlight_disable";
export const OPT_HIGHLIGHT_WORDS_BEFORETRANS = "highlight_beforetrans";
export const OPT_HIGHLIGHT_WORDS_AFTERTRANS = "highlight_aftertrans";
export const OPT_HIGHLIGHT_WORDS_ALL = [
OPT_HIGHLIGHT_WORDS_DISABLE,
OPT_HIGHLIGHT_WORDS_BEFORETRANS,
OPT_HIGHLIGHT_WORDS_AFTERTRANS,
];
export const DEFAULT_DIY_STYLE = `color: #333;
background: linear-gradient(
45deg,
@@ -94,6 +112,7 @@ export const DEFAULT_RULE = {
bgColor: "", // 译文颜色
textDiyStyle: "", // 自定义译文样式
termsStyle: "", // 专业术语样式
highlightStyle: "", // 高亮词汇样式
selectStyle: "", // 选择器节点样式
parentStyle: "", // 选择器父节点样式
grandStyle: "", // 选择器父节点样式
@@ -116,6 +135,9 @@ export const DEFAULT_RULE = {
hasShadowroot: GLOBAL_KEY, // 是否包含shadowroot
rootsSelector: "", // 翻译范围选择器
ignoreSelector: "", // 不翻译的选择器
splitParagraph: GLOBAL_KEY, // 切分段落
splitLength: 0, // 切分段落长度
highlightWords: GLOBAL_KEY, // 高亮词汇
};
// 全局规则
@@ -133,6 +155,7 @@ export const GLOBLA_RULE = {
bgColor: "", // 译文颜色
textDiyStyle: DEFAULT_DIY_STYLE, // 自定义译文样式
termsStyle: "font-weight: bold;", // 专业术语样式
highlightStyle: "color: red;", // 高亮词汇样式
selectStyle: DEFAULT_SELECT_STYLE, // 选择器节点样式
parentStyle: DEFAULT_SELECT_STYLE, // 选择器父节点样式
grandStyle: DEFAULT_SELECT_STYLE, // 选择器祖节点样式
@@ -155,6 +178,9 @@ export const GLOBLA_RULE = {
hasShadowroot: "false", // 是否包含shadowroot
rootsSelector: "body", // 翻译范围选择器
ignoreSelector: DEFAULT_IGNORE_SELECTOR, // 不翻译的选择器
splitParagraph: OPT_SPLIT_PARAGRAPH_DISABLE, // 切分段落
splitLength: 100, // 切分段落长度
highlightWords: OPT_HIGHLIGHT_WORDS_DISABLE, // 高亮词汇
};
export const DEFAULT_RULES = [GLOBLA_RULE];