You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
72 lines
1.9 KiB
72 lines
1.9 KiB
<?php
|
|
|
|
class WCML_Locale {
|
|
|
|
private $woocommerce_wpml;
|
|
private $sitepress;
|
|
|
|
/**
|
|
* WCML_Locale constructor.
|
|
*
|
|
* @param woocommerce_wpml $woocommerce_wpml
|
|
* @param SitePress $sitepress
|
|
*/
|
|
public function __construct( $woocommerce_wpml, $sitepress ) {
|
|
$this->woocommerce_wpml = $woocommerce_wpml;
|
|
$this->sitepress = $sitepress;
|
|
|
|
$this->load_locale();
|
|
|
|
add_filter( 'locale', [ $this, 'update_product_action_locale_check' ] );
|
|
}
|
|
|
|
public static function load_locale() {
|
|
return load_plugin_textdomain( 'woocommerce-multilingual', false, WCML_PLUGIN_FOLDER . '/locale' );
|
|
}
|
|
|
|
/**
|
|
* @deprcated since 5.3.6.
|
|
*
|
|
* @param string|false $lang_code
|
|
*
|
|
* @return bool|void
|
|
*/
|
|
public function switch_locale( $lang_code = false ) {
|
|
global $l10n, $st_gettext_hooks;
|
|
static $original_l10n;
|
|
|
|
if ( ! empty( $lang_code ) ) {
|
|
if ( null !== $st_gettext_hooks ) {
|
|
$st_gettext_hooks->switch_language_hook( $lang_code );
|
|
}
|
|
|
|
$original_l10n = isset( $l10n['woocommerce-multilingual'] ) ? $l10n['woocommerce-multilingual'] : null;
|
|
if ( null !== $original_l10n ) {
|
|
unset( $l10n['woocommerce-multilingual'] );
|
|
}
|
|
|
|
return load_textdomain(
|
|
'woocommerce-multilingual',
|
|
WCML_LOCALE_PATH . '/woocommerce-multilingual-' . $this->sitepress->get_locale( $lang_code ) . '.mo'
|
|
);
|
|
|
|
} else { // Switch back.
|
|
// phpcs:ignore WordPress.WP.GlobalVariablesOverride.Prohibited
|
|
$l10n['woocommerce-multilingual'] = $original_l10n;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Change locale to saving language - needs for sanitize_title exception wcml-390
|
|
*
|
|
* @param string $locale
|
|
*
|
|
* @return false|string
|
|
*/
|
|
public function update_product_action_locale_check( $locale ) {
|
|
if ( isset( $_POST['action'] ) && 'wpml_translation_dialog_save_job' === $_POST['action'] ) {
|
|
return $this->sitepress->get_locale( $_POST['job_details']['target'] );
|
|
}
|
|
return $locale;
|
|
}
|
|
}
|
|
|