Files
doitinpoland.com/wp-content/plugins/sitepress-multilingual-cms/compatibility/disqus/wpml-compatibility-disqus.php
2023-09-12 21:41:04 +02:00

85 lines
2.3 KiB
PHP

<?php
class WPML_Compatibility_Disqus implements IWPML_Action {
const LANGUAGE_NOT_SUPPORTED = '';
/** @var SitePress */
private $sitepress;
/**
* @param SitePress $sitepress
*/
public function __construct( SitePress $sitepress ) {
$this->sitepress = $sitepress;
}
public function add_hooks() {
add_action( 'wp_footer', array( $this, 'set_language' ) );
}
public function set_language() {
if ( is_singular() ) {
$current_language = $this->get_current_lang();
if ( $current_language !== self::LANGUAGE_NOT_SUPPORTED ) {
echo '
<script type="text/javascript">
/**
* We define our custom disqus configs here. This function is invoked from:
* /disqus-comment-system/public/js/comment_embed.js by variable `disqus_config_custom`
*/
var disqus_config = function () {
this.language = "' . $current_language . '";
};
</script>';
}
};
}
/**
* @return string
*/
private function get_current_lang() {
$current_language = $this->sitepress->get_current_language();
$map = $this->get_lang_map();
return isset( $map[ $current_language ] ) ? $map[ $current_language ] : $current_language;
}
/**
* @return array
*/
private function get_lang_map() {
$map = array(
'bs' => self::LANGUAGE_NOT_SUPPORTED,
'de' => 'de_formal',
'es' => 'es_ES',
'ga' => self::LANGUAGE_NOT_SUPPORTED,
'hi' => self::LANGUAGE_NOT_SUPPORTED,
'is' => 'id',
'ku' => self::LANGUAGE_NOT_SUPPORTED,
'mn' => self::LANGUAGE_NOT_SUPPORTED,
'mo' => self::LANGUAGE_NOT_SUPPORTED,
'mt' => self::LANGUAGE_NOT_SUPPORTED,
'ne' => self::LANGUAGE_NOT_SUPPORTED,
'pa' => self::LANGUAGE_NOT_SUPPORTED,
'pt-br' => 'pt_BR',
'pt-pt' => 'PT_EU',
'qu' => self::LANGUAGE_NOT_SUPPORTED,
'so' => self::LANGUAGE_NOT_SUPPORTED,
'sr' => 'sr_CYRL',
'sv' => 'sv_SE',
'ta' => self::LANGUAGE_NOT_SUPPORTED,
'uz' => self::LANGUAGE_NOT_SUPPORTED,
'yi' => self::LANGUAGE_NOT_SUPPORTED,
'zh-hans' => 'zh',
'zh-hant' => 'zh_AHNT',
'zu' => 'af',
);
return apply_filters( 'wpml_disqus_language_map', $map );
}
}