register_strings(); foreach ( self::options() as $name ) { add_action( 'update_option_' . $name, array( $this, 'register_strings' ) ); } return; } foreach ( self::options() as $name ) { add_filter( 'option_' . $name, array( $this, 'translate' ), 20, 2 ); } } /** Register every non-empty setting so translators see it in the multilingual plugin's string screen. */ public function register_strings() { foreach ( self::options() as $name ) { $value = get_option( $name, '' ); if ( ! is_string( $value ) || '' === trim( $value ) ) { continue; } if ( function_exists( 'pll_register_string' ) ) { pll_register_string( $name, $value, self::GROUP, strlen( $value ) > 80 ); } do_action( 'wpml_register_single_string', self::GROUP, $name, $value ); } } /** Translate a stored setting into the current language. */ public function translate( $value, $name = '' ) { if ( ! is_string( $value ) || '' === $value ) { return $value; } if ( function_exists( 'pll__' ) ) { return pll__( $value ); } return (string) apply_filters( 'wpml_translate_single_string', $value, self::GROUP, (string) $name ); } }