Website đa ngôn ngữ trong PHP

Website đa ngôn ngữ trong PHP vẫn luôn là vấn đề muôn thuở của các lập trình viên.

Có 2 cách để hiển thị giao diện đa ngôn ngữ:

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.

planguage

Đầ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.phpen.lng.php

2 file này có dữ liệu như sau

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 https://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 https://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>

Các bạn có thể tải về toàn bộ source code tại đây! Chúc các bạn thành công!  🙂

Advertisements

Gửi email trong PHP

Gửi email trong PHP là 1 việc vô cùng đơn giản và dễ dàng. PHP đã cung cấp cho chúng ta một function gửi mail là

mail($to, $subject, $message, $additional_headers);

Việc của chúng ta là sử dụng nó, nhận các giá trị tương ứng mà user nhập vào, kiểm tra xem dữ liệu đó có hợp lệ hay không. Nếu hợp lệ thì cho phép Gửi, còn không thì bắt user nhập lại. Các bạn tham khảo code gửi email trong PHP mà mình viết ở bên dưới nhé!

<!DOCTYPE html>
<html>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=UTF-8″>
<title>Gửi email trong PHP</title>
</head>
<body>
<?php
/**
* @param string $eValue
* @return boolean
*/
function filterEmail($eValue)
{
// Thanh lọc những ký tự không mong muốn mà user nhập vào
$eValue = filter_var($eValue,FILTER_SANITIZE_EMAIL);

// Nếu địa chỉ email điền vào không đúng định dạng thì báo lỗi
if (filter_var($eValue,FILTER_VALIDATE_EMAIL)) return true;
else return false;
}

/** Kiểm tra giá trị email nhập vào
* Nếu email người gửi khác rỗng thì chúng ta sẽ đi kiểm tra xem email của
*  họ có chứa ký tự không mong muốn hay không?
* Nếu hợp lệ thì gửi đi và thông báo thành công.
* Nếu không thì giữ nguyên form và bắt user thao tác lại.
*/
if (isset($_REQUEST[’emailfrom’]))
{
$isValid = filterEmail($_REQUEST[’emailfrom’]);
if ($isValid==FALSE)
echo “Email người gửi không hợp lệ. Vui lòng nhập lại”;
else
{
$emailfrom = $_REQUEST[’emailfrom’];
$title = $_REQUEST[‘title’];
$content = $_REQUEST[‘content’];
mail(“luuvanphong@outlook.com”, $title, $content, $emailfrom);
echo “Chúng tôi đã nhận được ý kiến của bạn! Xin chân thành cám ơn!”;
}
}
else
{
// Sử dụng heredoc để hiển thị HTML form
echo <<<_EMAIL_
<form id=”frmEmail” method=”POST” action=”index.php”>
Hòm thư của bạn: <input type=”text” name=”emailfrom” style= “width:140px;” /><br />
Tiêu đề: <input type=”text” name=”title” style= “width:200px;” /><br />
Nội dung:<br />
<textarea name=”content” rows=”10″ cols=”50″></textarea><br />
<input type=”submit” name=”send” value=”Gửi” />
</form>
_EMAIL_;
}
?>
</body>
</html>

Cộng đồng PHP Việt Nam

Cộng đồng PHP Việt Nam hiện tại có rất rất nhiều thành viên. Những thành viên đó đang ngày ngày đem kiến thức và tài năng của mình để làm việc, để cống hiến và để giúp đỡ những thành viên khác.

Hiện tại diễn đàn về PHP không nhiều, mà chỉ quy tụ ở 1 số diễn đàn công nghệ trong nước. Cụ thể PHP đang chỉ là mục nhỏ, mục con trong rất nhiều mục trên diễn đàn IT nào đó. Chứ không phải nội dung chính của forum đó là bàn luận, thảo luận về PHP.

PHP GO là blog mình lập ra với mục đích là chỉ mang đến cho các bạn 1 chủ đề duy nhất là PHP. Blog của mình sẽ không nói về ngôn ngữ .NET, C# hay Java, cho dù mình có khả năng chia sẻ và code ở cả 2 ngôn ngữ đó.

Hi vọng PHP GO sẽ được các bạn quan tâm và đón nhận!

Chúc cho cộng đồng PHP Việt Nam ngày càng đông đảo, ngày càng tài năng để giúp cho nền công nghệ thông tin của Việt Nam ngày càng phát triển!

Tạo #region trong PHP như của C# như thế nào?

Với 1 website được viết bằng ngôn ngữ PHP thì số lượng dòng code phải viết rất nhiều. Điều đó thật khó để cho các lập trình viên có thể kiểm soát được. Thay vào đó chúng ta sẽ nhóm những đoạn code có cùng chức năng vào 1 region. Việc đó sẽ làm cho code của chúng ta gọn hơn, dễ thao tác, dễ tìm và dễ quản lý hơn.

Nếu các bạn đang dùng NetBeans IDE để lập trình PHP thì việc tạo region là 1 việc vô cùng đơn giản!

Các bạn chỉ cần gõ fcom sau đó ấn Tab là chương trình sẽ tự  động sinh ra region cho các bạn!

// <editor-fold defaultstate=”collapsed” desc=”_GETDATA_”>

//Your code goes here

// </editor-fold>

Các bạn có thể thấy mình vừa tạo xong 1 region có tên là _GETDATA_ một cách rất nhanh chóng và dễ dàng!  

Hiển thị tiếng Việt trong PHP

Khi lập trình với PHP chúng ta hay gặp trường hợp không hiển thị được ký tự Unicode, không hiển thị được tiếng Việt.

Ví dụ: thay vì hiển thị là Lưu Văn Phong, website của chúng ta lại hiển thị là L?u V?n Phong

Lý do là vì khi lấy data từ database ra, chúng ta chưa set names cho nó là utf8. Làm như vậy để thông báo cho hệ thống biết chúng ta sẽ lấy ra ký tự unicode và chương trình sẽ phải hiển thị những data đó dưới dạng Unicode. Cụ thể chúng chỉ cần thêm đoạn code sau vào chương trình của chúng ta là được!

function GetDataFromDB($query)
{
// Get all records from selected table
mysql_query(“SET NAMES ‘UTF8′”);
$results = mysql_query($query);

return $results;
}

Import file .sql có size > 2MB trong phpMyAdmin

Bạn có 1 file .sql có dung lượng 7MB nhưng khi import trong phpMyAdmin thì nó lại hiển thị thông báo là You probably tried to upload a file that is too large. Please refer to documentation for a workaround for this limit. hoặc 1 thông báo tương tự.

Lý do là vì hệ thống đang config upload_max_filesize = 2MB -> Bạn không thể upload 1 file .sql > 2MB được!

Để thay đổi size của file muốn import các bạn làm như sau:

C:\xampp\php –> Tìm file php.ini và chỉnh sửa 
hoặc
C:\wamp\apache\php.ini

Các bạn tìm upload_max_filesize và chỉnh sửa nó lên 64MB nhé!

Cài đặt và config Yii framework với NetBeans

Hiện tại mình đang lập trình PHP + Yii framework trên NetBeans IDE. Nếu bạn nào cũng đang sử dụng NetBeans để lập trình PHP và muốn sử dụng Yii framework thì các bạn làm theo các bước sau đây! 

1) Các bạn phải cài NetBeans IDE. Download tại link dưới (các bạn chọn download ở cột PHP nhé)
https://netbeans.org/downloads/

2) Các bạn cài đặt XAMPP (thằng này là all in one nhé. Cài thằng này các bạn sẽ cài vào máy những phần mềm sau đây: Apache, MySQL, FileZilla, Mercury, Tomcat). Để sử dụng dịch vụ nào thì các bạn phải start dịch vụ đó lên nhé. Nếu các bạn đang sử dụng Skype thì phải tắt thằng này đi trước, bật MySQL lên và bật lại Skype nhé. Bởi vì cả 2 thằng đang sử dụng chung cổng 80 nên sẽ sinh ra conflict)
http://sourceforge.net/projects/xampp/

xampp

3) Các bạn download Yii framework về và giải nén. Đổi tên folder từ yii-1.1.13.e9e4a0 thành yii cho ngắn gọn rồi copy và paste vào thư mục C:\xampp\htdocs
http://www.yiiframework.com/download/

4) Sau khi cài NetBeans và XAMPP xong, các bạn tiến hành chạy (bật) NetBeans lên. Sau đó các bạn tiến hành theo các bước như hình dưới:
Từ menu chọn Tools -> Plugins -> Available Plugins -> Tick vào PHP Yii framework -> Install

plugin

5) Bây giờ chúng ta sẽ tiến hành config. Từ menu các bạn chọn Tools -> Options -> PHP tab -> General tab -> Browse đến C:\xampp\php\php.exe

general

Tiếp tục các bạn chọn tab Yii và Browse tới C:\xampp\htdocs\yii\framework\yiic.php

yii

Vậy là xong rùi đấy!

Bây giờ các bạn có thể tiến hành tạo New Project với Yii framework rùi! Có gì không hiểu hoặc khó khăn các bạn cứ hỏi mình ngay tại post này nhé!