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 > תרגום מחרוזות ותרגם את המחרוזות עם ה־textdomain the-events-calendar וה־name TEC Calendar Slugs: ****.

כל התקלות הידועות →