get_top_level_item();
if ( empty( $current_item ) ) {
return '';
}
$out = '';
foreach ( $this->get_elements() as $element ) {
$out .= $element->get();
}
if ( empty( $out ) || ! $this->settings->show_wrapper ) {
return $out;
}
Assets::enqueue_frontend_scripts();
$cr = $this->settings->preserve_spacing ? "\n" : '';
$out = sprintf(
"{$cr}
",
$current_item,
$this->get_button(),
$out
);
$out = sprintf(
'<%1$s id="%2$s" class="%3$s" aria-label="%4$s">%5$s%1$s>',
$this->get_nav_tag(),
esc_attr( $this->settings->unique_id ),
esc_attr( implode( ' ', $this->get_wrapper_classes() ) ),
/* translators: accessibility text */
esc_attr__( 'Choose a language', 'polylang' ),
$out
);
return "{$cr}{$out}{$cr}";
}
/**
* Returns an instance of `Element\Nav`.
*
* @since 3.9
*
* @param PLL_Language $language Instance of `PLL_Language`.
* @return Element
*/
protected function get_element( PLL_Language $language ): Element {
return new Element( $language, $this->settings, $this->links );
}
/**
* Returns the markup of the current item.
*
* @since 3.9
*
* @return string
*/
private function get_top_level_item(): string {
if ( ! empty( $this->links->curlang ) ) {
$curlang = $this->links->curlang;
} else {
$curlang = $this->links->model->languages->get( $this->links->options['default_lang'] );
}
if ( empty( $curlang ) ) {
return '';
}
return $this->get_element( $curlang )->get_link();
}
/**
* Returns the markup of the button.
*
* @since 3.9
*
* @return string
*/
private function get_button(): string {
$svg = '';
return sprintf(
'',
/* translators: accessibility text */
esc_attr__( 'Open/Close languages submenu', 'polylang' ),
$svg
);
}
}