WPML
Trạng thái
Đã giải quyết
Được báo cáo cho
WPML Multilingual CMS 4.6.4
Plugin/giao diện liên quan
The Events Calendar
Thẻ chủ đề
Compatibility

Tổng quan về lỗi

Trong một số trường hợp nhất định, có sự không nhất quán trong cách xử lý các bản dịch liên kết lịch trong plugin The Events Calendar (TEC) khi sử dụng cùng WPML. Thay vì hiển thị thuật ngữ đã dịch như mong đợi, liên kết ngày lại hiển thị không chính xác, ví dụ như dưới dạng (/?:month|monat|miesic|….).

Lưu ý: Vấn đề này đáng lẽ đã được giải quyết. Tuy nhiên, chúng tôi đã nhận được một báo cáo tương tự gần đây.

Giải pháp tạm thời

Vui lòng đảm bảo đã tạo bản sao lưu toàn bộ cho trang web của bạn trước khi tiếp tục.


  • Đi tới Người dùng > Hồ sơ của bạn và đặt ngôn ngữ mặc định của bạn làm Ngôn ngữ người dùng.

  • Đi tới Cài đặt > Đường dẫn tĩnh và lưu lại. Đôi khi hành động này sẽ giải quyết được sự cố.

  • Nếu sự cố chưa được giải quyết, hãy thêm đoạn mã sau vào tệp functions.php của bạn:
    /*
    *  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;
    }
  • Đi tới Cài đặt > Đường dẫn tĩnh và lưu lại một lần nữa.
  • Sau đó, hãy kiểm tra cách các đường dẫn tĩnh hoạt động trên giao diện người dùng cho từng ngôn ngữ.
  • Nếu sự cố vẫn tiếp diễn, có thể bạn vẫn còn một số chuỗi chưa dịch. Trong trường hợp đó, hãy đi tới WPML > Dịch chuỗi và dịch các chuỗi có textdomain the-events-calendar và name TEC Calendar Slugs: ****.

Tất cả các lỗi đã ghi nhận →