10/10/2018, 13:34

[HELP] Cách tạo session làm web đa ngôn ngữ trong PHP

Mình có 2 file en.phpvi.php lưu trong thư mục lang, giờ tạo session thế nào để làm được web đa ngữ trong php nhỉ!?
Mong các bạn giúp mình với.
Cảm ơn các bạn nhiều! ^^
thuyduongcd viết 15:47 ngày 10/10/2018
Code:
<?php
if (isset($_GET['lang'])){  // check GET trước
   $lang=strtolower($_GET['lang']);
   $_SESSION['lang']=$lang;
}elseif (isset($_SESSION['lang'])){
   $lang=strtolower($_SESSION['lang']);
}else{
   $lang="vi"; // default language
   $_SESSION['lang']="vi";
}
if (file_exists("lang/$lang.php")){
       include("lang/$lang.php");
}else{
// lang not exist, include default
       include("lang/vi.php");
       $_SESSION['lang']="vi";
}
?>
Mỗi lần muốn đổi ngôn ngữ, chỉ cần gọi http://yourdomain.com/index.php?lang="vi" hoặc http://yourdomain.com/index.php?lang="en". Sau này muốn thêm nhiều ngôn ngữ chỉ việc thêm file lang vào thư mục là ok
Minh Hoàng viết 15:44 ngày 10/10/2018
Cảm ơn thuyduongcd nhiều nha . . .^^
hoichobiet2212 viết 15:42 ngày 10/10/2018
Mình làm theo cách của bạn thuyduong thì bị thế này:
~> Khi ở 1 trang khác trang index.php, chọn ngôn ngữ tiếng anh hay tiếng việt thì nó lại trở về trang index.php.
~> Vậy làm sao để dù ko ở trang index.phpkhi thay đổi ngôn ngữ nó vẫn ở trang hiện tại nhỉ!? (như vậy mình cần phải đặt đoạn code trên vào tất cả mọi trang?? #:-s)
Mong các bạn giúp nha!
nokida viết 15:40 ngày 10/10/2018
có lẽ bạn có thể thay link ở phần chọn ngôn ngữ thành './index.php?'.$_SERVER['QUERY_STRING'].'&lang=vi' và
'./index.php?'.$_SERVER['QUERY_STRING'].'&lang=en'
hoichobiet2212 viết 15:46 ngày 10/10/2018
vậy code của bạn thuyduong sửa lại thế nào bạn!?
nokida viết 15:47 ngày 10/10/2018
Mình không biết bạn viết code theo cách gì, nếu bạn viết tất cả các request đều gửi về index.php (1) rồi dispatch hay là mỗi request, bạn có một file riêng (2) để xử lí mà không qua index.php (vd. http://yourdomain.com/login.php). Trong trường hợp (1), bạn không cần sửa gì, có thể put đoạn code của bạn thuyduong ở trang index.php. Trong trường hợp (2), bạn nên put đoạn code đó vào một file (vd. set_lang.php), rồi ở index.php và login.php (tất cả các file) đều require tới file set_lang.php đó.
thuyduongcd viết 15:47 ngày 10/10/2018
Dùng hàm này để lấy URL của trang hiện tại.
Code:
<?php
function curPageURL() {
 $pageURL = 'http';
 if ($_SERVER["HTTPS"] == "on") {$pageURL .= "s";}
 $pageURL .= "://";
 if ($_SERVER["SERVER_PORT"] != "80") {
  $pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
 } else {
  $pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
 }
 return $pageURL;
}
?>
Sau đó chèn đoạn code này vào chỗ thay đổi ngôn ngữ:
Code:
<?php 
echo '<a href="'.curPageURL().'&lang=vi">Tiếng Việt</a><br />'; 
echo '<a href="'.curPageURL().'&lang=en">English</a><br />'; 
?>
Còn một phương pháp khác là bạn có thể sử dụng công nhệ ajax. Dùng 1 hàm js (giả sử là setLang(lang)) gọi đến 1 trang php trên server với tham số (giả sử là setlang.php). Trang setlang.php này có 1 nhiệm vụ là thay đổi $_SESSION['lang']=".." tùy vào tham số đã nhận vào. Sau khi sert thành công chỉ cần gọi hàm refresh lại trang là được.
hoichobiet2212 viết 15:40 ngày 10/10/2018
Được gửi bởi thuyduongcd
Dùng hàm này để lấy URL của trang hiện tại.
Code:
<?php
function curPageURL() {
 $pageURL = 'http';
 if ($_SERVER["HTTPS"] == "on") {$pageURL .= "s";}
 $pageURL .= "://";
 if ($_SERVER["SERVER_PORT"] != "80") {
  $pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
 } else {
  $pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
 }
 return $pageURL;
}
?>
Sau đó chèn đoạn code này vào chỗ thay đổi ngôn ngữ:
Code:
<?php 
echo '<a href="'.curPageURL().'&lang=vi">Tiếng Việt</a><br />'; 
echo '<a href="'.curPageURL().'&lang=en">English</a><br />'; 
?>
Làm thế này thì khi mới load trang lên chưa chọn menu nào cả thì URL của ngôn ngữ được chọn sẽ là:

Code:
http://localhost/webphp/&lang=en
Hoặc:
Code:
http://localhost/webphp/&lang=vi
Để khắc phục mình làm onLoad URL là http://localhost/webphp/index.php ở thẻ <body> ko được. Vậy phải làm điều kiện j ở đây thuyduong ơi
thuyduongcd viết 15:45 ngày 10/10/2018
Chỉ cần xử lý cái curPageURL một chút là ổn thôi. Tìm trong chuỗi này ký tự ? nếu tìm thấy thì thêm vào chuỗi &lang=vi còn không thấy (như trường hợp bạn nêu) thì thêm vào chuỗi ?lang=vi
Code:
$curpage=curPageURL();
if (stripos($curpage,"?")===false){  // không tìm thấy
     $link="$curpage?lang=";
}else{
     $link="curpage&lang=";   
}
echo '<a href="'.$link.'vi">Tiếng Việt</a>';
echo '<a href="'.$link.'en">English</a>';
echo '<a href="'.$link.'fr">France</a>';
Bài liên quan

Việt Nam KHÔNG THUA

Không biết có ai xem bóng đá không nhỉ? VIỆT NAM VÔ ĐỊCH

Henry viết 14:13 ngày 01/10/2018

Hỏi về lỗi con trỏ trong C++

Chào mọi người! Em có đoạn code dưới này viết về lớp String nhưng lại bị lỗi bộ nhớ heap! Em đã cố gắng sửa nhiều lần mà không được! Mong mọi người xem qua và chỉ giúp! Em đã gặp khá là nhiều lần lỗi này khi viết code và thấy nó rất khó chịu. Mong mọi người chỉ giúp em cách để xác định lỗi, sữa lỗi ...

Pice Once viết 11:03 ngày 01/10/2018

Deep Learning Course - Andrew Ng

Khóa học Deep Learning trên Coursea, sử dụng Tensorflow, viết bằng Python. Coursera Deep Learning | Coursera Deep Learning from deeplearning.ai. If you want to break into AI, this Specialization will help you do so. Deep Learning is one of the most ...

Hung viết 10:57 ngày 01/10/2018

Xin ý tưởng bài tìm số nguyên chẵn lớn nhất nhưng nhỏ hơi mọi giá trị lẻ

Anh/chi giup đỡ bài tập này em đang làm được một nửa rồi nhưng hết ý tưởng đây là bài tập khó của thầy nguyễn tấn trần minh khang đề cho mảng một chiều các số nguyên hãy viết hàm tìm giá trị chẵn lớn nhất nhỏ hơn mọi giá trị lẻ có trong mảng: #include<iostream> #define max 100 using ...

Duc Nguyen viết 22:29 ngày 30/09/2018

Cách xóa Microsoft Visual Studio 2013 Professional khi đang install giữa chừng?

em dang cai dat visual studio 2013 professional nhung ko may dang cai giua chung xoa con lai 1 dong file.AI pit cach xoa ko chi minh vs.Minh bo tay rui

Tien Tran viết 21:09 ngày 30/09/2018
0