112 lines
No EOL
3.2 KiB
PHP
112 lines
No EOL
3.2 KiB
PHP
<?php
|
|
|
|
/**
|
|
* Class WPML_Setup_Step_One_Menu
|
|
*/
|
|
class WPML_Setup_Step_One_Menu extends WPML_SP_User {
|
|
|
|
/**
|
|
* @return string
|
|
*/
|
|
public function render() {
|
|
ob_start();
|
|
?>
|
|
<div class="wpml-section">
|
|
<div class="wpml-section-header">
|
|
<h3><?php esc_html_e( 'Current content language', 'sitepress' ) ?></h3>
|
|
</div>
|
|
|
|
<div class="wpml-section-content">
|
|
<form id="icl_initial_language" method="post">
|
|
<div class="wpml-section-content-inner">
|
|
<?php wp_nonce_field( 'icl_initial_language', 'icl_initial_languagenonce' ) ?>
|
|
<p class="wpml-wizard-instruction">
|
|
<label for="icl_initial_language_code"><?php esc_html_e( 'Before adding other languages, please select the language existing contents are written in:', 'sitepress' ) ?></label>
|
|
</p>
|
|
<?php
|
|
$def_lang = $this->default_lang_preset();
|
|
?>
|
|
<p>
|
|
<select id="icl_initial_language_code"
|
|
name="icl_initial_language_code">
|
|
<?php $languages = $this->sitepress->get_languages( $this->get_user_lang( $def_lang ) ); ?>
|
|
<?php foreach ( $languages as $lang ): ?>
|
|
<option <?php if ( $def_lang === $lang['code'] ): ?>selected="selected"<?php endif; ?>
|
|
value="<?php echo esc_attr( $lang['code'] ) ?>"><?php echo esc_html( $lang['display_name'] ) ?></option>
|
|
<?php endforeach; ?>
|
|
</select>
|
|
</p>
|
|
</div>
|
|
<footer class="clearfix text-right">
|
|
<input class="button-primary alignright" name="save" value="<?php esc_html_e( 'Next', 'sitepress' ) ?>"
|
|
type="submit"/>
|
|
</footer>
|
|
</form>
|
|
</div>
|
|
</div> <!-- .wpml-section -->
|
|
<?php
|
|
|
|
return ob_get_clean();
|
|
}
|
|
|
|
/**
|
|
* @param string $def_lang
|
|
*
|
|
* @return string
|
|
*/
|
|
private function get_user_lang( $def_lang ) {
|
|
$lang_code = null;
|
|
$current_user = wp_get_current_user();
|
|
|
|
if ( isset( $current_user->locale ) ) {
|
|
$lang_code = $this->locale_to_lang_code( $current_user->locale );
|
|
}
|
|
|
|
return $lang_code ? $lang_code : $def_lang;
|
|
}
|
|
|
|
/**
|
|
* @return string
|
|
*/
|
|
private function default_lang_preset() {
|
|
|
|
return $this->sitepress
|
|
->get_setting( 'existing_content_language_verified' )
|
|
? $this->sitepress->get_default_language()
|
|
: $this->def_lang_from_fallback();
|
|
}
|
|
|
|
/**
|
|
* @return string
|
|
*/
|
|
private function def_lang_from_fallback() {
|
|
$blog_current_lang = 0;
|
|
$wp_api = $this->sitepress->get_wp_api();
|
|
$wp_records = $this->sitepress->get_records();
|
|
if ( $blog_lang = $wp_api->get_option( 'WPLANG' ) ) {
|
|
$blog_current_lang = $this->locale_to_lang_code( $blog_lang );
|
|
}
|
|
if ( ! $blog_current_lang && ( $wp_lang_const = $wp_api->constant( 'WP_LANG' ) ) ) {
|
|
$blog_current_lang = $wp_records->icl_languages_by_default_locale( $wp_lang_const )->code();
|
|
$blog_current_lang = $blog_current_lang
|
|
? $blog_current_lang : $this->locale_to_lang_code( $wp_lang_const );
|
|
|
|
}
|
|
|
|
return $blog_current_lang ? $blog_current_lang : 'en';
|
|
}
|
|
|
|
/**
|
|
* @param string $locale
|
|
*
|
|
* @return false|string
|
|
*/
|
|
private function locale_to_lang_code( $locale ) {
|
|
$exp = explode( '_', $locale );
|
|
|
|
return $exp[0]
|
|
&& $this->sitepress->get_records()
|
|
->icl_languages_by_code( $exp[0] )->exists()
|
|
? $exp[0] : false;
|
|
}
|
|
}
|