WPML
الحالة
محلولة
أُبلغ عنها لـ
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: ****.

جميع المشاكل المعروفة →