Your IP : 216.73.216.196


Current Path : /home/icmq6107/clients/AKOFA/LaGazelleInfos/wp-content/plugins/sphere-post-views/inc/
Upload File :
Current File : /home/icmq6107/clients/AKOFA/LaGazelleInfos/wp-content/plugins/sphere-post-views/inc/translate.php

<?php

namespace Sphere\PostViews;

/**
 * Obtains translation data from objects.
 * 
 * @author Hector Cabrera <me@cabrerahector.com>
 * @author ThemeSphere
 */
class Translate
{
	/**
	 * Default language code.
	 *
	 * @var string
	 */
	private $default_language;

	/**
	 * Current language code.
	 * 
	 * @var string
	 */
	private $current_language;

	/**
	 * Retrieves the code of the default language.
	 *
	 * @return string|null
	 */
	public function get_default_language()
	{
		if (!$this->default_language) {
			$this->default_language = 
				function_exists('pll_default_language')
					? pll_default_language()
					: apply_filters('wpml_default_language', NULL);
		}

		return $this->default_language;
	}

	/**
	 * Retrieves the code of the currently active language.
	 *
	 * @return string|null
	 */
	public function get_current_language()
	{
		if (!$this->current_language) {
			$this->current_language = 
				function_exists('pll_current_language')
					? pll_current_language() 
					: apply_filters('wpml_current_language', NULL);
		}

		return $this->current_language;
	}

	/**
	 * Sets the code of the currently active language.

	 * @return string|null
	 */
	public function set_current_language($code = null)
	{
		$this->current_language = $code;
	}

	/**
	 * Gets language locale.
	 *
	 * @param   string      $lang   Language code (eg. 'es')
	 * @return  string|bool
	 */
	public function get_locale($lang = null)
	{
		// Polylang support
		if (function_exists('PLL')) {
			$lang_object = PLL()->model->get_language($lang);
			if ($lang_object && isset($lang_object->locale)) {
				return $lang_object->locale;
			}
			
		} else {

			// WPML support
			global $sitepress;
			if (is_object($sitepress) && method_exists($sitepress, 'get_locale_from_language_code')) {
				return $sitepress->get_locale_from_language_code($lang);
			}
		}

		return false;
	}

	/**
	 * Retrieves the ID of an object.
	 *
	 * @param    integer    $object_id
	 * @param    string     $object_type
	 * @param    boolean    $return_original_if_missing
	 * @param    string     $lang_code
	 * @return   integer
	 */
	public function get_object_id($object_id = null, $object_type = '', $return_original_if_missing = true, $lang_code = null)
	{
		$object_type = $object_type ?: get_post_type();
		if (!$object_type) {
			$object_type = 'post';
		}

		return apply_filters(
			'wpml_object_id',
			$object_id,
			$object_type,
			$return_original_if_missing,
			null == $lang_code ? $this->get_current_language() : $lang_code
		);
	}

	/**
	 * Translates URL.
	 *
	 * @param   string      $original_permalink
	 * @param   string      $lang
	 * @return  string
	 */
	public function url($original_permalink, $lang)
	{
		return apply_filters('wpml_permalink', $original_permalink, $lang);
	}

	/**
	 * Retrieves the language code of an object.
	 *
	 * @param    integer    $object_id
	 * @param    string     $object_type
	 * @return   string|null
	 */
	public function get_object_lang_code($object_id = null, $object_type = 'post')
	{
		return apply_filters(
			'wpml_element_language_code',
			null,
			[
				'element_id' => $object_id,
				'element_type' => $object_type
			]
		);
	}
}