isset($new_instance['style']) && 'list' === $new_instance['style'] ? 'list' : 'dropdown', ); } } } function aitmt_fallback_register_elementor_widget_legacy() { if (!did_action('elementor/widgets/register') && class_exists('\Elementor\Plugin')) { aitmt_fallback_register_elementor_widget(\Elementor\Plugin::instance()->widgets_manager); } } function aitmt_fallback_register_elementor_widget($widgets_manager) { if (!$widgets_manager || !class_exists('\Elementor\Widget_Base') || !class_exists('\Elementor\Controls_Manager')) { return; } if (!class_exists('AITMT_Fallback_Elementor_Switcher_Widget')) { class AITMT_Fallback_Elementor_Switcher_Widget extends \Elementor\Widget_Base { public function get_name() { return 'aitmt_language_switcher'; } public function get_title() { return __('AI Translate Language Switcher', 'ait-multilingual-translate'); } public function get_icon() { return 'eicon-globe'; } public function get_categories() { return array('general'); } public function get_keywords() { return array('language', 'translate', 'translation', 'ai', 'wp ai'); } protected function register_controls() { $this->start_controls_section( 'aitmt_content', array('label' => __('Language Switcher', 'ait-multilingual-translate')) ); $this->add_control( 'layout_type', array( 'label' => __('Layout type', 'ait-multilingual-translate'), 'type' => \Elementor\Controls_Manager::SELECT, 'default' => 'dropdown', 'options' => array( 'list' => __('List', 'ait-multilingual-translate'), 'dropdown' => __('Dropdown', 'ait-multilingual-translate'), 'buttons' => __('Buttons', 'ait-multilingual-translate'), 'flags_only' => __('Flags only', 'ait-multilingual-translate'), 'flags_name' => __('Flags + language name', 'ait-multilingual-translate'), 'name_only' => __('Language name only', 'ait-multilingual-translate'), ), ) ); $this->add_control( 'show_flags', array( 'label' => __('Show flags', 'ait-multilingual-translate'), 'type' => \Elementor\Controls_Manager::SWITCHER, 'label_on' => __('Yes', 'ait-multilingual-translate'), 'label_off' => __('No', 'ait-multilingual-translate'), 'return_value' => 'yes', 'default' => '', ) ); $this->add_control( 'show_language_name', array( 'label' => __('Show language name', 'ait-multilingual-translate'), 'type' => \Elementor\Controls_Manager::SWITCHER, 'label_on' => __('Yes', 'ait-multilingual-translate'), 'label_off' => __('No', 'ait-multilingual-translate'), 'return_value' => 'yes', 'default' => 'yes', ) ); $this->add_control( 'show_language_code', array( 'label' => __('Show language code', 'ait-multilingual-translate'), 'type' => \Elementor\Controls_Manager::SWITCHER, 'label_on' => __('Yes', 'ait-multilingual-translate'), 'label_off' => __('No', 'ait-multilingual-translate'), 'return_value' => 'yes', 'default' => '', ) ); $this->add_control( 'show_current_language', array( 'label' => __('Show current language', 'ait-multilingual-translate'), 'type' => \Elementor\Controls_Manager::SWITCHER, 'label_on' => __('Yes', 'ait-multilingual-translate'), 'label_off' => __('No', 'ait-multilingual-translate'), 'return_value' => 'yes', 'default' => 'yes', ) ); $this->add_control( 'hide_current_language', array( 'label' => __('Hide current language', 'ait-multilingual-translate'), 'type' => \Elementor\Controls_Manager::SWITCHER, 'label_on' => __('Yes', 'ait-multilingual-translate'), 'label_off' => __('No', 'ait-multilingual-translate'), 'return_value' => 'yes', 'default' => '', ) ); $this->add_control( 'open_current_page', array( 'label' => __('Open links in current page', 'ait-multilingual-translate'), 'type' => \Elementor\Controls_Manager::SWITCHER, 'label_on' => __('Yes', 'ait-multilingual-translate'), 'label_off' => __('No', 'ait-multilingual-translate'), 'return_value' => 'yes', 'default' => 'yes', ) ); $this->add_control( 'orientation', array( 'label' => __('Orientation', 'ait-multilingual-translate'), 'type' => \Elementor\Controls_Manager::SELECT, 'default' => 'horizontal', 'options' => array( 'horizontal' => __('Horizontal', 'ait-multilingual-translate'), 'vertical' => __('Vertical', 'ait-multilingual-translate'), ), ) ); $this->add_responsive_control( 'align', array( 'label' => __('Alignment', 'ait-multilingual-translate'), 'type' => \Elementor\Controls_Manager::CHOOSE, 'default' => 'left', 'options' => array( 'left' => array('title' => __('Left', 'ait-multilingual-translate'), 'icon' => 'eicon-text-align-left'), 'center' => array('title' => __('Center', 'ait-multilingual-translate'), 'icon' => 'eicon-text-align-center'), 'right' => array('title' => __('Right', 'ait-multilingual-translate'), 'icon' => 'eicon-text-align-right'), ), 'selectors' => array( '{{WRAPPER}} .aitmt-elementor-switcher' => 'text-align: {{VALUE}};', ), ) ); $this->end_controls_section(); $this->start_controls_section( 'aitmt_style', array( 'label' => __('Switcher Style', 'ait-multilingual-translate'), 'tab' => \Elementor\Controls_Manager::TAB_STYLE, ) ); if (class_exists('\Elementor\Group_Control_Typography')) { $this->add_group_control( \Elementor\Group_Control_Typography::get_type(), array( 'name' => 'typography', 'selector' => '{{WRAPPER}} .aitmt-fallback-switcher, {{WRAPPER}} .aitmt-fallback-switcher-link', ) ); } $this->add_control( 'text_color', array( 'label' => __('Text color', 'ait-multilingual-translate'), 'type' => \Elementor\Controls_Manager::COLOR, 'selectors' => array( '{{WRAPPER}} .aitmt-fallback-switcher, {{WRAPPER}} .aitmt-fallback-switcher-link' => 'color: {{VALUE}};', ), ) ); $this->add_control( 'hover_color', array( 'label' => __('Hover color', 'ait-multilingual-translate'), 'type' => \Elementor\Controls_Manager::COLOR, 'selectors' => array( '{{WRAPPER}} .aitmt-fallback-switcher-link:hover, {{WRAPPER}} .aitmt-fallback-switcher-link:focus, {{WRAPPER}} .aitmt-fallback-switcher-dropdown:hover, {{WRAPPER}} .aitmt-fallback-switcher-dropdown:focus' => 'color: {{VALUE}};', ), ) ); $this->add_control( 'active_language_color', array( 'label' => __('Active language color', 'ait-multilingual-translate'), 'type' => \Elementor\Controls_Manager::COLOR, 'selectors' => array( '{{WRAPPER}} .aitmt-fallback-switcher-link.is-current' => 'color: {{VALUE}};', ), ) ); $this->add_control( 'background_color', array( 'label' => __('Background color', 'ait-multilingual-translate'), 'type' => \Elementor\Controls_Manager::COLOR, 'selectors' => array( '{{WRAPPER}} .aitmt-fallback-switcher-dropdown, {{WRAPPER}} .aitmt-fallback-switcher-link' => 'background-color: {{VALUE}};', ), ) ); $this->add_control( 'border_color', array( 'label' => __('Border color', 'ait-multilingual-translate'), 'type' => \Elementor\Controls_Manager::COLOR, 'selectors' => array( '{{WRAPPER}} .aitmt-fallback-switcher-dropdown, {{WRAPPER}} .aitmt-fallback-switcher-link' => 'border-color: {{VALUE}};', ), ) ); $this->add_control( 'dropdown_background', array( 'label' => __('Dropdown background', 'ait-multilingual-translate'), 'type' => \Elementor\Controls_Manager::COLOR, 'selectors' => array( '{{WRAPPER}} .aitmt-fallback-switcher-dropdown' => 'background-color: {{VALUE}};', ), ) ); $this->add_responsive_control( 'border_radius', array( 'label' => __('Border radius', 'ait-multilingual-translate'), 'type' => \Elementor\Controls_Manager::SLIDER, 'size_units' => array('px', '%'), 'range' => array( 'px' => array('min' => 0, 'max' => 40), '%' => array('min' => 0, 'max' => 50), ), 'selectors' => array( '{{WRAPPER}} .aitmt-fallback-switcher-dropdown, {{WRAPPER}} .aitmt-fallback-switcher-link' => 'border-radius: {{SIZE}}{{UNIT}};', ), ) ); $this->add_responsive_control( 'padding', array( 'label' => __('Padding', 'ait-multilingual-translate'), 'type' => \Elementor\Controls_Manager::DIMENSIONS, 'size_units' => array('px', 'em', '%'), 'selectors' => array( '{{WRAPPER}} .aitmt-fallback-switcher-dropdown, {{WRAPPER}} .aitmt-fallback-switcher-link' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};', ), ) ); $this->add_responsive_control( 'gap', array( 'label' => __('Gap between items', 'ait-multilingual-translate'), 'type' => \Elementor\Controls_Manager::SLIDER, 'size_units' => array('px'), 'range' => array('px' => array('min' => 0, 'max' => 40)), 'selectors' => array( '{{WRAPPER}} .aitmt-fallback-switcher-list' => 'gap: {{SIZE}}{{UNIT}};', ), ) ); $this->add_responsive_control( 'dropdown_width', array( 'label' => __('Dropdown width', 'ait-multilingual-translate'), 'type' => \Elementor\Controls_Manager::SLIDER, 'size_units' => array('px', '%', 'em'), 'range' => array( 'px' => array('min' => 80, 'max' => 520), '%' => array('min' => 10, 'max' => 100), 'em' => array('min' => 4, 'max' => 40), ), 'selectors' => array( '{{WRAPPER}} .aitmt-fallback-switcher-dropdown' => 'width: {{SIZE}}{{UNIT}};', ), ) ); if (class_exists('\Elementor\Group_Control_Box_Shadow')) { $this->add_group_control( \Elementor\Group_Control_Box_Shadow::get_type(), array( 'name' => 'dropdown_shadow', 'label' => __('Dropdown shadow', 'ait-multilingual-translate'), 'selector' => '{{WRAPPER}} .aitmt-fallback-switcher-dropdown', ) ); } $this->end_controls_section(); } protected function render() { $settings = $this->get_settings_for_display(); $layout = isset($settings['layout_type']) ? sanitize_key((string) $settings['layout_type']) : (isset($settings['style']) ? sanitize_key((string) $settings['style']) : 'dropdown'); $orientation = isset($settings['orientation']) && 'vertical' === $settings['orientation'] ? 'vertical' : 'horizontal'; $align = isset($settings['align']) ? sanitize_key((string) $settings['align']) : 'left'; $display = array( 'show_flags' => isset($settings['show_flags']) && 'yes' === $settings['show_flags'], 'show_names' => !isset($settings['show_language_name']) || 'yes' === $settings['show_language_name'], 'show_codes' => isset($settings['show_language_code']) && 'yes' === $settings['show_language_code'], 'show_current' => !isset($settings['show_current_language']) || 'yes' === $settings['show_current_language'], 'hide_current' => isset($settings['hide_current_language']) && 'yes' === $settings['hide_current_language'], 'open_current_page' => !isset($settings['open_current_page']) || 'yes' === $settings['open_current_page'], 'orientation' => $orientation, ); echo '
' . esc_html($message) . '
' . esc_html__('Onboarding settings saved.', 'ait-multilingual-translate') . '
$language_row) : ?>
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
' . (string) ($entry['target_language'] ?? '')); ?> | |
|
|||
' . (isset($debug_result['target_language']) ? $debug_result['target_language'] : '')); ?>
|
|
' . esc_html((string) $value) . '
' . (isset($queue_result['target_language']) ? $queue_result['target_language'] : '')); ?>
→
' . (isset($debug_result['target_language']) ? $debug_result['target_language'] : '')); ?>
s