我制作了一个wordpress主题,并用两种语言(EN和DE)进行设置。我还制作了所需的mo文件。我在开头的wp-config.php中将german定义为默认语言。一切正常但我对AJAX请求有一些问题:它没有加载正确的语言文件。
我的情景:
我通过AJAX创建了一个Button / Link请求数据。像这样的东西(javascript):
jQuery('#button').click(function(){
jQuery.ajax({
url: "http://myexampledomain.com/wp-admin/admin-ajax.php?lang=en",
data: { action: 'my_action', id : 123 },
type: "POST",
}).done(function (data){
alert(data);
});
});
如您所见,我正在尝试用英语加载我的信息(url =>?lang = en)。我在我的functions.php中写了这段代码:
add_action("wp_ajax_nopriv_my_action", "my_action");
add_action("wp_ajax_my_action", "my_action");
function my_action(){
echo __( 'ID nicht gefunden:', 'mytheme' ) . $_POST['id'] ;
exit;
}
我的问题是,警告“ ID nicht gefunden:123 ”会弹出,但它应该是“ ID not found:123 ”。
似乎wordpress没有加载正确的语言文件。
为了解决这个问题,我在我的functions.php中尝试了以下内容(但它没有用):
add_filter( 'locale', 'my_theme_localized' );
function my_theme_localized( $locale ){
if ( isset( $_GET['lang'] ) && $_GET['lang']=='en' ){
return 'en_US';
}
return 'de_DE';
}
我还使用了一些插件:XILI语言,qTranslate和Polylang。 结果是只有qTranslate能够通过AJAX请求加载正确的语言文件。 但qTranslate并不是我正在处理的某些任务的最佳解决方案。
我还找到了一个“解决方法”,通过将以下内容写入wp-config.php来加载正确的mo文件:
if(isset( $_GET['lang'] ) && $_GET['lang']=='en')
define('WPLANG', 'en_US');
else
define('WPLANG', 'de_DE');
但我不喜欢这个黑客(修改wordpress核心文件)。
使用AJAX请求中的$ _GET ['lang']参数是否有很好的解决方案让wordpress加载了相应的mo文件?我的functions.php需要哪些代码?还有其他有效的解决方案吗?
答案 0 :(得分:0)
我遇到了同样的问题,将下面的代码放在<?PHP
下,并解决了我的问题
load_theme_textdomain( LANG, get_template_directory() . '/lang' );
LANG是您的语言文件名