تخطي إلى المحتوى الرئيسي

خيارات التخصيص المتقدمة

يمكنك تحرير المزيد من التكوينات المخصصة في صفحة التكوين الممتد -> إعدادات المطور -> تكوين المستخدم التي لا يمكن تحريرها في واجهة المستخدم للمستخدمين المتقدمين، انظر الملاحظة الأخيرة للحصول على مزيد من التفاصيل حول المعلمات. يمكن العثور على config المدمج الحالي هنا.

قواعد المستخدم

مع Rules يمكن تخصيص تكوين موقع ويب معين، وتحديد المحتوى الذي يحتاج إلى الترجمة أو لا، أو تعديل نمط الصفحات، إلخ.

[
{
"matches": "www.google.com",
"selectors": [".title"]
},
{
"matches": "*.twitter.com",
"selectors": [".text"],
"excludeSelectors": ["nav", " footer"]
}
]

استخدم matches لمطابقة موقع الويب المقابل. يُسمح باستخدام البدل، مثل *.google.com,www.google.com/test/*,file://*.

استخدام selectors يتجاوز نطاق الترجمة الذكية، حيث يترجم فقط العناصر التي تتطابق مع هذا المحدد.

استخدم excludeSelectors لاستبعاد العناصر دون ترجمة الموقع.

استخدم مجموعة additional من المحددات لزيادة أو تقليل نطاق الترجمة بناءً على الترجمة الذكية.

[
{
"matches": "www.google.com",
"additionalSelectors": [],
"additionalExcludeSelectors": []
}
]

إذا كنت تريد ترجمة منطقة مع التعامل مع العناصر ككل وعدم فصلها، يمكنك استخدام محدد atomicBlockSelectors. على سبيل المثال، ملفات تعريف Instagram. لاحظ أن استخدام atomicBlockSelectors يتطلب التحديد باستخدام selectors قبل استخدام atomicBlockSelectors.

{
"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\"]"
]
}

إذا كانت الترجمة تؤدي إلى صفحات غير متراصة، نص متداخل، وحالات حافة أخرى، يمكنك استخدام globalStyles لتعديل نمط الصفحة لإصلاحها. على سبيل المثال، رأس YouTube، الذي يُستخدم لإزالة الحد الأقصى للارتفاع للصفحة الأصلية.

{
"matches": "www.google.com",
"globalStyles": { ".title": "max-height:unset;" }
}

تحسينات توحيد قواعد المستخدم

دعم 0.7.4+. خذ تخطي منطقة عدم الترجمة كمثال

{
"matches": "https://www.elektrotechnik.rwth-aachen.de/*",
"additionalExcludeSelectors.remove": [".notranslate", "[translate=no]"]
}

تقوم عمليات الإضافة والإزالة بتعديل القواعد المقدمة افتراضيًا ولا تحتاج إلى استبدالها بالكامل، كما كان الحال سابقًا.

CSS المحقون

يسمح CSS المحقون بحقن أنماط ويب مخصصة عالميًا. يمكن استخدامه مع translationClasses من Rules.

".immersive-translate-target-wrapper img { width: 16px; height: 16px }"

من الممكن أيضًا تصميم الموقع بطريقة أكثر تخصيصًا، مثل مدير أنماط الويب العادي. (حتى باستخدام display:none لإزالة الإعلانات)

.title {
color: red;
}

تكوين المستخدم

يسمح التكوين بتخصيص تكوين هذا الإضافة، مثل خدمات الترجمة، خيارات الترجمة اللغوية الخاصة باللغة، إلخ.

{
"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"]
}
]
}

يمكن لحقل القواعد في rules استخدام جميع الحقول في generalRule. تتمتع rules بأعلى أولوية، حيث تدمج generalRule والقواعد لتلك rule عندما يتم مطابقة rule معين لموقع معين.

تقديم بعض الحقول الشائعة في Config.

عدم إظهار خدمات الترجمة غير المكونة في لوحة النوافذ المنبثقة

"showUnconfiguredTranslationServiceInPopup": false

تكوين خدمات الترجمة

استخدم translationService لاختيار محرك الترجمة الافتراضي، والذي يدعم حاليًا:.

| "tencent"
| "google"
| "deepl"
| "baidu"
| "volc"
| "youdao"
| "caiyun"
| "openl"
| "bing"
| "transmart"

استخدم translationServices لتكوين apikey لكل خدمة ترجمة، حيث يحتاج مقدمو الخدمة المختلفون إلى معلمات مختلفة، ويمكن طلب مفاتيح API الخاصة بهم في مركز المطورين لمواقعهم الخاصة.

على سبيل المثال، مترجم Tencent، تحتاج إلى تكوين secretId، secretKey. يمكنك التوجه إلى Tencent Cloud للتقدم بطلب للحصول على مفتاح API مع 5 ملايين حرف مجاني شهريًا. ارجع هنا لعملية التقديم.

"translationServices": {
"tencent": {
"secretId": "xxx",
"secretKey": "xxx",
"matches":["*.twitter.com"],
"limit": 3,
"apiUrl":"",
" maxTextGroupLengthPerRequest": 25,
"maxTextLengthPerRequest": 1800
}
}

حقل matches، باستخدام خدمة الترجمة هذه لموقع ويب معين.

حقل limit، الذي يحدد الحد الأقصى لعدد الطلبات في الثانية لهذه الخدمة الترجمة (بعض الخدمات تحدد الحد الأقصى لعدد الطلبات في الثانية).

حقل maxTextGroupLengthPerRequest، الحد الأقصى لعدد الفقرات لكل طلب

حقل maxTextLengthPerRequest، الحد الأقصى لعدد الأحرف لكل طلب

apiUrl يسمح لك بتخصيص عنوان واجهة الترجمة.

ترجمة مواقع ويب محددة دائمًا

translationUrlPattern يكوّن المواقع التي يتم ترجمتها دائمًا، والمواقع التي لا يتم ترجمتها أبدًا.

  • matches تكوين يترجم دائمًا الموقع.
  • excludeMatches تكوين المواقع التي لا يتم ترجمتها أبدًا.

يمكن أن تكون قيم التكوين أسماء نطاقات أو عناوين URL مع *، مثل: www.google.com/mail/*

"translationUrlPattern": {
"matches": ["stackoverflow.com"]
"excludeMatches": ["www.google.com/mail/*"]
}

ترجمة لغات محددة دائمًا

translationLanguagePattern، يكوّن اللغة التي يتم ترجمتها دائمًا واللغة التي لا يتم ترجمتها أبدًا.

  • matches تكوين اللغة التي يتم ترجمتها دائمًا، مثل en،
  • excludeMatches يكوّن اللغات التي لا يتم ترجمتها أبدًا.

تنسيق عرض الترجمة

translationTheme هو تنسيق عرض الترجمة، ويدعم حاليًا الأنماط التالية:

| "none"
| "dashed"
| "dotted"
| "underline"
| "mask"
| "paper"
| "highlight"
| "blockquote"
| "weakening"
| "italic"
| "bold"
| "thinDashed".

الاسم الصيني المقابل:

{
"none": "none",
"dashed": "dotted underline",
"dotted": "dotted underline",
"underline": "straight line underline",
"mask": "blur effect",
"paper": "white paper shadow effect",
"highlight": "highlight",
"blockquote": "quote style",
"weakening": "weakening",
"italic": "italics",
"bold": "bolding",
"thinDashed": "thin dashed underline"
}

translationThemePatterns يسمح لك بتكوين أنماط ترجمة مختلفة لمواقع ويب مختلفة.

"translationThemePatterns": {
"underline": {
"matches": ["discord.com"]
}
}

ترجمة رسائل تدفق صفحة gpt Class

{
"matches": ["chat.openai.com"],
"excludeSelectors": [".markdown *"],
"aiRule": {
"streamingSelector": ".result-streaming.markdown ",
"messageWrapperSelector": ".markdown",
"streamingChange": true
}
}

القواعد

rules هو كائن مصفوفة يسمح لك بتكوين قواعد لمواقع خاصة، مثل جعل Twitter يترجم فقط جزءًا معينًا من منطقة:.

{
"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"]
}
]
}

يمكن العثور على rules المدمجة الحالية هنا.

تم اختيار بعض الحقول الهامة أدناه للتوضيح:

export interface Rule {
// مطابقة موقع الويب
id?: string; // لكل قاعدة تكيفية معرف خاص بها، إذا أراد المستخدمون إعادة استخدام هذه القاعدة على هذا التغيير، يحتاجون إلى إضافة هذا المعرف المقابل إلى قاعدتهم الخاصة لإعادة استخدامها
matches?: string | string[]; // ستطابق هذه القاعدة فقط موقع الويب هنا. ستطابق هذه القاعدة فقط المواقع هنا.
excludeMatches?: string | string[]; // استبعاد مواقع محددة.
selectorMatches?: string | string[]; // مطابقة مع محدد دون تحديد جميع عناوين URL
excludeSelectorMatches?: string | string[]; // استبعاد القواعد، كما هو موضح أعلاه.

// تحديد نطاق الترجمات
selectors?: string | string[]; // ترجمة فقط العناصر التي تتطابق
excludeSelectors?: string | string[]; // استبعاد العناصر، لا تترجم المطابقات
excludeTags?: string | string[]; // استبعاد العلامات، لا تترجم العلامات المطابقة

// إضافة نطاقات الترجمة بدلاً من تجاوزها
additionalSelectors?: string | string[]; // إضافة نطاقات الترجمة. إضافة مواقع الترجمة إلى المناطق المترجمة بذكاء.
additionalExcludeSelectors?: string | string[]; // إضافة عناصر استبعاد بحيث لا تترجم الترجمة الذكية مواقع معينة.
additionalExcludeTags?: string | string[]; // إضافة علامات استبعاد إضافية

// اترك كما هو
stayOriginalSelectors?: string | string[]; // ستترك العناصر المطابقة كما هي. تستخدم عادة في علامات مواقع المنتديات.
stayOriginalTags?: string | string[]; // ستترك العلامات المطابقة كما هي، مثل `code`

// الترجمات الإقليمية
atomicBlockSelectors?: string | string[]; // محددات إقليمية، ستعامل العناصر المطابقة ككل، لا تترجم في أقسام.
atomicBlockTags?: string | string[]; // محددات علامات المنطقة، كما هو موضح أعلاه

// كتلة أو خط
extraBlockSelectors?: string | string[]; // محددات إضافية، ستعامل العناصر المطابقة كعناصر كتلة، لا تترجم في سطر واحد.
extraInlineSelectors?: string | string[]; // محددات إضافية ستستخدم كعناصر خط.

inlineTags?: string | string[]; // ستستخدم العلامة المطابقة كعنصر خط
preWhitespaceDetectedTags?: string | string[]; // ستلف العلامة المطابقة تلقائيًا

// نمط الترجمة
translationClasses? string | string | string[]; // إضافة فئات إضافية إلى الترجمة

// الأنماط العالمية
globalStyles?: Record<string, string>; // تعديل أنماط الصفحة، مفيد إذا كانت الترجمة تسبب في فوضى الصفحة. `
globalAttributes?: Record<string, Record<string, string>>; // تعديل سمات عناصر الصفحة

// الأنماط المضمنة
injectedCss?: string | string[]; // تضمين أنماط CSS
additionalInjectedCss?: string | string[]; // أنماط CSS إضافية بدلاً من تجاوزها.

// السياق
wrapperPrefix?: string; // بادئة منطقة الترجمة، الافتراضي هو smart، مع أو بدون فواصل الأسطر اعتمادًا على عدد الأحرف.
wrapperSuffix?: string; // لاحقة منطقة الترجمة

// عدد الأحرف لتغليف الترجمة
blockMinTextCount?: number; // الحد الأدنى لعدد الأحرف لتغليف الترجمة ككتلة، وإلا فإن الترجمة هي عنصر خط.
blockMinWordCount?: number; // نفس الشيء أعلاه. إذا كنت تريد أن تكون دائمًا في سطر جديد، يمكنك وضع 0 في كلاهما.

// الحد الأدنى لعدد الأحرف التي يمكن ترجمتها من المحتوى
containerMinTextCount?: number; // الحد الأدنى لعدد الأحرف التي يجب أن يحتويها العنصر قبل أن يتم ترجمته، الافتراضي هو 18
paragraphMinTextCount?: number; // الحد الأدنى لعدد الأحرف للفقرة، أكبر من عدد الأحرف التي يجب أن يحتويها المحتوى. العدد، أي شيء أكبر من ذلك سيتم ترجمته
paragraphMinWordCount?: number; // الحد الأدنى لعدد الكلمات في الفقرة الأصلية

// فواصل الأسطر القسرية للفقرات الطويلة
lineBreakMaxTextCount?: number; // الحد الأقصى لعدد الأحرف في الفقرة ليتم كسرها قسريًا عند ترجمة فقرة طويلة.

// متى تبدأ الترجمة.
urlChangeDelay?: number; // كم ملي ثانية لتأخير الترجمة بعد دخول الصفحة. للانتظار حتى يتم تهيئة الصفحة، الافتراضي هو 250ms
observeUrlChange?: boolean; // اكتشاف متى تغير عنوان URL وبدء الترجمة مرة أخرى، الافتراضي هو true.

// الجوال
isShowUserscriptPagePopup?: boolean; // عرض النافذة المنبثقة على الأجهزة المحمولة. نافذة عائمة، الافتراضي هو true.
fingerCountToToggleTranslagePageWhenTouching?: number; // يترجم عند لمس أربعة أصابع، يمكن تعيينه إلى 0، 2، 3، 4، 5

// ترجمات تدفق الذكاء الاصطناعي
aiRule: {
streamingSelector. string; // محدد لتمييز العنصر الذي يتم ترجمته في صفحة gpt
messageWrapperSelector: string; // محدد نص الرسالة
streamingChange: boolean; // ما إذا كانت الرسالة محدثة بشكل تدريجي أو كامل لتكرار صفحة gpt. gpt هو تدريجي
};
}

مزيد من الشرح

الفرق بين الكتلة والخط، إذا كنت تريد معرفة المزيد يمكنك الاطلاع هنا

  • العنصر الكتلة يشغل سطرًا واحدًا، والعناصر الكتلة المجاورة المتعددة تشغل كل منها سطرًا جديدًا.
  • العنصر الخط لا يشغل سطرًا واحدًا؛ يتم ترتيب العناصر الخط المجاورة المتعددة على نفس السطر، ولا يتم إنشاء سطر جديد حتى يكون هناك عدد كبير جدًا في سطر واحد.