- الحالة
- محلولة
- أُبلغ عنها لـ
- WPML Multilingual CMS 4.6.4
- الإضافة/القالب ذو الصلة
- The Events Calendar
- وسوم الموضوع
- Compatibility
نظرة عامة على المشكلة
في بعض الحالات، يوجد تباين في كيفية التعامل مع ترجمات روابط التقويم في إضافة The Events Calendar (TEC) عند استخدامها مع WPML. بدلاً من عرض المصطلح المترجم المتوقع، يظهر رابط التاريخ بشكل غير صحيح كالتالي (/?:month|monat|miesic|….)، على سبيل المثال.
ملاحظة: يُفترض أن هذه المشكلة قد حُلت. ومع ذلك، تلقينا تقريراً مشابهاً مؤخراً.
حل بديل مؤقت
يُرجى التأكد من أخذ نسخة احتياطية كاملة لموقعك قبل المتابعة.
- اذهب إلى الأعضاء > الملف الشخصي واضبط لغتك الافتراضية لتكون لغة المستخدم.
- اذهب إلى إعدادات > الروابط الدائمة وأعد الحفظ. أحياناً يحل هذا الإجراء المشكلة.
- إذا لم يكن الأمر كذلك، فأضف الكود التالي إلى ملف functions.php الخاص بك:
/* * WPML Workaround for compsupp-6815 */ add_filter( 'tribe_rewrite_canonical_url', 'wpml_compsupp6815_resolve_missing_urls', 10, 3 ); function wpml_compsupp6815_resolve_missing_urls( $resolved, $url, $object ) { if ( class_exists('Sitepress') ) { $wpml_default_lang = apply_filters('wpml_default_language', NULL ); $wpml_current_lang = apply_filters( 'wpml_current_language', NULL ); // Let's register the calendar strings so we can translate and use in the workaround if ($wpml_default_lang == $wpml_current_lang ) { $events_slug = $tec_options['eventsSlug']; $single_events_slug = $tec_options['singleEventSlug']; $tec_options = get_option('tribe_events_calendar_options'); do_action( 'wpml_register_single_string', 'the-events-calendar', 'TEC Calendar Slugs: '.substr($events_slug, 0, 20), $events_slug); do_action( 'wpml_register_single_string', 'the-events-calendar', 'TEC Calendar Slugs: '.substr($single_events_slug, 0, 20), $single_events_slug ); foreach ($tec_options['tribeEnableViews'] as $calendar_string) { do_action( 'wpml_register_single_string', 'the-events-calendar', 'TEC Calendar Slugs: '.substr($calendar_string, 0, 20), $calendar_string); } } // Check if the URL is not resolved yet. If not, we will resolve it with the translated strings if ( preg_match( '#/(/?:.+)#', $resolved ) ) { $resolved = preg_replace_callback( '#/(/?:.+?)#', function($matches) use ($url) { $options = explode('|', trim($matches[0], '/(?:)')); $slug = $options[0]; $translated_slug = apply_filters('wpml_translate_single_string', $slug , 'the-events-calendar', 'TEC Calendar Slugs: '.substr($slug, 0, 20) ); // Only apply the translation if the string already exists in the URL. If not, replace with the original. This may avoid possible 404 errors if (in_array(strtolower($translated_slug), $options) && $translated_slug != '') { $slug = $translated_slug; } return '/' . $slug; }, $resolved ); } } return $resolved; } - اذهب إلى إعدادات > الروابط الدائمة وأعد الحفظ مرة أخرى.
- بعد ذلك، تحقق من كيفية عمل الروابط الدائمة في الواجهة الأمامية لكل لغة.
- إذا استمرت المشكلة، فقد تظل لديك بعض السلاسل النصية غير المترجمة. في هذه الحالة، اذهب إلى WPML > ترجمة النصوص وترجم السلاسل النصية التي تحمل نطاق النص
the-events-calendarوالاسمTEC Calendar Slugs: ****.