Lập trình đa ngôn ngữ trong PHP

Saturday, January 03, 2015
Lập trình đa ngôn ngữ và đa template bằng php là một vấn đề cực kỳ nan giải của các lập trình viên
Cách 1: Tạo ra các file ngôn ngữ tương ứng. Ví dụ: vi.lng.php và en.lng.php
Cách 2: Sử dụng Google Translate. Tuy nhiên cách này sẽ gặp phải vấn đề là nhỡ đâu Google dịch sai ý nghĩa của câu từ thì sao, hoặc dịch từ tiếng nước ngoài sang tiếng Việt mà chúng ta cảm thấy không ưng ý hay hài lòng.
Trong bài viết hướng dẫn ngay sau đây, mình sẽ hướng dẫn các bạn một cách thật cụ tỉ nhất có thể. Các bạn chỉ cần đọc một lần là sẽ làm được ngay!
Mình sẽ hướng dẫn các bạn làm theo cách đầu tiên (cách 1).
Đầu tiên các bạn tạo 1 project mới, có cấu trúc thư mục giống như hình bên dưới.

Đầu tiên các bạn tạo 1 folder và đặt tên nó là languages
Trong folder này, các bạn tạo ra 2 file ngôn ngữ, 1 cho tiếng Việt và 1 cho tiếng Anh. Đó là vi.lng.php và en.lng.php
2 file này có dữ liệu như sau

Code vi.lng.php


<?php
$main[‘language’] = “Ngôn ngữ”;

$main[‘welcome’] = “Chào mừng đến với blog PHPGO”;

$main[‘author’] = “Đây là blog của tác giả Lưu Văn Phong”;

$main[‘en-en’] = “Tiếng Anh”;

$main[‘en-vi’] = “Tiếng Việt”;

?>

en.lng.php

<?php

$main[‘language’] = “Language”;

$main[‘welcome’] = “Welcome to PHPGO blog”;

$main[‘author’] = “This is the blog of Luu Van Phong”;

$main[‘en-en’] = “English”;

$main[‘en-vi’] = “Vietnamese”;

?>


Các bạn chú ý nhé! Ngôn ngữ cho màn hình nào thì hãy đặt tên sao cho giống với màn hình đó. Ví dụ: mình đang xây dựng đa ngôn ngữ cho màn hình main.php, cho nên như các bạn có thể thấy mình bắt đầu bằng $main[‘language’] = “Language”;
Mình tạo ra một class tên là LanguageHelper để giúp xử lý việc trả về ngôn ngữ mà user đã lựa chọn từ dropdownlist.
<?php
/**

* Hiển thị giao diện đa ngôn ngữ của website

* @author Lưu Văn Phong <luuvanphong@outlook.com>

* @link http://phpgo.wordpress.com Tất cả các vấn đề liên quan đến PHP

*/



class LanguageHelper {

/**

* Kiểm tra xem user chọn hiển thị ngôn ngữ gì từ Dropdownlist

* Nếu chọn Tiếng Việt thì hiển thị Tiếng Việt, ngược lại thì hiển thị Tiếng Anh

* Mặc định ban đầu là Tiếng Việt

*/

function checkLang()

{

if (isset($_GET[‘lang’]))

{ 

$lang = $_GET[‘lang’];

return “languages/$lang.lng.php”;

}

else return “languages/vi.lng.php”;

}

}

?>

Và cuối cùng là việc hiển thị giao diện đa ngôn ngữ ở trang main.php
<!DOCTYPE html>

<html>

<head>

<meta http-equiv=”Content-Type” content=”text/html; charset=UTF-8″>

<title>Website đa ngôn ngữ trong PHP</title>

<!– Xử lý việc thay đổi ngôn ngữ khi user lựa chọn trong Dropdownlist –>

<script language=”javascript”>

function changeValue(val)

{

if (val===”vi”) {

window.location.href = “?lang=vi”; }

else { 

window.location.href = “?lang=en”; }

}

</script>

</head>

<body>

<?php

/**

* Hiển thị giao diện đa ngôn ngữ của website

* @author Lưu Văn Phong <luuvanphong@outlook.com>

* @link http://phpgo.wordpress.com Tất cả các vấn đề liên quan đến PHP

*/



// Include LanguageHelper class

include_once ‘LanguageHelper.php';



// Gọi hàm checkLang để xem user chọn ngôn ngữ nào

$object = new LanguageHelper();

$lang = $object->checkLang();



// User chọn ngôn ngữ nào thì mình sẽ include file ngôn ngữ đó vào page

include_once($lang);



// Hiển thị giao diện ngôn ngữ dựa vào option được chọn

$vi = $main[‘en-vi’];

$en = $main[‘en-en’];

$language = $main[‘language’];

$welcome = $main[‘welcome’];

$author = $main[‘author’];



echo <<<_LANGUAGE_

<form> 

<b>$language:</b> 

<select name=”lang” id=”lang” onchange=”changeValue(this.value)”>



_LANGUAGE_;

if (isset($_GET[‘lang’]))

{

if ($_GET[‘lang’] == “vi”)

{

echo <<<_LANGUAGE_

<option value=”vi” selected=”selected”>$vi</option>

<option value=”en”>$en</option>

_LANGUAGE_;

}

else

{

echo <<<_LANGUAGE_

<option value=”vi”>$vi</option>

<option value=”en” selected=”selected”>$en</option>

_LANGUAGE_;

}

echo <<<_LANGUAGE_

</select>

<p>$welcome</p>

<p>$author</p>

</form>

_LANGUAGE_;

}

else

{

echo <<<_LANGUAGE_

<option value=”vi” selected=”selected”>$vi</option>

<option value=”en”>$en</option>

</select>

<p>$welcome</p>

<p>$author</p>

</form>

_LANGUAGE_;

}

?>

</body>

</html>
Hãy download code đa ngôn ngữ php nhé

No comments:

Post a Comment