البدء

ما الذي تقدمه SwiftLing

التركيب

البداية السريعة

شاشة «نظرة عامة»

اللغات والعناوين

اللغات

العناوين (URLs)

محركات البحث وتحسين محركات البحث (SEO)

الترجمة

شاشات الترجمة

محرر الترجمة

الترجمة الآلية

ترجمة كل شيء

لم تُترجم قط

نسخ منفصلة

المحتوى

الصفحات والمشاركات

الفئات والعلامات

قوائم الطعام

القوالب

القوالب والمكونات الإضافية

التعليقات

النماذج

WooCommerce

أدوات إنشاء الصفحات و ACF

الصور

مُبدِّل اللغة

مُبدِّل اللغة

لغة الزائر

الإعدادات

الإعدادات العامة

السجلات

المكونات الإضافية الخاصة بالتخزين المؤقت وشبكات المواقع

SwiftLing Pro

SwiftLing Pro

Licence Pro

خدمات الترجمة الاحترافية

مسرد المصطلحات Pro

ترجمة مرة أخرى (الإصدار الاحترافي)

ترجمة كل شيء في الخلفية (الإصدار Pro)

الترجمة التلقائية (الإصدار الاحترافي)

Currencies Pro

رسائل البريد الإلكتروني الخاصة بالطلبات (الإصدار Pro)

مترجمون محترفون

الاستيراد من Polylang وWPML وTranslatePress Pro

الدعم الاحترافي

المطورون

للمطورين

نقاط ربط للمكونات الإضافية والسمات

واجهة برمجة التطبيقات REST للمحتوى (SwiftLing)

واجهة برمجة التطبيقات REST ووكلاء الذكاء الاصطناعي (SwiftLing Pro)

WP-CLI (SwiftLing Pro)

مساعدة

حل المشكلات والدعم الفني

الأسئلة الشائعة

الخدمات الخارجية والخصوصية

مسرد المصطلحات

نقاط الربط للإضافات والقوالب

الوثائق / المطوّرون

نقاط الربط التي يوفّرها SwiftLing للإضافات والقوالب الأخرى. يعتمد SwiftLing Pro عليها وحدها، ولا يغيّر شيئًا في SwiftLing نفسه.

SWIFTLING_HOOKS هو إصدار هذه القائمة. يزداد رقمه عند إضافة نقطة ربط أو تغييرها، لتتمكّن الإضافة من التحقق من توفّر ما تحتاج إليه في SwiftLing:

if ( ! defined( 'SWIFTLING_HOOKS' ) || SWIFTLING_HOOKS < 1 ) {
	return; // Too old a SwiftLing.
}

يفشل الاختبار tests/HooksTest.php إذا أُضيفت نقطة ربط إلى SwiftLing دون وصفها هنا، أو وُصفت هنا دون أن تكون موجودة في SwiftLing.

شاشات الإدارة

swiftling_admin_screens

مرشّح، منذ الإصدار 1 من نقاط الربط. شاشات إدارة SwiftLing، مفهرسة بالاسم المختصر لعنوان كل شاشة (admin.php?page=<slug>)، وفق ترتيب القائمة. يمكن للإضافة إضافة شاشة إلى القائمة أو إلى مجموعة؛ انظر swiftling_admin_groups.

Key
menuName: the screen’s title, its menu item, and its name in the list of its group. Required.
viewA name for the screen, unique among the screens. Required.
filePath of the PHP file that prints the screen. Without it, admin/views/<view>.php of SwiftLing.
groupA group of swiftling_admin_groups: the screen is out of the menu, unless it is the group’s first, and shows the group’s header and list.
partThe part of the group’s list the screen is listed in. Without it, the screen is in the group but not listed.
icon, tintThe screen’s picture in the list: the path of a 16 by 16 line drawing, on a tile of orange, blue, green, teal, amber, violet or ink.
hiddenReachable only by link, never in the menu.
countSince hooks 25: a number to show beside the screen’s menu item, as WordPress shows pending comments, such as replies waiting to be read. A screen of a group adds it to the group’s item; SwiftLing’s own item shows the sum of all, so it is seen with the menu closed. 0 shows nothing.
capSince hooks 12: the capability the screen takes; without it, manage_options. The Translations screens and the translation editor take swiftling_translate, see swiftling_can_translate. The menu and the list of a group show a user only the screens they may open.
before_setupSince hooks 20: the screen opens before the first setup is answered, as an import that sets the languages up from another plugin’s (swiftling_import_languages()). Until then every other screen leads to the first setup.

يعرض الملف الشاشة داخل صفحة SwiftLing وبأنماطها. ويبدأ باستدعاء SwiftLing\Admin\Ui::screenHeader() كما تفعل واجهات SwiftLing. تُستبعد الشاشة إذا لم يكن لها اسم أو ملف عرض، أو تعذّرت قراءة ملفها؛ أما الشاشة التابعة لمجموعة غير موجودة في SwiftLing فتُعرض كشاشة مستقلة.

add_filter(
	'swiftling_admin_screens',
	static function ( array $screens ): array {
		$screens['swiftling-glossary'] = array(
			'menu'  => __( 'Glossary', 'my-plugin' ),
			'view'  => 'glossary',
			'file'  => __DIR__ . '/views/glossary.php',
			'group' => 'settings',
			'part'  => 'swiftling',
			'icon'  => 'M2 4h12M2 8h12M2 12h8',
			'tint'  => 'violet',
		);
		return $screens;
	}
);

swiftling_admin_groups

مرشّح، منذ الإصدار 1 من نقاط الربط. مجموعات الشاشات، مفهرسة بالمُعرّف: translations وsettings. تظهر كل مجموعة كعنصر واحد في القائمة باسمها، ويفتح أولى شاشاتها؛ وتعرض كل شاشة فيها ترويسة المجموعة (name وdescription) وقائمة شاشات المجموعة ضمن أقسام (parts، وهي أسماء مفهرسة بالقسم). يمكن للإضافة إضافة مجموعة أو أقسام إلى مجموعة.

add_filter(
	'swiftling_admin_groups',
	static function ( array $groups ): array {
		$groups['settings']['parts']['automatic'] = __( 'Automatic', 'my-plugin' );
		return $groups;
	}
);

swiftling_setup_offer

إجراء، منذ الإصدار 24 من نقاط الربط. يُنفَّذ فوق سؤال الإعداد الأول عن اللغة المكتوب بها الموقع، والموجّه إلى من يدير الموقع. يمكن لإضافة أخرى أن تعرض هناك طريقةً لإعداد SwiftLing أنسب للموقع، مثل استيراد SwiftLing Pro لترجمات إضافة متعددة اللغات استُخدمت سابقًا، وذلك عبر شاشة تُفتح قبل الإعداد (before_setup أعلاه). إذا عرض الإجراء محتوى، ظهر أولًا بوصفه العنوان الرئيسي للصفحة (<h1>)؛ ثم يأتي السؤال تحت عبارة «أو أعدّ SwiftLing يدويًا»، ويصبح عنوانه في مستوى أدنى وزرّه ثانويًا. وإذا لم يعرض شيئًا، يبقى الإعداد كما هو بدونه.

add_action(
	'swiftling_setup_offer',
	static function (): void {
		if ( my_plugin_has_old_translations() ) {
			printf( '<section class="swiftling-card"><h1>%s</h1><p><a class="swiftling-button is-primary" href="%s">%s</a></p></section>', esc_html__( 'Bring your translations along', 'my-plugin' ), esc_url( admin_url( 'admin.php?page=my-import' ) ), esc_html__( 'Import', 'my-plugin' ) );
		}
	}
);

swiftling_setup_aside

إجراء، منذ الإصدار 20 من نقاط الربط. يُنفَّذ أسفل الإعداد الأول الذي يسأل من يدير الموقع عن اللغة المكتوب بها الموقع. يمكن لإضافة أخرى أن تعرض طريقةً مختلفة لإعداد اللغات، عبر شاشة تُفتح قبل الإعداد (before_setup أعلاه). ولعرض خيار ينبغي أن يظهر أولًا، انظر swiftling_setup_offer.

add_action(
	'swiftling_setup_aside',
	static function (): void {
		printf( '<p><a href="%s">%s</a></p>', esc_url( admin_url( 'admin.php?page=my-import' ) ), esc_html__( 'Import from my old plugin', 'my-plugin' ) );
	}
);

swiftling_admin_screen_assets

إجراء، منذ الإصدار 1 من نقاط الربط. يُنفَّذ عند تحميل شاشة من شاشات SwiftLing لملفات JavaScript والأنماط الخاصة بها، بعد تحميل ملفات SwiftLing نفسها. تُحمَّل ورقة أنماط SwiftLing على جميع شاشاته، بما فيها شاشات الإضافات الأخرى.

  • string $slug: الاسم المختصر لعنوان الشاشة، مثل swiftling-languages.
  • array $screen: الشاشة كما يقدّمها swiftling_admin_screens.
add_action(
	'swiftling_admin_screen_assets',
	static function ( string $slug ): void {
		if ( 'swiftling-glossary' === $slug ) {
			wp_enqueue_script( 'my-glossary', plugins_url( 'glossary.js', __FILE__ ), array(), '1.0.0', true );
		}
	}
);

الترجمة

swiftling_can_translate

مرشّح، منذ الإصدار 12 من نقاط الربط. يحدّد ما إذا كان يُسمح لمستخدم لا يدير الموقع بالترجمة. الترجمة هي الصلاحية swiftling_translate: يمتلكها كل من لديه manage_options، وكذلك من يحدّده هذا المرشّح؛ ولا تُحتسب الصلاحية المحفوظة لدور، مثل تلك التي يمنحها محرّر الأدوار. يمنحها SwiftLing Pro لدور «المترجم» وللأدوار المختارة لها.

يمكن للمترجم الذي لا يدير الموقع فتح شاشات الترجمات ومحرّر الترجمة، وترجمة كل النصوص بجميع اللغات، بما فيها نصوص العناصر التي لا يُسمح له بتحريرها، مثل قالب أو نموذج أو نصوص قالب الموقع (swiftling_is_translator()). وتبقى الإعدادات من اختصاص مدير الموقع: اللغات، والعناوين، ومبدّل اللغات، والخدمة، والإعدادات العامة، والسجلات، و«ترجمة كل شيء»، وكذلك الخيارات التي تُعدّ إعدادات في شاشات الترجمات، مثل تحديد حقول المصطلحات التي تُعدّ نصوصًا، واللغات التي تظهر بها عناصر القائمة، والبحث عن نصوص القوالب والإضافات.

  • bool $can: ما إذا كان يُسمح للمستخدم بالترجمة؛ تكون القيمة false ما لم تسمح بذلك إضافة أخرى.
  • WP_User $user: المستخدم.

swiftling_translator_machine

مرشِّح، منذ الإصدار 13 من الخطافات. يحدد ما إذا كان المترجم الذي لا يدير الموقع يستطيع الترجمة باستخدام خدمة الترجمة الخاصة بالموقع، والتي يتحمل مديره تكلفتها (swiftling_can_machine_translate()). إذا لم يُسمح له بذلك، يعيد مسار الترجمة الآلية الاستجابة 403، ولا يعرض محرر الترجمة خيار الترجمة الآلية، كما لو لم تتوفر خدمة. ويُسمح لمدير الموقع بذلك دائمًا. يتيح SwiftLing Pro ضبط هذا الخيار من الإعدادات › المترجمون.

  • bool $can: تكون القيمة true ما لم تمنعها إضافة.
  • WP_User $user: المترجم.

swiftling_translation_services

مرشِّح. خدمات الترجمة الآلية مفهرسة حسب المعرّف. يمكن للإضافة أن تضيف خدمة خاصة بها، على هيئة صنف فرعي من SwiftLing\Translation\Service؛ وتعرضها شاشة خدمة الترجمة إلى جانب الخدمات الأخرى.

  • array<string, Service> $services

توسّع الخدمة الصنف SwiftLing\Translation\Service، كما يفعل SwiftLing\Translation\Google:

Method
id(), name(), fullName()deepl; DeepL, as in “Translate with DeepL”; DeepL API. The ID names its settings and the constant that can hold its key, SWIFTLING_DEEPL_API_KEY.
check( $key )Checks a key with the service: array( 'languages' => codes ), or a WP_Error whose message says what to do. Since hooks 5, a service with models to choose from adds 'models' => array( ID => name ), the models the key may use. Since hooks 6, an error whose data has 'reason' => 'billing' is a key that works on an account that cannot pay (no credits, billing off, a spend limit reached): the screen says so as a warning, and the service does not translate until a check passes.
languageCode( $language )The service’s code for a language of swiftling_languages(), or null when it does not translate it.
translate( $items, $source, $target )Translates texts: see the method’s description. Since hooks 5, a language model adds tokens to its answer, the tokens it read and wrote, counted by month beside the characters (Services::tokens()).
freeCharacters(), pricingUrl()Optional: characters translated free of charge each month, and the address of its prices.
quota()Optional, since hooks 4: the usage of the billing period as the service counts it, array( 'used' => …, 'limit' => … ) (0 for a plan without a limit). The screen shows it instead of freeCharacters().
guide()Optional, since hooks 2: how to get a key, shown on the Translation service screen while the service is not connected.
defaultModel()Optional, since hooks 5: the model the service translates with until another is chosen. The Translation service screen offers the models of the last check in a list; model() gives the one chosen, the default, or the first.
sourceLanguage(), targetLanguage()Since hooks 9: the languages of the translation under way, as swiftling_languages() gives them, told by setLanguages() before every translate(). A service heeds more than its codes with them: the formal variant of a locale (de_DE_formal is DE to DeepL), or what is set for the language.
kind()Optional, since hooks 3: machine (the default), a translation engine billed per character, or ai, a language model billed per token. The Translation service screen lists services in a card per kind, each with SwiftLing’s icon of its kind, never a logo of the service.

تحتفظ المفاتيح المُدخلة في شاشة خدمة الترجمة بالأحرف والأرقام والرموز - و_ و: و.. عند ربط عدة خدمات، تتولى الترجمة الخدمة المختارة في تلك الشاشة (Services::current()، منذ الإصدار 2 من الخطافات).

يتولى SwiftLing\Translation\Markup (منذ الإصدار 2 من الخطافات) لكل خدمة ما تحتاج إليه Google عند التعامل مع HTML: تحافظ protect() وrestore() على سمات الوسوم في الموقع، وتحافظ keep() وunkeep() على العناصر النائبة ومتغيرات إضافات تحسين محركات البحث (swiftling_seo_variables()) والكلمات التي لا تُترجم أبدًا داخل <span translate="no">، بينما تنقل plainToHtml() وhtmlToPlain() النص العادي بصيغة HTML.

swiftling_translation_service

مرشِّح. الخدمة التي تترجم صفحة أو قالبًا أو قائمة مصطلحات إلى لغة معينة، مما يتيح للإضافة استخدام خدمات مختلفة بحسب اللغة أو الصفحة.

  • Service|null $service: الخدمة المتصلة، أو null إذا لم تكن هناك خدمة متصلة.
  • string $subject: مفتاح العنصر المراد ترجمته، مثل post:12.
  • array $language: اللغة، بالصيغة التي توفرها swiftling_languages().

فحص صفحة على الخادم

منذ الإصدار 14 من الخطافات، تفحص swiftling_server_check( $key, $user_id = null ) صفحة عنصر معيّن (post:12 أو template:… أو terms:category؛ راجع swiftling_subject()) على الخادم، بالطريقة التي يفحصها بها محرر الترجمة في المتصفح، وتخزّن ما تجده. يتيح ذلك الترجمة دون متصفح، في الخلفية، أو عند النشر، أو عبر REST API أو WP-CLI. يطلب الموقع من نفسه صفحتَي الفحص عبر اتصال استرجاعي، كما تفعل «صحة الموقع»، مستخدمًا رمزًا موقّعًا صالحًا لبضع دقائق لذلك العنصر وتلك الصفحة، المعروضة للمستخدم المحدد (أو المستخدم الحالي افتراضيًا)، والذي يجب أن يملك صلاحية ترجمة العنصر. وتعيد الدالة ما خُزّن، أو WP_Error. لا تُشغَّل البرامج النصية: فلا يُعثر على نص ينشئه برنامج نصي بعد تحميل الصفحة إلا عند الفحص في المتصفح.

الترجمة دون استخدام المحرر

منذ الإصدار 15 من الخطافات، ينفّذ includes/api.php خطوات محرر الترجمة وعملية «ترجمة كل شيء» على الخادم، بصفة المستخدم الحالي وبالصلاحيات والفحوص نفسها؛ وتستدعي مسارات المحرر نفسها الدوال ذاتها. تعيد كل دالة WP_Error (مع status لاستجابة REST) إذا لم يكن العنصر أو اللغة أو صلاحيات المستخدم ملائمة.

Function
swiftling_subject_texts( $key, $lang )The texts of a subject (post:12, template:…, view:…, terms:category, menu:3, a builder’s subject) the user may translate, with their translations into a language: key, object, path, section, kind, type (text, html, code, url, or format for a text from code), original, translation, state (reviewed, machine, official, outdated, missing), previous and follows. The originals are never stored, so the page is checked on the server first (swiftling_server_check()).
swiftling_save_texts( $key, $lang, $items, $state )Saves translations by key, as the editor saves what is typed: $items is a list of key, text and, for the check of placeholders, original; $state is reviewed or machine. An empty text removes a translation. Returns the states of what was saved, the keys refused for their placeholders and those ignored, the subject’s state in every language (languages), and a post’s address in the language.
swiftling_save_earlier_texts( $key, $lang, $items )Since hooks 22, for an import: saves translations made for an earlier version of their originals, as another plugin kept them ($items: key of the text’s place now, text, and the earlier original it translated). Each text is outdated then, as when its original changed after it was translated here: visitors read the original, the editor shows the earlier translation, Translate everything leaves it to the editor, and the page counts as translated once its other texts are. A text translated now, one whose earlier version is the text now, and one another language waits with in another earlier version (a text has one previous version for all languages) are ignored; returns the keys saved too. The subject’s page must have been checked.
swiftling_save_address( $owner, $lang, $slug )Saves the slug of a post (post:12) or of a term with a page of its own (term:5) in a language, as the editor saves a typed one: empty for the original slug, a number added to one taken there. Returns the address it gives: slug, state, original, prefix, url.
swiftling_machine_translate( $key, $lang, $items )Translates texts (key, text, html) with the subject’s translation service, through swiftling_machine_items and swiftling_machine_translations, at most 100 texts and 20,000 characters at once; it does not save them. Returns translations, failed, kept and error.
swiftling_machine_translate_subject( $key, $lang, $again = array() )Fills the empty texts of a subject with the service and saves them as machine translations, in batches of 50 texts and 4,000 characters, as the Translate everything run fills a page; with states in $again (machine, reviewed), translates the texts in those states again instead. Returns how many texts there were, how many were translated, their characters, the keys failed and refused, the service’s error if it stopped, and own_page when the language shows a separate copy of the post or keeps its original (the stored mode duplicate), where nothing is filled in.

منذ الإصدار 19 من الخطافات، تضبط swiftling_import_languages( $source, $targets, $address ) لغات الموقع انطلاقًا من لغات إضافة أخرى عند الاستيراد: اللغة الأصلية (locale، slug) كما يحددها الإعداد الأول، أو اللغة الأصلية نفسها الموجودة في SwiftLing (وإلا يُستخدم swiftling_import_source)؛ واللغات المستهدفة (locale، slug، visible، وكذلك name وrtl للغة محلية لا يدرجها WordPress، فتُصبح لغة مخصصة) التي تُضاف بحسب اللغة المحلية، مع الإبقاء على اللغات الموجودة في الموقع؛ و$address: ‏format ‏(parameter، directory؛ ويحتفظ domain وsubdomain بقيم domains الخاصة بهما، لكنهما ينتظران شاشة العناوين) وsource_folder. وتُرجع الدالة اللغات المحلية added وkept، وقيم slugs، وما إذا كان التنسيق ينتظر hosts، وحزم ترجمات WordPress المثبّتة والمفقودة (packs). ومنذ الإصدار 20 من الخطافات، تعمل أيضًا عبر واجهة REST API وWP-CLI وWP-Cron، وليس على شاشات الإدارة فقط. ومنذ الإصدار 21 من الخطافات، إذا قُدِّمت قيمة name للغة محلية يمنحها WordPress اسمًا مختلفًا، مثل “English” للغة en_GB (“English (UK)”)، فإنها تُصبح الاسم الذي يُظهره مُبدّل اللغات لها، وتسميتها على شاشة اللغات.

التعليقات ونصوص القالب أو الإضافة هي قوائم تعرضها شاشاتها الخاصة مقسّمة إلى صفحات: تُحفظ نصوصها وتُترجم بحسب المفتاح، لكنها لا تُدرج هنا ولا تُملأ. منذ الإصدار 23 من الخطافات، تُرجع swiftling_subject_found( $subject, array( 'page' => 1 ) ) صفحة واحدة من قائمة التعليقات (comments:<post type>) كما يعرضها محرّر التعليقات، وتشمل جميع التعليقات مرتّبة من الأحدث إلى الأقدم، مع list (وفيها page وpages؛ وتحدد lang اللغة التي تخصّها الأعداد)، حتى يمكن حفظ ترجماتها بحسب المفتاح باستخدام swiftling_save_texts().

swiftling_machine_items

مرشِّح، متاح منذ الإصدار 9 من الخطافات. النصوص التي يرسلها المحرّر إلى خدمة الترجمة، كي تتمكّن إضافة من الإضافة إليها: أجزاء يجب الإبقاء عليها (keep)، مثل الكلمات التي يحددها مسرد المصطلحات لخدمة لا تدعم المسارد، أو مفاتيح تقرؤها خدمة تابعة للإضافة. يُبقي SwiftLing النصوص، وما إذا كانت بصيغة HTML، والأجزاء التي حدّدها بنفسه للإبقاء عليها كما كانت، ولا يرسل سوى نصوص الصفحة.

  • array<string, array> $items: المفتاح => text، html، keep؛ راجع Service::translate().
  • Service $service: الخدمة التي تترجمها.
  • array $language: اللغة التي تُترجم إليها، بالشكل الذي تُرجعه swiftling_languages().

swiftling_machine_translations

مرشِّح، متاح منذ الإصدار 9 من الخطافات. الترجمات التي أعادتها الخدمة، قبل أن يتحقق SwiftLing من عناصرها النائبة ومتغيرات إضافات تحسين محركات البحث ويُدرجها المحرّر، حتى تتمكّن إضافة من تعديلها، مثل إدراج الكلمات التي يحددها مسرد المصطلحات في مواضع الإبقاء عليها. لا يشمل إلا النصوص التي تُرجمت، ويبقى كل منها نصًا.

  • array<string, string> $translations: المفتاح => الترجمة.
  • array<string, array> $items: ما أُرسل؛ راجع swiftling_machine_items.
  • Service $service
  • array $language

swiftling_translated_changed

إجراء. يُنفَّذ بعد إعادة كتابة اللغات التي تُرجمت إليها بعض المقالات.

  • int[] $post_ids

swiftling_translate_all_modes

عامل تصفية، منذ الإصدار 7 من الخطافات. طرق تشغيل شاشة «ترجمة كل شيء»، مفهرسة حسب الوضع ومعروضة كبطاقات: يملأ fill، وهو وضع SwiftLing الأصلي، النصوص الفارغة. تضيف الإضافة طريقةً تتضمن label (اسم البطاقة)، وdescription (السطر أسفل عنوان الشاشة)، وhint (ما تفعله الطريقة، على البطاقة)، وicon وtint (مظهرها، كما في شاشات swiftling_admin_screens)، وfile (ملف PHP الذي يعرض شاشتها أسفل البطاقات، على admin.php?page=swiftling-translate-all&mode=<mode>). لدى SwiftLing وحده طريقة واحدة، ولا يعرض أي بطاقات. تُحمَّل نصوصها البرمجية عبر swiftling_admin_screen_assets على swiftling-translate-all؛ ويتوفر هناك فحص الصفحة (window.swiftlingPageCheck) والترجمة الآلية المشتركة (window.swiftlingMachine).

عند إعادة ترجمة النصوص، يطلب التشغيل من مسار الفحص، مع fill، القيمة again:‏ machine أو reviewed أو كليهما. ثم يعيد النصوص المترجمة في تلك الحالات، مع state لكل منها، بدلًا من النصوص الفارغة؛ ولا يعيد أبدًا نصًا من ووردبريس أو قالب أو إضافة، ولا نصًا تغيّر أصله. تحصي swiftling_translate_all_scan() هذه النصوص لكل صفحة ولغة في translated (machine وreviewed؛ وتكون القيمة null للصفحة التي لم تُفحص قط).

swiftling_translate_all_aside

إجراء، منذ الإصدار 17 من الخطافات. يُنفَّذ في أعلى العمود الجانبي لشاشة «ترجمة كل شيء»، فوق قسم «آلية العمل»، بعد الاتصال بخدمة ترجمة: وهنا يمكن لإضافة أن تعرض بطاقةً خاصة بها عن ترجمة الموقع بأكمله (<section class="swiftling-card swiftling-side">)، كما تفعل SwiftLing Pro للإشارة إلى إمكان ترجمة الصفحات فور نشرها. كان الإصدار 16 من الخطافات يتضمن swiftling_translate_all_notices أسفل عنوان الشاشة بدلًا من ذلك؛ وقد أُزيل.

swiftling_translate_all_start_actions

إجراء، منذ الإصدار 18 من الخطافات. يُنفَّذ في خطوة «البدء» من شاشة «ترجمة كل شيء»، بجانب الزر الذي يبدأ التشغيل في علامة التبويب: وهنا تضيف إضافة طريقةً لبدئه، كما تفعل SwiftLing Pro على الخادم.

  • string $lang: اللغة التي تُظهرها الخطوات أولًا، أو "" عندما يتعذّر تنفيذ أي خطوة.

تشغيل يتحكم فيه الخادم

منذ الإصدار 18 من الخطافات، تسجّل swiftling_translate_all_record( $lang, $args ) ما فعله تشغيل «ترجمة كل شيء» بصفحة، أو اكتمال لغة، كما يفعل مسار التقدّم للتشغيل في المتصفح، وتعيد حالة التشغيل (swiftling_translate_all_state()). تتضمن $args:‏ page (post:12)، وoutcome (done أو skipped)، وreason، وtexts، وcharacters، وtotal، وfinish، وstopped، وdriver (browser أو server). تخطّط الإضافة التي تتحكم في التشغيل على الخادم له باستخدام swiftling_translate_all_plan( $lang )، وتترجم كل صفحة باستخدام swiftling_machine_translate_subject()، وتسجّلها مع ضبط driver على server.

تتحكم جهة واحدة في تشغيل اللغة في كل مرة: فالجهة التي تسجّل التشغيل تظل متحكمة فيه إلى أن يتوقف (stopped) أو يكتمل أو لا يحرز أي تقدّم لمدة ثلاث دقائق (المتصفح) أو خمس دقائق (الخادم). وفي هذه الأثناء، يُرفض طلب الجهة الأخرى مع swiftling_translate_all_busy (409). يبيّن driver في حالة التشغيل الجهة التي تتحكم فيه حاليًا، وتوضّح بطاقة اللغة على الشاشة عندما يتحكم الخادم في تشغيلها، ولا يمكن اختيارها.

swiftling_editor_actions

إجراء، منذ الإصدار 7 من الخطافات. يُنفَّذ في رأس محرر الترجمة، بعد الأدوات التي تملأ الحقول الفارغة، لتعرض الإضافة أداتها الخاصة.

  • array $subject: ما تجري ترجمته؛ انظر swiftling_subject().
  • array $language: اللغة المعروضة، كما تُرجعها swiftling_languages().
  • Service|null $service: خدمة الترجمة التي تترجمه، أو قيمة فارغة.

يُحمَّل البرنامج النصي الخاص به عبر swiftling_admin_screen_assets في swiftling-translation بعد swiftling-editor، ويتعامل مع الحقول من خلال window.swiftlingEditor، بعد أن تصبح ready صحيحة أو يُطلق الحدث swiftling:editor-ready على document:

texts( states )The text fields translated in those states (machine, reviewed): key, state, characters of the original. Never one from WordPress, a theme or a plugin, one whose original changed, or one with changes not saved.
translateAgain( states )Translates those fields again with the service in use and saves them as machine translations, as “Translate empty fields” does: a promise of translated, failed and stopped (why the service stopped, or empty).
serviceThe name of the service in use, or empty.
dirty()How many fields have changes not saved.

اللغات

منذ الإصدار 10 من الخطافات، تتيح swiftling_switch_translation( $slug ) التبديل مؤقتًا إلى لغة للترجمة خارج الصفحة التي يقرؤها الزائر، مثل رسالة بريد إلكتروني إلى عميل تُكتب من لوحة الإدارة أو تُنشئها مهمة مجدولة. وخلال ذلك، تُقرأ القيم المخزنة والنصوص الواردة من الشيفرة والروابط بتلك اللغة، ويعمل WordPress بإعداداتها المحلية، إلى أن تُستدعى swiftling_resume_translation(). وتفعل swiftling_pause_translation() الشيء نفسه للغة الأصلية. يمكن تداخل هذه الاستدعاءات، ويحتاج كل استدعاء إلى استئنافه. وإذا لم يكن المعرّف المختصر لإحدى لغات الموقع، تُستخدم اللغة الأصلية. ويستخدم SwiftLing Pro هذه الآلية لكتابة رسائل WooCommerce إلى العميل بلغة الطلب.

swiftling_language_forgotten

إجراء. يُنفَّذ بعد حذف البيانات التي احتفظت بها لغة لم تعد ضمن لغات الموقع من شاشة اللغات، كي تتمكن الإضافة أيضًا من حذف ما تحتفظ به لتلك اللغة.

  • string $locale: الإعدادات المحلية للغة.
  • array $done: ما حُذف، من texts وcopies.

swiftling_starting_over

إجراء، متاح منذ الإصدار 11 من الخطافات. يُنفَّذ عند بدء SwiftLing من جديد من الإعدادات › عام، وقبل إزالة أي شيء، كي تتمكن الإضافة المبنية عليه من إزالة ما تحتفظ به، بينما لا يزال بإمكانها استخدام ما سيزيله SwiftLing لاحقًا، مثل مفتاح خدمة الترجمة. عند اختيار everything، يزيل SwiftLing بعد ذلك كل خيار وبيان مؤقت يحمل اسمه، بما في ذلك ما يبدأ بـswiftling_، حتى لو كان تابعًا لإضافة أخرى مثل SwiftLing Pro. حذف SwiftLing لا يزيل أي بيانات؛ فالبدء من جديد هو الطريقة الوحيدة لإزالة بياناته.

  • string $scope: إما everything، أو keep عند الاحتفاظ بالترجمات.

swiftling_started_over

إجراء. يُنفَّذ بعد بدء SwiftLing من جديد من الإعدادات › عام.

  • string $scope: إما everything، أو keep إذا احتُفظ بالترجمات.

swiftling_start_over_removed

مرشّح، متاح منذ الإصدار 11 من الخطافات. يضيف أسطرًا إلى قائمة ما تزيله عملية البدء من جديد في الإعدادات › عام، حتى يعرف المستخدم ما تزيله أيضًا إضافة مبنية على SwiftLing.

  • string[] $removed: أسطر نصية عادية.

swiftling_language_switcher

إجراء للقوالب. يعرض مُبدِّل اللغات؛ ولا يعرض شيئًا إذا لم يكن SwiftLing مفعّلًا.

  • array $args: وسيطات اختيارية، كما تقبلها swiftling_language_switcher(): style (dropdown، horizontal، vertical)، flag، name، code، current، class.
<?php do_action( 'swiftling_language_switcher', array( 'style' => 'horizontal' ) ); ?>

swiftling_switcher_html

مرشّح، متاح منذ الإصدار 8 من الخطافات. يتعامل مع HTML الخاص بمُبدِّل اللغات أينما عُرض (في القائمة، أو التذييل، أو المكوّن، أو الرمز المختصر، أو الودجت، أو عبر swiftling_language_switcher)، كي تتمكن الإضافة من إضافة محتوى إليه. يضيف SwiftLing Pro مُبدِّل العملات بجانبه. ولا يُستدعى عندما لا تتوفر لغة أخرى للتبديل إليها.

  • string $html: مُبدِّل اللغات، وهو عنصر div.swiftling-switcher.
  • array $args: خياراته: style (dropdown، horizontal، vertical)، flag، name، code، current، class، flag_size.

الصفحات

swiftling_hreflangs

مرشّح. العناوين البديلة للصفحة المعروضة، التي تُعرض كروابط hreflang.

  • array<string, string> $links: وسم اللغة أو x-default => العنوان.
  • array $page: عنوان الصفحة باللغة الأصلية من دون لغة (url)، والمنشور الذي تحدد ترجماته اللغات المتاحة لها (post، والقيمة 0 لصفحة المنشورات الرئيسية وصفحات الأرشيف)، وما يُنشئ عنوانها (build).

swiftling_search_limit

عامل تصفية. الحد الأقصى لعدد المنشورات التي يأخذها البحث الواحد من فهرس الترجمات.

  • int $limit
  • WP_Query $query

ذاكرات التخزين المؤقت

swiftling_purge_all

إجراء. يُنفَّذ مرة واحدة في نهاية طلب قد تصبح بعده كل الصفحات قديمة، لتمكين ذاكرات التخزين المؤقت للصفحات من مسح محتوياتها بالكامل.

swiftling_purge_urls

إجراء. يُنفَّذ مرة واحدة في نهاية طلب تصبح بعده بعض الصفحات قديمة، لتمكين ذاكرات التخزين المؤقت للصفحات من مسحها.

  • string[] $urls: العناوين بجميع اللغات التي أصبحت بها قديمة.
  • int[] $post_ids: المنشورات التي تنتمي إليها العناوين، لذاكرات التخزين المؤقت التي تمسح محتوياتها حسب المنشور.

السجلات والدعم

swiftling_log_areas

عامل تصفية. أقسام شاشة السجلات، مع أسماء مفهرسة حسب القسم، حتى تتمكن الإضافة من تسمية قسم خاص بها والكتابة في السجل نفسه باستخدام swiftling_log( $level, $area, $message, $args ).

  • array<string, string> $areas

swiftling_request_url

عامل تصفية. الوجهة التي تُرسل إليها طلبات دعم إضافة أو قالب أو نموذج، راجع includes/requests.php.

  • string $url