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];
}