Zum Hauptinhalt springen

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.