Sửa lỗi plugin qTranslate trên WordPress 3.9

Khi bạn nâng cấp blog lên phiên bản WordPress 3.9 nhưng bạn không thể nhìn thấy được nội dung của trang nữa mà trên màn hình chỉ hiện một màu trắng xóa, đặc biệt hơn blog của bạn đang sử dụng plugin qTranslate đi kèm thì bài viết này rất có thể sẽ giúp ích được cho bạn.

qTranslate là một trong những plugin cho WordPress làm blog đa ngôn ngữ tốt nhất hiện nay, tuy nhiên plugin này không phát triển phiên bản phù hợp cho WordPress phiên bản mới nhất, đây quả thật là một điều đáng tiếc đối với các bạn muốn làm nội dung của blog hiển thị trên nhiều ngôn ngữ khác nhau.

Nếu bạn đang dùng plugin qTranslate và bạn đã nâng cấp trang của mình lên WordPress 3.9 hoặc các phiên bản cao hơn phiên bản WordPress được qTranslate chấp nhận thì rất có thể trang của bạn sẽ gặp phải lỗi.

Sử dụng plugin qTranslate để làm blog đa ngôn ngữ

Chỉnh sửa trực tiếp trong phần code của plugin là việc làm không tốt và không khuyến khích các bạn thực hiện, nhưng để đạt được mục đích của mình thì bản thân các bạn nhiều khi cũng phải chịu khó một chút.

Đầu tiên bạn mở tập tin qtranslate_core.php của plugin này lên và tìm tới hàm qtrans_strftime:

/* BEGIN DATE TIME FUNCTIONS */

function qtrans_strftime($format, $date, $default = '', $before = '', $after = '') {
	// don't do anything if format is not given
	if($format=='') return $default;
	// add date suffix ability (%q) to strftime
	$day = intval(ltrim(strftime("%d",$date),'0'));
	$search = array();
	$replace = array();
	
	// date S
	$search[] = '/(([^%])%q|^%q)/';
	if($day==1||$day==21||$day==31) { 
		$replace[] = '$2st';
	} elseif($day==2||$day==22) {
		$replace[] = '$2nd';
	} elseif($day==3||$day==23) {
		$replace[] = '$2rd';
	} else {
		$replace[] = '$2th';
	}
	
	$search[] = '/(([^%])%E|^%E)/'; $replace[] = '${2}'.$day; // date j
	$search[] = '/(([^%])%f|^%f)/'; $replace[] = '${2}'.date('w',$date); // date w
	$search[] = '/(([^%])%F|^%F)/'; $replace[] = '${2}'.date('z',$date); // date z
	$search[] = '/(([^%])%i|^%i)/'; $replace[] = '${2}'.date('n',$date); // date i
	$search[] = '/(([^%])%J|^%J)/'; $replace[] = '${2}'.date('t',$date); // date t
	$search[] = '/(([^%])%k|^%k)/'; $replace[] = '${2}'.date('L',$date); // date L
	$search[] = '/(([^%])%K|^%K)/'; $replace[] = '${2}'.date('B',$date); // date B
	$search[] = '/(([^%])%l|^%l)/'; $replace[] = '${2}'.date('g',$date); // date g
	$search[] = '/(([^%])%L|^%L)/'; $replace[] = '${2}'.date('G',$date); // date G
	$search[] = '/(([^%])%N|^%N)/'; $replace[] = '${2}'.date('u',$date); // date u
	$search[] = '/(([^%])%Q|^%Q)/'; $replace[] = '${2}'.date('e',$date); // date e
	$search[] = '/(([^%])%o|^%o)/'; $replace[] = '${2}'.date('I',$date); // date I
	$search[] = '/(([^%])%O|^%O)/'; $replace[] = '${2}'.date('O',$date); // date O
	$search[] = '/(([^%])%s|^%s)/'; $replace[] = '${2}'.date('P',$date); // date P
	$search[] = '/(([^%])%v|^%v)/'; $replace[] = '${2}'.date('T',$date); // date T
	$search[] = '/(([^%])%1|^%1)/'; $replace[] = '${2}'.date('Z',$date); // date Z
	$search[] = '/(([^%])%2|^%2)/'; $replace[] = '${2}'.date('c',$date); // date c
	$search[] = '/(([^%])%3|^%3)/'; $replace[] = '${2}'.date('r',$date); // date r
	$search[] = '/(([^%])%4|^%4)/'; $replace[] = '${2}'.$date; // date U
	$format = preg_replace($search,$replace,$format);
	return $before.strftime($format, $date).$after;
}

Bạn chỉnh sửa phần giá trị trả về, xóa đi biến $before ở phía trước và sau đó lưu lại. Cụ thể là bạn sửa đoạn code sau:

return $before.strftime($format, $date).$after;

Thành đoạn code sau:

return strftime($format, $date).$after;

Nếu chính sửa trực tiếp trong chức năng Editor của plugin thì chỉ cần lưu lại là xong, nếu tải về trên máy thình lưu lại tập tin và upload đè lên tập tin cũ của plugin nhé bạn. Chúc bạn thành công.

Gửi bình luận của bạn 3 bình luận

  1. Cho mình hỏi mình sử dụng qTranslate để làm 2 ngôn ngữ tiếng Nhật và tiếng Việt trang web mình có chức năng search nhưng khi mình search ở thì nội dung nó ra trang tiếng Nhật không ra tiếng Việt
    Mình có cần phải chỉnh gì không để khi search ở trang ngôn ngữ nào thì kết quả trả về ngôn ngữ đó ???

Gửi bình luận

Địa chỉ email của bạn sẽ được giữ bí mật. Những mục bắt buộc được đánh dấu *