我希望当有人访问我的WordPress页面时,可以加载他所选语言的.po(语言)包。目前,通过在URL中添加?lang=参数,可以更改语言。但是我希望根据浏览器语言选择正确的语言。
我的代码:
显示了正确的语言,即“de_DE”,但
编辑:当我使用
编辑2:这是因为它必须是de_DE(下划线),而不是de-DE(减号)...如何解决?
编辑3:最终它可以正常工作了。
我的代码:
<?php
// start the session
session_start();
$browserlang = " ".$_SERVER['HTTP_ACCEPT_LANGUAGE'];
// if there's a "lang" parameter in the URL...
if( isset( $_GET[ 'lang' ] ) ) {
// ...set a session variable named WPLANG based on the URL parameter...
$_SESSION[ 'WPLANG' ] = $_GET[ 'lang' ];
// ...and define the WPLANG constant with the WPLANG session variable
$locale = $_SESSION[ 'WPLANG' ];
echo 'Based on URL parameter';
// if there isn't a "lang" parameter in the URL...
} else {
// if the WPLANG session variable is already set...
if( isset( $_SESSION[ 'WPLANG' ] ) ) {
// ...define the WPLANG constant with the WPLANG session variable
$locale = $_SESSION[ 'WPLANG' ];
echo 'Based on session variable';
// if the WPLANG session variable isn't set...
} else {
// set the WPLANG constant to your default language code is (or empty, if you don't need it)
$locale = $browserlang;
echo 'Should be based on browser language. It is:' . $browserlang;
}
};
?>
$locale 用于设置语言并选择正确的.po文件。
现在我想默认将 $locale 设置为
$locale = 'en_US'
但是当有人进入默认语言为"de"、"de_DE"、"de_CH"或"de_AT"的页面时,应该是:
$locale = 'de_DE'
目前我正在使用的代码无法正常工作。
$browserlang = " ".$_SERVER['HTTP_ACCEPT_LANGUAGE'];
echo $browserlang;
显示了正确的语言,即“de_DE”,但
$locale = $browserlang
没有任何作用。另一方面,当我设置$locale = 'de_DE'
时,它可以正常工作... 感谢各位的帮助。编辑:当我使用
echo $locale
时,它显示为de-DE。这很奇怪,因为它不起作用...编辑2:这是因为它必须是de_DE(下划线),而不是de-DE(减号)...如何解决?
编辑3:最终它可以正常工作了。
" "
?如果你去掉它,它就应该可以工作了。 - putvandestr_replace('-','_',$browserlang);
- Gabriel Morettirequire_once( dirname( __FILE__ ) . '/wp-lang.php' )
。 - Pintolus