09/10/2018, 23:17

Đa ngôn ngữ trong web PHP&MySQL

Làm sao để làm web có 2 ngôn ngữ Anh-Việt được các bạn? Giao diện thì dễ làm, nhưng nội dung trong db làm cách nào là hay nhất? 2 db hay 2 table trong 1 db ?
mrsinguyenus viết 01:23 ngày 10/10/2018
một số site là môt table 2 ngôn ngữ nhưng tôi là hai table khác nhau ví dụ vn_gì đó, en_gì đó
Và dùng session để change lang
azzu viết 01:18 ngày 10/10/2018
Bạn có thể tham khảo ở www.kymdan.com
Nếu thấy thích thì mình sẽ nói về cách làm..
www.latex-mattress.com
virtualgirl viết 01:20 ngày 10/10/2018
azzu nói luôn đi bạn
TheHeTre viết 01:27 ngày 10/10/2018
Phân tích: 2 hoặc nhiều ngôn ngữ nhưng thành viên chỉ có một thông tin, vì thế bạn nên để thành table với prefix là ký hiệu j đó, và mình switch qua lại dùng bằng cookie hay session.

Những table chung: Có thể là _user; _setting...
Những table riêng: Tùy theo bạn như vn_news, en_news, vn_category, en_category ...

Tạm thế để minh họa
TheHeTre viết 01:23 ngày 10/10/2018
Ngoài ra, cách này tránh trường hợp Host bạn chỉ được 1 database không thể có 2 cái mà dùng : ))
mrsinguyenus viết 01:34 ngày 10/10/2018
đại loại code như thế này:
Code tạo session
PHP Code:
if(session_is_registered("site_lang")){
if (
$_SESSION***91;"site_lang"***93;!=$_GET***91;"lg"***93; && ($_GET***91;"lg"***93;=='en' || $_GET***91;"lg"***93;=='vn')){
        
session_unregister("site_lang");
        
$site_lang $lg;
        
session_register("site_lang");
    }
}else{
    
$site_lang 'en';
    
session_register("site_lang");
}
require(
'lang/'.$_SESSION***91;"site_lang"***93;.'_lang.php'); 
Với file lang có dạng:
vn_lang.php or en_lang.php
Select data: câu truy vấn dạng này
PHP Code:
$sql    "SELECT * FROM ".$_SESSION***91;'site_lang'***93;."_product ORDER BY product_order DESC"
mrsinguyenus viết 01:26 ngày 10/10/2018
Không biết có nên tạo một table chứa thông tin về lang rồi mổi lần là update để thay đổi trong db, cách này có vẽ khắc phục được việc session có vấn đề nhưng làm ứng dụng chậm đi chút xíu...
TheHeTre viết 01:24 ngày 10/10/2018
Quote Được gửi bởi mrsinguyenus View Post
Select data: câu truy vấn dạng này
PHP Code:
$sql    "SELECT * FROM ".$_SESSION***91;'site_lang'***93;."_product ORDER BY product_order DESC"
Theo mình, nếu để nguyên $_SESSION['site_lang']trong mọi đoạn code thì sau này bạn đổi ý hay có sự cố nào đó cần chỉnh thì teo. Nêu tối ưu thế này:

Để hết trong file config:
PHP Code:
<?php

// Code của bạn mrsinguyenus
/* ....... */

//Khai config
$prefix $site_lang;
//Table nào dùng riêng:
define("TBL_NEWS",$prefix_"news");
define("TBL_PRODUCT",$prefix_"product");

//Table nào dùng chung để nguyên

define("TBL_USER","user"); //Không cần prefix

//Lúc truy vấn
$sql    "SELECT * FROM ".TBL_NEWS;

$sql    "SELECT * FROM ".TBL_USER;
mrsinguyenus viết 01:30 ngày 10/10/2018
Okie, cám ơn thế hệ trẻ...Bạn tối ưu lại có vẽ sáng hơn và sữa cũng dể hơn hén,...
Bài liên quan
0