function look_up_language() { // Language recognition (STELLA_CURRENT_LANG) for multisite should be in sunrise.php if( is_multisite() ) return; $use_lang = $this->langs['default']['prefix']; // Language recognition in rewrite_url function. only for subfolder situation if( $this->is_subfolder() && is_permalinks_enabled() ){ $this->set_current_language($use_lang); return; } if ( $this->use_hosts ): foreach ( $this->langs['others'] as $prefix => $lang ) { if ( $_SERVER['HTTP_HOST'] == $lang['host'] || $_SERVER['HTTP_HOST'] == 'www.' . $lang['host'] ) { $use_lang = $lang['prefix']; break; } } elseif ( ! is_permalinks_enabled() ) : // Non-permalinks variant. if ( isset($_GET['lang']) ) : foreach ( $this->langs['others'] as $prefix => $lang ) { if ( $_GET['lang'] == $lang['prefix'] ) { $use_lang = $lang['prefix']; break; } } endif; else: // Permalinks no-hosts variant. if( ! $this->is_subfolder() ){ //wp is not in subfolder $uri = $_SERVER['REQUEST_URI']; $code = substr( $uri, 0, 4 ); if ( '/' != substr( $code, -1 ) ) $code = $code . '/'; foreach ( $this->langs['others'] as $prefix => $lang ) { if ( ! ( false === strpos( $code, '/' . $lang['prefix'] . '/' ) ) ) { $use_lang = $lang['prefix']; break; } } } endif; $this->set_current_language($use_lang); } /** * Sets the current language * and also the locale * @param string $lang current language */ private function set_current_language($lang){ if( ! defined( 'STELLA_CURRENT_LANG' ) ) { define('STELLA_CURRENT_LANG', $lang); } add_filter('locale', array(&$this,'stella_setlocale'), 10); } /** * locale hook when load_theme_textdomain is present in functions.php * * * called by locale hook */ public function stella_setlocale( $locale ) { //for now we have these $locales = array( 'en' => 'en_US', 'fr' => 'fr_FR', 'zh' => 'zh_CN' ); return $locales[STELLA_CURRENT_LANG]; }