WPML
الحالة
محلولة بواسطة المطور
تم حلها في
MapPress 2.95.7
الإضافة/القالب ذو الصلة
MapPress Maps for WordPress
وسوم الموضوع
Compatibility

نظرة عامة على المشكلة

عند استخدام MapPress مع WPML، قد تلاحظ أن نقاط الاهتمام (POI) مثل المدن المحفوظة على خريطة لا تُترجم. يرجع ذلك إلى أن سلاسل POI تُحفظ بناءً على اللغة المستخدمة أثناء إنشائها ولا تتوفر تلقائيًا للترجمة.

حل بديل مؤقت

يُرجى التأكد من أخذ نسخة احتياطية كاملة لموقعك قبل المتابعة.


  • أضف الكود التالي إلى ملف functions.php في قالبك.
    // WPML Workaround for compsupp-4265: Translate Mappress POI fields
    if ( class_exists('Sitepress') ) { 
    
    	add_action('mappress_map_save', 'my_mappress_register_poi_strings');
    	function my_mappress_register_poi_strings($map) {
    
    		$fields = array('address','title','name','body');
    		if (empty($map->mapid) || empty($map->pois) || !is_array($map->pois))
    			return;
    
    		foreach ($map->pois as $i => $poi) {
    			foreach ($fields as $field) {
    				if (isset($poi->$field) && $poi->$field !== '') {
    					$key = "map_{$map->mapid}_poi_{$i}_{$field}";
    					do_action( 'wpml_register_single_string','mappress', $key, $poi->$field );
    				}
    			}
    		}
    	}
    
    	add_action('mappress_map_display', 'my_mappress_translate_poi_fields');
    	function my_mappress_translate_poi_fields($map) {
    
    		$fields = array('address','title','name','body');
    		if (empty($map->mapid) || empty($map->pois) || !is_array($map->pois))
    			return;
    
    		foreach ($map->pois as $i => $poi) {
    			foreach ($fields as $field) {
    				if (isset($poi->$field) && $poi->$field !== '') {
    					$key = "map_{$map->mapid}_poi_{$i}_{$field}";
    					$translated = apply_filters('wpml_translate_single_string', $poi->$field, 'mappress', $key);
    					$poi->$field = $translated;
    				}
    			}
    		}
    	}
    	
    }
            


  • أعد حفظ خرائطك في «MapPress > Maps».

  • اذهب إلى «WPML > ترجمة النصوص» وترجم السلاسل ضمن النطاق «mappress»

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