Erweiterte Anpassungsoptionen
Sie können weitere benutzerdefinierte Konfigurationen auf der Seite Erweiterte Konfiguration -> Entwicklereinstellungen -> Benutzerkonfiguration bearbeiten, die für fortgeschrittene Benutzer nicht in der Benutzeroberfläche bearbeitbar sind. Weitere Details zu den Parametern finden Sie in der letzten Anmerkung. Die aktuelle eingebaute config
finden Sie hier.
Benutzerregeln
Mit Rules
ist es möglich, die Konfiguration einer bestimmten Website anzupassen, zu entscheiden, welche Inhalte übersetzt werden müssen oder nicht, oder den Stil von Seiten anzupassen usw.
[
{
"matches": "www.google.com",
"selectors": [".title"]
},
{
"matches": "*.twitter.com",
"selectors": [".text"],
"excludeSelectors": ["nav", " footer"]
}
]
Verwenden Sie matches
, um die entsprechende Website zuzuordnen. Platzhalter sind erlaubt, z.B. *.google.com
, www.google.com/test/*
, file://*
.
Mit selectors
wird der intelligente Übersetzungsbereich überschrieben, wobei nur die Elemente übersetzt werden, die mit diesem Selektor übereinstimmen.
Verwenden Sie excludeSelectors
, um Elemente ohne Übersetzung der Position auszuschließen.
Verwenden Sie die additional
-Familie von Selektoren, um den Übersetzungsbereich basierend auf intelligenter Übersetzung zu erhöhen oder zu verringern.
[
{
"matches": "www.google.com",
"additionalSelectors": [],
"additionalExcludeSelectors": []
}
]
Wenn Sie einen Bereich als Ganzes übersetzen möchten, ohne die Elemente zu trennen, können Sie den atomicBlockSelectors
-Selektor verwenden. Zum Beispiel Instagram-Profile. Beachten Sie, dass die Verwendung von atomicBlockSelectors
erfordert, dass Sie mit selectors
auswählen, bevor Sie atomicBlockSelectors
verwenden.
{
"matches": "https://www.instagram.com/*",
"selectors": [
"div._aa_c h1",
"li._acaz div[role=\"menuitem\"]"
]
"atomicBlockSelectors": [
"div. ._aa_c h1",
"li._acaz div[role=\"menuitem\"]"
]
}
Wenn die Übersetzung zu nicht ausgerichteten Seiten, überlappendem Text und anderen Randfällen führt, können Sie globalStyles
verwenden, um den Seitenstil anzupassen und dies zu beheben. Zum Beispiel der YouTube-Header, der verwendet wird, um die maximale Höhe der Originalseite zu entfernen.
{
"matches": "www.google.com",
"globalStyles": { ".title": "max-height:unset;" }
}
Verbesserungen der Konsolidierung von Benutzerregeln
Unterstützung ab Version 0.7.4. Nehmen Sie das Überspringen der Nicht-Übersetzungszone als Beispiel
{
"matches": "https://www.elektrotechnik.rwth-aachen.de/*",
"additionalExcludeSelectors.remove": [".notranslate", "[translate=no]"]
}
Die Hinzufügungs- und Entfernungsoperationen ändern die standardmäßig bereitgestellten Regeln und müssen nicht mehr vollständig ersetzt werden, wie es zuvor der Fall war.
Eingebettetes CSS
Eingebettetes CSS ermöglicht es Ihnen, benutzerdefinierte Webstile global einzubetten. Kann mit translationClasses
von Rules
verwendet werden.
".immersive-translate-target-wrapper img { width: 16px; height: 16px }"
Es ist auch möglich, die Seite auf eine persönlichere Weise zu gestalten, ähnlich wie ein regulärer Webstil-Manager. (sogar mit display:none
, um Werbung zu entfernen)
.title {
color: red;
}
Benutzerkonfiguration
Die Konfiguration ermöglicht es Ihnen, die Konfiguration dieses Plugins anzupassen, wie z.B. Übersetzungsdienste, sprachspezifische Übersetzungsoptionen usw.
{
"translationService": "tencent",
"translationServices": {
"tencent": {
"secretId": "xxx",
"secretKey": "xxx",
"matches": ["*.twitter.com"]
}
} ,
"translationUrlPattern": {
"excludeMatches": ["www.google.com"]
},
"translationLanguagePattern": {
"matches": ["en"]
},
"translationTheme". "none",
"translationThemePatterns": {
"underline": {
"matches": ["discord.com"]
}
},
"generalRule": {
"_comment": "",
"normalizeBody": "",
" injectedCss": [],
"additionalInjectedCss": [],
"wrapperPrefix": "smart",
"wrapperSuffix": "smart",
"isPdf": false,
"isTransformPreTagNewLine ": false,
"urlChangeDelay": 20,
"isShowUserscriptPagePopup": true,
"observeUrlChange": true,
"paragraphMinTextCount": 8,
" paragraphMinWordCount": 2,
"blockMinTextCount": 32,
"blockMinWordCount": 5,
"containerMinTextCount": 18,
"lineBreakMaxTextCount": 0,
" globalAttributes": {},
"globalStyles": {},
"selectors": [],
"preWhitespaceDetectedTags": ["DIV", "SPAN"],
"stayOriginalSelectors": [],
" additionalSelectors": [],
"atomicBlockTags": [],
"excludeSelectors": [],
"additionalExcludeSelectors": [],
"translationClasses": [],
" atomicBlockSelectors": [],
"excludeTags": [],
"metaTags": ["META", "SCRIPT", "STYLE", "NOSCRIPT"],
"additionalExcludeTags": [],
" stayOriginalTags": ["CODE", "TT", "IMG", "SUP"],
"additionalStayOriginalTags": [],
"inlineTags": [],
"additionalInlineTags": [],
" extraInlineSelectors": [],
"additionalInlineSelectors": [],
"extraBlockSelectors": [],
"allBlockTags": [],
"pdfNewParagraphLineHeight": 2.4 ,
"pdfNewParagraphIndent": 1.2,
"pdfNewParagraphIndentRightIndentPx": 130,
"fingerCountToToggleTranslagePageWhenTouching": 4
},
"rules": [
{
"matches": "www.google.com",
"selectors": [".class"]
}
]
}
Die Regel-Felder in rules
können alle Felder in generalRule
verwenden. Die rules
haben die höchste Priorität und kombinieren die generalRule
und die Regeln für diese rule
, wenn eine bestimmte rule
für eine bestimmte Seite übereinstimmt.
Einführung einiger der häufigen Felder in der Konfiguration.
Nicht konfigurierte Übersetzungsdienste im Popup-Panel nicht anzeigen
"showUnconfiguredTranslationServiceInPopup": false
Konfiguration der Übersetzungsdienste
Verwenden Sie translationService
, um die Standard-Übersetzungsmaschine auszuwählen, die derzeit unterstützt wird:
| "tencent"
| "google"
| "deepl"
| "baidu"
| "volc"
| "youdao"
| "caiyun"
| "openl"
| "bing"
| "transmart"
Verwenden Sie translationServices
, um den apikey
jedes Übersetzungsdienstes zu konfigurieren. Verschiedene Dienstanbieter benötigen unterschiedliche Parameter, und ihre API-Schlüssel können im Entwicklerzentrum ihrer jeweiligen Websites angefordert werden.
Zum Beispiel müssen Sie für den Tencent Translator secretId
und secretKey
konfigurieren. Sie können zu Tencent Cloud gehen, um einen API-Schlüssel mit 5 Millionen kostenlosen Zeichen pro Monat zu beantragen. Den Antragsprozess finden Sie hier.
"translationServices": {
"tencent": {
"secretId": "xxx",
"secretKey": "xxx",
"matches":["*.twitter.com"],
"limit": 3,
"apiUrl":"",
" maxTextGroupLengthPerRequest": 25,
"maxTextLengthPerRequest": 1800
}
}
matches
-Feld, Verwendung dieses Übersetzungsdienstes für eine bestimmte Website.
Das limit
-Feld, das die maximale Anzahl von Anfragen pro Sekunde für diesen Übersetzungsdienst angibt (einige Dienste begrenzen die maximale Anzahl von Anfragen pro Sekunde).
maxTextGroupLengthPerRequest
-Feld, maximale Anzahl von Absätzen pro Anfrage
maxTextLengthPerRequest
-Feld, maximale Anzahl von Zeichen pro Anfrage
apiUrl
ermöglicht es Ihnen, die Adresse der Übersetzungsschnittstelle anzupassen.
Immer bestimmte Websites übersetzen
translationUrlPattern
konfiguriert Websites, die immer übersetzt werden, und Websites, die nie übersetzt werden.
matches
konfiguriert, dass die Website immer übersetzt wird.excludeMatches
konfiguriert Websites, die nie übersetzt werden.
Konfigurationswerte können Domainnamen oder URLs mit *
sein, wie zum Beispiel: www.google.com/mail/*
"translationUrlPattern": {
"matches": ["stackoverflow.com"]
"excludeMatches": ["www.google.com/mail/*"]
}
Immer bestimmte Sprachen übersetzen
translationLanguagePattern konfiguriert die Sprache, die immer übersetzt wird, und die Sprache, die nie übersetzt wird.
matches
konfiguriert die Sprache, die immer übersetzt wird, z.B.en
,excludeMatches
konfiguriert die Sprachen, die nie übersetzt werden.
Übersetzungsanzeigeformat
translationTheme
ist das Anzeigeformat der Übersetzung und unterstützt derzeit die folgenden Stile:
| "none"
| "dashed"
| "dotted"
| "underline"
| "mask"
| "paper"
| "highlight"
| "blockquote"
| "weakening"
| "italic"
| "bold"
| "thinDashed".
Entsprechender chinesischer Name:
{
"none": "none",
"dashed": "gestrichelte Unterstreichung",
"dotted": "gepunktete Unterstreichung",
"underline": "gerade Unterstreichung",
"mask": "Unschärfeeffekt",
"paper": "weißer Papierschatteneffekt",
"highlight": "Hervorhebung",
"blockquote": "Zitatstil",
"weakening": "Abschwächung",
"italic": "kursiv",
"bold": "fett",
"thinDashed": "dünne gestrichelte Unterstreichung"
}
translationThemePatterns
ermöglicht es Ihnen, verschiedene Übersetzungsstile für verschiedene Websites zu konfigurieren.
"translationThemePatterns": {
"underline": {
"matches": ["discord.com"]
}
}
Klassenseite GPT Stream-Nachrichtenübersetzung
{
"matches": ["chat.openai.com"],
"excludeSelectors": [".markdown *"],
"aiRule": {
"streamingSelector": ".result-streaming.markdown ",
"messageWrapperSelector": ".markdown",
"streamingChange": true
}
}
Regeln
rules
ist ein Array-Objekt, das es Ihnen ermöglicht, Regeln für spezielle Websites zu konfigurieren, z.B. dass Twitter nur einen bestimmten Teil eines Bereichs übersetzt:
{
"rules": [
{
"id": "twitter",
"matches": ["twitter.com", "mobile.twitter.com", "tweetdeck.twitter.com"],
"selectors": [
"[data-testid=' tweetText']",
".tweet-text",
".js-quoted-tweet-text",
"[data-testid='card.layoutSmall.detail'] > div:nth-child(2)",
"[data-testid=' developerBuiltCardContainer'] > div:nth-child(2)",
"[data-testid='card.layoutLarge.detail'] > div:nth-child(2)"
],
"extraInlineSelectors": ["[data-testid=\"tweetText\"] div"]
}
]
}
Die aktuelle eingebaute rules
finden Sie hier.
Einige der wichtigen Felder werden unten zur Veranschaulichung ausgewählt:
export interface Rule {
// Website zuordnen
id?: string; // Jede Anpassungsregel hat ihre eigene ID. Wenn Benutzer diese Regel zusätzlich zu dieser Änderung wiederverwenden möchten, müssen sie diese entsprechende ID zu ihrer eigenen Regel hinzufügen, um sie wiederzuverwenden.
matches?: string | string[]; // Diese Regel wird nur auf die hier angegebene Website angewendet. Diese Regel wird nur auf die hier angegebenen Websites angewendet.
excludeMatches?: string | string[]; // Bestimmte Websites ausschließen.
selectorMatches?: string | string[]; // Mit einem Selektor abgleichen, ohne alle URLs anzugeben.
excludeSelectorMatches?: string | string[]; // Ausschlussregeln, wie oben.
// Übersetzungsbereich angeben
selectors?: string | string[]; // Nur übereinstimmende Elemente übersetzen
excludeSelectors?: string | string[]; // Elemente ausschließen, keine Übereinstimmungen übersetzen
excludeTags?: string | string[]; // Tags ausschließen, keine übereinstimmenden Tags übersetzen
// Übersetzungsbereiche anhängen statt überschreiben
additionalSelectors?: string | string[]; // Übersetzungsbereiche anhängen. Übersetzungsorte zu den intelligent übersetzten Bereichen hinzufügen.
additionalExcludeSelectors?: string | string[]; // Zusätzliche Ausschlusselemente anhängen, damit die intelligente Übersetzung bestimmte Orte nicht übersetzt.
additionalExcludeTags?: string | string[]; // Zusätzliche Ausschlusstags
// Unverändert lassen
stayOriginalSelectors?: string | string[]; // Übereinstimmende Elemente bleiben unverändert. Häufig verwendet in Foren-Site-Tags.
stayOriginalTags?: string | string[]; // Übereinstimmende Tags bleiben unverändert, z.B. `code`
// Regionale Übersetzungen
atomicBlockSelectors?: string | string[]; // Regionale Selektoren, übereinstimmende Elemente werden als Ganzes behandelt, nicht in Abschnitten übersetzt.
atomicBlockTags?: string | string[]; // Bereichs-Tag-Selektoren, wie oben
// Block oder Inline
extraBlockSelectors?: string | string[]; // Zusätzliche Selektoren, übereinstimmende Elemente werden als Blockelemente behandelt, nicht in einer Zeile übersetzt.
extraInlineSelectors?: string | string[]; // Zusätzliche Selektoren, die als Inline-Elemente verwendet werden.
inlineTags?: string | string[]; // Übereinstimmendes Tag wird als Inline-Element verwendet
preWhitespaceDetectedTags?: string | string[]; // Übereinstimmendes Tag wird automatisch umbrochen
// Übersetzungsstil
translationClasses? string | string | string[]; // Zusätzliche Klassen zur Übersetzung hinzufügen
// Globale Stile
globalStyles?: Record<string, string>; // Seitenstile ändern, nützlich, wenn die Übersetzung die Seite durcheinander bringt. `
globalAttributes?: Record<string, Record<string, string>>; // Attribute von Seitenelementen ändern
// Eingebettete Stile
injectedCss?: string | string[]; // CSS-Stile einbetten
additionalInjectedCss?: string | string[]; // Zusätzliche CSS-Stile statt sie zu überschreiben.
// Kontext
wrapperPrefix?: string; // Das Präfix des Übersetzungsbereichs, standardmäßig smart, mit oder ohne Zeilenumbrüche je nach Anzahl der Zeichen.
wrapperSuffix?: string; // Suffix des Übersetzungsbereichs
// Anzahl der Zeichen, um die Übersetzung zu umschließen
blockMinTextCount?: number; // Mindestanzahl von Zeichen, um die Übersetzung als Block zu umschließen, andernfalls ist die Übersetzung ein Inline-Element.
blockMinWordCount?: number; // Wie oben. Wenn Sie möchten, dass sie immer einen Zeilenumbruch haben, können Sie in beiden 0 eingeben.
// Mindestanzahl von Zeichen, die aus dem Inhalt übersetzt werden können
containerMinTextCount?: number; // Mindestanzahl von Zeichen, die ein Element enthalten sollte, bevor es übersetzt wird, standardmäßig 18
paragraphMinTextCount?: number; // Mindestanzahl von Zeichen für den Absatz, größer als die Anzahl der Zeichen, die der Inhalt enthalten sollte. Zahl, alles, was größer ist, wird übersetzt
paragraphMinWordCount?: number; // Mindestanzahl von Wörtern im Originalabsatz
// Erzwungene Zeilenumbrüche für lange Absätze
lineBreakMaxTextCount?: number; // Maximale Anzahl von Zeichen im Absatz, um bei der Übersetzung eines langen Absatzes einen Zeilenumbruch zu erzwingen.
// Wann die Übersetzung gestartet werden soll.
urlChangeDelay?: number; // Wie viele Millisekunden die Übersetzung verzögert wird, nachdem die Seite betreten wurde. Um auf die Initialisierung der Seite zu warten, beträgt der Standardwert 250 ms
observeUrlChange?: boolean; // Erkennen, wann sich die URL-Adresse geändert hat und die Übersetzung erneut starten, standardmäßig true.
// Mobil
isShowUserscriptPagePopup?: boolean; // Zeigen Sie das Seiten-Popup auf mobilen Geräten an. schwebendes Fenster, standardmäßig true.
fingerCountToToggleTranslagePageWhenTouching?: number; // Übersetzt, wenn vier Finger berühren, kann auf 0, 2, 3, 4, 5 eingestellt werden
// KI-Streaming-Übersetzungen
aiRule: {
streamingSelector. string; // Selektor zum Markieren des Elements, das auf der GPT-Webseite übersetzt wird
messageWrapperSelector: string; // Nachrichtenkörper-Selektor
streamingChange: boolean; // Ob die Nachricht inkrementell oder vollständig für die Klasse GPT-Webseiteniteration aktualisiert wird. GPT ist inkrementell
};
}
Weitere Erklärungen
Unterschied zwischen Block und Inline, wenn Sie mehr wissen möchten, können Sie hier nachsehen.
- Das Blockelement nimmt eine einzelne Zeile ein, und mehrere benachbarte Blockelemente nehmen jeweils eine neue Zeile ein.
- Das Inline-Element nimmt keine einzelne Zeile ein; mehrere benachbarte Inline-Elemente werden in derselben Zeile angeordnet, und eine neue Zeile wird erst erstellt, wenn eine Zeile zu viele ist.